我有一个表单,允许用户查看 LinkRef 字段等于指定值的所有记录,以及 Clearance Applying For 或 Clearance Level 某个值。
LinkRef 是使用 OpenArgs 从之前的表单中提取的用户 ID。我目前拥有的 form_load 的代码是:
Private Sub Form_Load()
'MsgBox Me.OpenArgs
Me.C_LinKRef = Me.OpenArgs
Me.chbToggleEdit.Value = False
'MsgBox Me.C_LinKRef
Dim mySQL As String
mySQL = _
"Select * " & _
"From TabClearDetail " & _
"Where (C_LinKRef = " & Me.C_LinKRef & ") " & _
"And ([Clearance Applying For] = 'BPSS' " & _
"Or [Clearance Applying For] = 'BPSS (EDF)' " & _
"Or [Clearance Applying For] = 'BPSS (Magn)' " & _
"Or [Clearance Applying For] = 'BPSS (Sella)' " & _
"Or [Clearance Applying For] = 'BPSS Equiv' " & _
"Or C_ClearanceLevel = 'BPSS' " & _
"Or C_ClearanceLevel = 'BPSS (EDF)' " & _
"Or C_ClearanceLevel = 'BPSS (Magn)' " & _
"Or C_ClearanceLevel = 'BPSS (Sella)' " & _
"Or C_ClearanceLevel = 'BPSS Equiv' " & _
"Or C_ClearanceLevel = 'DESTROYED' " & _
"Or C_ClearanceLevel = 'Lapsed' " & _
"Or C_ClearanceLevel = 'NOT_FLWDUP' " & _
"Or C_ClearanceLevel = 'NOT_SPECIFIED' " & _
"Or C_ClearanceLevel = 'Refused' " & _
"Or C_ClearanceLevel = 'Withdrawn');"
Me.RecordSource = mySQL
'MsgBox Me.RecordsetClone.RecordCount
End Sub
当有匹配的记录时,mySQL 似乎表现得应该如此。但有时不会有任何记录,因为指定的人没有任何这些许可级别并且没有申请,然后我希望表格出现空白或出现一条消息说没有匹配记录。
目前,如果没有匹配的记录,表单将拉入 LinkRef,但使用来自完全不同记录的值填充所有其他文本框(它似乎是我查看的最后一条记录)。不确定如何解决这个问题,我尝试使用 RecordsetClone.RecordCount 来判断它是否等于 0 然后是 msgbox,但这样做似乎为时已晚,因为它似乎总是找到至少 1 个条目,即使有应该是 0 它已经用来自另一个字段的数据填充了文本框,所以找到了 1。
LinkRef 文本框由 OpenArgs 填充。所有其他文本框都是使用查询来填充的,该查询在 TabClearDetail 表中查找并将值拉入。我开始认为我最好只使用查询或只使用代码,但我不确定如何使用 OpenArgs在查询中,对于某些事情,查询比代码要快得多。
这是我在回复@Roland 帖子时提到的保存对话框的代码。此代码在 Form_Close() 子程序中调用。
Private Sub SaveDialog()
Dim Msg, Style, Title As String
Dim Response As Integer
Msg = "Would you like to save your changes?"
Style = vbYesNoCancel
Title = "Save Changes"
On Error GoTo Err_BackFromAddBPSSButton_Click
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
'DoCmd.Close
DoCmd.OpenForm ("Basic Personal Information")
Else
If Response = vbNo Then
Me.Undo
'DoCmd.Close
DoCmd.OpenForm ("Basic Personal Information")
End If
End If
Exit_BackFromAddBPSSButton_Click:
Exit Sub
Err_BackFromAddBPSSButton_Click:
MsgBox Err.Description
Resume Exit_BackFromAddBPSSButton_Click
End Sub
为这个冗长的问题道歉,希望所有的细节都是必要的,而且是有道理的,任何建议都非常感谢!