Синтаксическая ошибка в моем утверждении If Else в моем коде доступа VBA - PullRequest
0 голосов
/ 16 января 2020

Я работал над этой проблемой некоторое время, и я близок к ответу благодаря помощи переполнения стека и Google. Позвольте мне дать вам некоторое представление. У меня есть таблица и 2 формы и ключ с именем CalibrationKey, который автоматически увеличивается как Autonumber для отслеживания записи, а также сколько и что нет. На 1 форме находятся все поля моей таблицы. На моей 2-й форме есть подполя к первой форме, которые подаются в таблицу. Первая форма - это калибровка, а вторая форма - это деталь калибровки. В моей первой форме он у меня есть, так что вы можете редактировать ИЛИ добавлять новую запись (там, где началась моя проблема). Моя 2-я форма у меня есть, так что вы можете только добавить новую запись и добавить запись данных на листе свойств в YES, поскольку я хочу, чтобы вы только могли добавить новую запись из этой формы. Поэтому я сделал заявление If Else в качестве события щелчка в моей первой форме, что если мое текстовое поле пусто, вы добавляете новую запись. Если он НЕ пуст, тогда вы редактируете форму. Но я получаю синтаксическую ошибку каждый раз, когда пытаюсь это сделать. Я не уверен, в чем проблема.

Private Sub Make_Click()
If Not IsNull(Make.Value) Then
DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormAdd, acDialog
Else: DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormEdit, acDialog
End If
End Sub

Then I found that a IsEmpty might be easier, but it gives the same Syntax error in the ELSE line of code as the Not IsNull line did. 

Private Sub Make_Click()
If IsEmpty(Make.Value) Then
DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormAdd, acDialog
Else: DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormEdit, acDialog
End If
End Sub 

Попытка диагностировать проблему неправильного синтаксиса, поскольку либо IsEmpty, либо Not IsNull, похоже, выдает ту же синтаксическую ошибку в той же строке. Нужно исправить синтаксическую ошибку и какую функцию лучше использовать, скорее это IsEmpty или Not IsNull

1 Ответ

1 голос
/ 16 января 2020

Попробуйте использовать обычный If-Then-Else синтаксис:

Private Sub Make_Click()

    Dim DataMode As acFormOpenDataMode

    If Me.Dirty = True Then
        'Save record.
        Me.Dirty = False
    End If

    If Not IsNull(Make.Value) Then
        DataMode = acFormOpenDataMode.acFormAdd
    Else
        DataMode = acFormOpenDataMode.acFormEdit
    End If
    DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], DataMode, acDialog

End Sub
...