связь форм

tairvik
Дата: 10.03.2008 11:35:54
доброго дня!
есть одна проблемка....помогите!
есть форма Поиск, на ней поля КодАбонента и КодКлиента и кнопка журнал.
по нажатию кнопки журнал мне надо чтобы открылась форма Журнал отфильтрованная по КодАбонента, если это поле не равно Null, иначе по полю КодКлиента.

на событие нажатие кнопки Журнал пишу:

Private Sub Кнопка18_Click()

If Me.КодАбонента <> Null Then
DoCmd.OpenForm "Журнал", acFormDS, , , acFormAdd, , Me.КодАбонента
Else
DoCmd.OpenForm "Журнал", acFormDS, , , acFormAdd, , Me.КодКлиента
End If

End Sub

ПИШЕТ ошибку: введенное выражение для одного из аргументов имеет ошибочный тип данных
и что писать на событие открытие формы Журнал?
Karfaqen
Дата: 10.03.2008 14:39:35
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)
RodionAT
Дата: 10.03.2008 16:21:00
Попробуйте фильтр после второй или третьей запятой. Ну и уж никак не FormAdd!