Передача значений при работе с формами
Существует много способов передачи параметров в открываемую форму или отчет и возврата значений из вызываемой формы в основную, в частности: Первые два метода достаточно очевидны, а вот последний требует немного более подробного описания. DoCmd.OpenForm "Example", , , , , acDialog, "ABCD" Теперь строку OpenArgs можно использовать, например, в процедуре обработки события Load открываемой формы для установки текущей записи (предполагается, что поле ID - числовое). Private Sub Form_Load() On Error Resume Next If OpenArgs <> "" Then Me.RecordsetClone.FindFirst "ID = " & OpenArgs Me.Bookmark = RecordsetClone.Bookmark End If End Sub Возвращаемое из формы значение можно присвоить свойству формы Tag (строка до 2000 символов): Tag = StringToReturn Сделать это надо в процедуре обработки события нажатия кнопки, закрывающей форму. Если использовать событие закрытия формы, то данный способ не сработает. В итоге, фрагмент вызывающей программы может выглядеть так: DoCmd.OpenForm "Example", , , , , acDialog, "ABCD" ResultString = Form_Example.Tag Далее, значение ResultString можно использовать, например, для присвоения значения какому либо полю главной формы. Если нужно указать, что пользователь отказался от изменений, нажав кнопку "Отмена" или просто закрыв форму, то можно присвоить свойству Tag пустую строку или исходное значение OpenArgs. Если необходимо передавать не строковое значение, а число или дату, то придётся выполнить соответствующие преобразования. Для передачи нескольких значений потребуется сформировать из них строку со специальными разделителями, а затем выбирать значения с помощью специальной функции, например, такой: Const ArgsSeparator = "//" Этот способ передачи параметров хорош тем, что не требует никаких дополнительных переменных и объектов, что особенно удобно в относительно простых ситуациях, например в календаре.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6434 |