Ms access ms access vba在表单中显示组合键中的所有字段
我正在寻找一种在表单字段中显示复合键中涉及的所有字段的方法。这有助于用户在输入多个记录时跟踪正在处理的记录。当前,Access将仅显示在复合键的字段上 在表单上,我当前有一个查找字段链接到HeaderData表。我希望从中获取值,并在表单字段中查找和显示关联的记录,以便用户知道他们输入了正确的输入,并且在数据输入过程中不会丢失位置 以下是我尝试过的,但没有显示任何结果:Ms access ms access vba在表单中显示组合键中的所有字段,ms-access,vba,composite-key,Ms Access,Vba,Composite Key,我正在寻找一种在表单字段中显示复合键中涉及的所有字段的方法。这有助于用户在输入多个记录时跟踪正在处理的记录。当前,Access将仅显示在复合键的字段上 在表单上,我当前有一个查找字段链接到HeaderData表。我希望从中获取值,并在表单字段中查找和显示关联的记录,以便用户知道他们输入了正确的输入,并且在数据输入过程中不会丢失位置 以下是我尝试过的,但没有显示任何结果: Private Sub ProviderName_LostFocus() Dim db As DAO.Database
Private Sub ProviderName_LostFocus()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim vcatch As String
strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
Set db = CurrentDb
Set rs = db.OpenRecordset("strSQL", dbOpenDynaset)
If Not (rs.BOF And rs.EOF) Then
rs.MoveFirst
Do While Not rs.EOF
If Me.ProviderName.Value = rs.Fields(ProviderName) Then
vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
Me.Text22 = vcatch
rs.MoveLast
Else
rs.MoveNext
End If
Loop
Me.Tally1.SetFocus
End If
rs.Close
db.Close
End Sub
我到处找了找,找不到任何关于显示所有字段的信息。非常感谢您的帮助。您需要删除OpenRecordset第一个参数中的引号:
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
此外,还需要将rs.fields()参数括在引号中:
If Me.ProviderName.Value = rs.Fields("ProviderName") Then
最后,我不会更改CurrentDb的状态。你发现它开着,就让它开着。
(删除第二行到最后一行)
所以,稍微整理一下:
Private Sub ProviderName_LostFocus()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim vcatch As String
strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
If Not (rs.BOF And rs.EOF) Then
rs.MoveFirst
Do While Not rs.EOF
If Me.ProviderName.Value = rs.Fields("ProviderName") Then
vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
Me.Text22 = vcatch
Exit Do
Else
rs.MoveNext
End If
Loop
rs.close
Me.Tally1.SetFocus
End If
End Sub
非常感谢您的回复。它似乎捕捉到了正确的信息,但它在“vcatch=…”行中给出了错误:运行时错误13:类型不匹配。不知道为什么会出现这个问题。任何建议都将不胜感激。请忽略最后的评论。我所要做的就是把“+”符号改成“&”符号。这清除了不匹配错误。正如您所发现的,VBA中的串联运算符是“&”,而不是“+”。