有些人可以为我看下面的内容,并告诉我我做错了什么。我试图根据从表单上的组合框中选择的数据运行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个控件更新时,附加的子表单中没有任何操作,它告诉我我可能在错误的事件中输入了此代码。 你能帮忙解决这个问题吗?
答案 0 :(得分:0)
如果我核心地知道表单是否未绑定,即表单Record Source属性中没有表或查询,则表单的AfterUpdate事件不会被触发。因此,您应该从三个组合框AfterUpdate事件中调用相同的代码。
如果更改控制记录源,则可能不需要重新查询。我无法回想起手边所以在没有重新查询的情况下尝试它。
如果您将sub创建为Function,您只需选择要运行它的控件并将= MyFunction()粘贴到事件文本框中,而不必在VBA中对其进行编码。
OnwDay当添加上面的段落时。我永远不会这样做,因为这不是经常做的,而且当你看VBA时,一切都不明显。
答案 1 :(得分:0)
我的代码有点不清楚,但我会使用类似
的语法Form_ReportSubForm.form.RecordSource = "datamanager"
如果Form_ReportSubForm是主窗体中的子窗体对象。