|
6 Кб. |
|
| Прошу помочь?!
Существует таблица с полем Дата (для меня не критично ключевое оно или нет). На основе таблицы и данного поля создана простая форма, открывающаяся на первой из существующих записей. В форме разместил стандартный календарь (ActiveX). Пытаюсь заставить форму: 1) Открываться для всех записей, но на записи соответствующей текущей системной дате; 2) При выборе любой иной даты в календаре, чтоб форма "перелисталась" на запись с соответствующей датой.
И еще, возможно ли - таблицу предварительно можно наполнить датами на несколько лет вперед, но считаю это плохим решением, но... если таблица пустая, то как форма откроется на запись = текущей системной дате, если такой записи еще нет?!
Помогите пожайлуста!!! | |
|
| |
|
|
|
| 1. да поможет вам bookmark
2. а что вам мешает преварительно заполнить таблицу на несколько лет вперед? | |
|
| |
|
|
|
| с первым пунктом щас буду знакомиться, а вот по второму считаю это очень простым "детским" решением, при котором теряется универсальность. Один из вариантов это открытие формы на новой записи, а значение по умолчанию = текущей дате?! | |
|
| |
|
|
|
| >>простым "детским" решением, при котором теряется универсальность
порой простое детское решение и есть самым универсальным.
>>а значение по умолчанию = текущей дате?!
ну, если вам так нужно, то да | |
|
| |
|
|
|
| сейчас буквально попробовал и получилось, на событие Загрузка поставил DoCmd.GoToRecord , , acNewRec, а значение по умолчанию =Date() - просто когда в таблица начата пару лет назад и форма открывается на первой записи, то приходится вручную листать в конец, много лишних движений. Но здесь ладно еще, а вот главное никак не получается - это задействовать календарь, чтоб нажав в нем на любую дату форма тут же переходила на соответствующую запись??? | |
|
| |
|
|
|
|
Private Sub Calendar_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[DateItem] = " & Format$(Me![Calendar], "\#mm\/dd\/yyyy\#")
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
|
Слегка измененный вариант поиска записи на ленточной форме, предлагаемый мастером добавления ComboBox.
Только штатный календарь у меня не отрабатывает событие Calendar8_Updated. | |
|
| |
|
|
|
| >>
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
| чёто я... забыл.... а не
If Not rs.nomatch Then Me.Bookmark = rs.Bookmark
|
?
или нема такого? | |
|
| |
|
|
|
| Спасибо за содействие!
Попробую реализовать, надеюсь все получится! очитаюсь! | |
|
| |
|
|
|
| Пробовал пробовал, но толку мало.
Мозги кипят - результата нет.
По вашему варианту не получается, что то не то и не так наверное делаю!
Визуально добился поиска записи в форме по выбранной в календаре дате, но только так работает:
Private Sub data_GotFocus()
DoCmd.FindRecord [ЭлементActiveX1], , True, , True
End Sub
Приходится тыкать в календарь, потом еще в поле чтоб поиск сработал! Может подскажете более изящное решение? плиз! | |
|
| |
|
|
|
| Calendar_AfterUpdate()
а не Got_focus | |
|
| |
|
|
|
| Если бы!
у него даже нет акого события, есть только При обновлении "_Updated", но на нем не работает | |
|
| |
|
|
|
| странно... а точку останова если там поставить? когда срабатывает?
может всетаки есть? или куда он дату вписывает? может вотдельный текстбокс? тогда там проверять.... както-так | |
|
| |
|
59 Кб. |
|
| Ложь и клевета.
Мой код 100% рабочий.
Подтверждение:
Событие AfterUpdate нужно выбрать в редакторе кода.
А может в 97 действительно нет? | |
|
| |
|
|
|
| Спасибо за настойчивость!
но... 97 действительно отличается
Дорабатывая свою идею получилось все что хотел, а именно:
Private Sub ЭлементActiveX1_Click() 'обявляем название события для календаря "клик мышкой"
formdata.SetFocus ' переводим фокус с календаря в нужное поле формы
DoCmd.FindRecord [ЭлементActiveX1], , True, , True ' ищем в поле значение, равное значению календаря, соотвественно "перелистывая" форму на нужное значение
End Sub
' как это работает, я так и непонял, т.к. не программист, но работает правильно!
Всем спасибо! надеюсь и сам кому нибудь помог! | |
|
| |