tairvik |
мне надо чтобы открылась форма Журнал отфильтрованная по КодАбонента, если это поле не равно Null, иначе по полю КодКлиента. на событие нажатие кнопки Журнал пишу If Me.КодАбонента <> Null Then DoCmd.OpenForm "Журнал", acFormDS, , , acFormAdd, , Me.КодАбонента Else DoCmd.OpenForm "Журнал", acFormDS, , , acFormAdd, , Me.КодКлиента End If |
Во-первых, для программной проверки на Null есть специальная функция IsNull.
Во-вторых, если вам надо показать отфильтрованные записи, зачем вы открываете форму с параметром acFormAdd - это откроет вам форму в режиме ввода новых записей и при этом вы НЕ увидете записи которые так УЖЕ есть.
В-третьих, почему код Клиента/Абонента для фильтрации вы передаете в качестве параметра OpenArgs? Вы собираетесь в открываемой форме взять и сделать из него фильтр (интересно по какому полю)? Зачем такой наворот, если этот фильтр можно задать ПРЯМО при открытии формы - в параметре WhereCondition, а при открытии форму уже ничего не делать.
Так попробуйте:
Dim fld$: fld = IIf(IsNull(Me.КодАбонента), "КодКлиента", "КодАбонента")
DoCmd.OpenForm "Журнал", acFormDS, , fld & "=" & Me(fld)