Синтаксис VBA в Access 2010: как открыть форму для конкретной записи с помощью составного первичного ключа
отредактировано после ответа andshrew
Я просто нахожусь в скриптах VBA и немного озадачен этим довольно простым фрагментом кода. Я подозреваю, что это потому, что я неправильно понимаю синтаксис оператора Where. Приведенный ниже код должен открыть форму для одной записи, которая соответствует обоим выражениям фильтра, но вместо этого она открывает пустую запись. Если я использую только одно выражение фильтра, оно работает по желанию и открывает форму для правильного подмножества записей. Из того, что я нашел в другом месте, должно быть возможно объединить несколько критериев фильтра с AND, поэтому я не понимаю, почему это не работает.
Ниже приведен код для более подробного описания того, что я пытаюсь сделать, на случай, если это не простая проблема синтаксиса в конце концов.
Private Sub lsPrevObs_DblClick(Cancel As Integer)
Dim Microchip As String
Dim ObsDate As Date
Microchip = Me.Text24
ObsDate = Me.lsPrevObs
DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' AND TrappingDate = #" & ObsDate & "#", acFormEdit
End Sub
Контекст для этого подпункта:
У меня есть таблица, содержащая основную информацию об отдельных животных с номером их микрочипа (несмотря на название, он содержит буквы и, следовательно, является строкой, а не целым числом) в качестве первичного ключа. Затем у меня есть таблица наблюдений, в которой номер микрочипа и дата наблюдения используются в качестве составного первичного ключа. У меня есть форма, связанная с первой таблицей. В текстовом поле (Text24) отображается номер микрочипа текущей записи, а в списке (lsPrevObs) отображаются даты наблюдений за животным, для которого уже есть записи в таблице наблюдений. Я хочу связать некоторый код VBA с событием двойного щелчка в поле списка, чтобы при двойном щелчке пользователем по дате открывалась новая форма (frmObservationsEdit, DataEntry=No) и позволяла редактировать эту запись наблюдения.
Спасибо за просмотр.
1 ответ
Если код в вашем примере неверен, вы в настоящее время используете команду VBA 'и' вместо того, чтобы отправлять SQL 'и' как часть строки Where.
Просто измените ваш код следующим образом, чтобы убедиться, что и в кавычках должно работать.
DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' and TrappingDate = #" & ObsDate & "#", acFormEdit