Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access ms access vba在表单中显示组合键中的所有字段_Ms Access_Vba_Composite Key - Fatal编程技术网

Ms access ms access vba在表单中显示组合键中的所有字段

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

我正在寻找一种在表单字段中显示复合键中涉及的所有字段的方法。这有助于用户在输入多个记录时跟踪正在处理的记录。当前,Access将仅显示在复合键的字段上

在表单上,我当前有一个查找字段链接到HeaderData表。我希望从中获取值,并在表单字段中查找和显示关联的记录,以便用户知道他们输入了正确的输入,并且在数据输入过程中不会丢失位置

以下是我尝试过的,但没有显示任何结果:

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中的串联运算符是“&”,而不是“+”。