Как открыть ту или иную форму по параметрам? - PullRequest
0 голосов
/ 08 сентября 2011

Может кто-нибудь, пожалуйста, помогите мне. Звучит просто, но я не уверен, что это можно сделать. Идея такова: если существуют параметры, чем открыть эту запись, иначе откройте новую для ввода данных.

Это моя попытка, но я пока не могу ее запустить.

Private Sub Form_Load()
    If (Me.Type = Act _
        and Me.Title <> null _
        and section <> null) _
        or Me.Type in ('Proposed','Final') 
        and Me.Rule <> null
    Then 
        Docmd.OpenForm "F_Eval" (but open that specific f_Eval)

    Else
        Docmd.OpenForm "F_NewEval" (to enter new record)
    End If
End Sub

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Пересмотрите свои нулевые сравнения. В качестве одного примера рассмотрим этот фрагмент из вашего условия If :

Me.Title <> null

Ничто не может быть "не равно" нулю, как ничто не может быть "равно" нулю. Даже другой Null не может быть равен Null (или не равен Null).

Так что, если Me.Title имеет значение Null или содержит ненулевое значение, это выражение вернет значение Null. Вы хотите выражение, которое возвращает либо True, либо False. Используйте функцию IsNull ().

If Not IsNull(Me.Title) Then
   'do what you want for a non-Null Title here '
End If

Для вашего требования «открыть это конкретное f_Eval» используйте аргумент WhereCondition с OpenForm Method . Вот пример, скопированный с этой связанной страницы. Он откроет форму с именем Employees и ограничит источник записи формы теми строками, где LastName имеет значение «King».

DoCmd.OpenForm "Employees", , ,"LastName = 'King'"

Таким образом, OpenForm WhereCondition похож на предложение WHERE в запросе без слова WHERE.

0 голосов
/ 08 сентября 2011

Ваше первое утверждение выглядит неправильно для меня. Я подозреваю, что вы имеете в виду «Закон», с одной стороны. Попробуйте

If (Me.Type = "Act" _
    And Me.Title <> Null _
    And Me.Section <> Null) _
    Or (Instr("Proposed,Final",Me.Type) >0 
    And Me.Rule <> Null )

Я не верю, что вы вырезали и вставили свой пример из своего кода, лучше всего это сделать.

...