какое событие обрабатывает все элементы управления в форме в Microsoft Access 2003? - PullRequest
0 голосов
/ 16 июля 2009

Может, кто-нибудь посмотрит на меня ниже и посоветует, что я делаю не так. Я пытаюсь запустить SQL-запрос на основе данных, выбранных в выпадающих списках в форме, результаты которых создаются в подчиненной форме, прикрепленной к основной форме

Private Sub Form_AfterUpdate()
Dim LSQL As String
Dim cmb As ComboBox
Dim txt As TextBox
Dim chk As CheckBox

For Each Control In Me.Controls
If IsNull(cmb.Value) Then
Form_ReportSubForm.RecordSource = "datamanager"
requerysubform

Else
If IsNull(txt.Value) Then
Form_ReportSubForm.RecordSource = "datamanager"
requerysubform

Else
If chk.Value = False Then
Form_ReportSubForm.RecordSource = "datamanager"
requerysubform

Else
LSQL = "SELECT * from datamanager"
LSQL = LSQL & " WHERE engineerid = cmbengid AND membername = cmbtm AND department = cmbdept"
Form_ReportSubForm.RecordSource = LSQL
    requerysubform

    End If
    End If
    End If
    Next

End Sub

Когда 3 элемента управления в форме обновляются, в присоединенной подчиненной форме ничего не происходит, что говорит мне о том, что я, вероятно, ввел этот код в неправильном событии. Не могли бы вы помочь с этим?

Ответы [ 2 ]

0 голосов
/ 19 августа 2009

Ваш код немного неясен для меня, но я бы использовал синтаксис вроде

Form_ReportSubForm.form.RecordSource = "datamanager"

, если Form_ReportSubForm является вашим объектом подчиненной формы в главной форме.

0 голосов
/ 18 июля 2009

Если я точно вспомню, что форма не связана, то есть нет таблицы или запроса в свойстве Record Source форм, то событие AfterUpdate формы не запускается. Поэтому вы должны вызывать один и тот же код из каждого из трех полей со списком события AfterUpdate.

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

И если вы создаете свою подпрограмму как функцию, вы можете просто выбрать элементы управления, на которых она будет работать, и вставить = MyFunction () в текстовое поле события, вместо того, чтобы кодировать ее в VBA.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...