2011-12-06 49 views
1

我正在寻找一种方法来显示表单字段中的组合键所涉及的所有字段。这是为了帮助用户在输入多个记录时跟踪他们正在处理的内容。目前,Access只会显示在复合键的字段中。ms access vba以表格的形式显示组合键中的所有字段

在窗体上,我目前有一个查找字段链接到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 

我看遍了也找不到有关显示所有字段什么。任何帮助将不胜感激。

回答

0

您需要删除的第一个参数报价到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 
+0

非常感谢您的答复。 IT似乎在捕捉正确的信息,但它给了我错误:运行时错误13:在“vcatch = ...”行输入不匹配。不知道为什么会出现这个问题。任何建议,将不胜感激。 – user1084089

+1

请忽略最后一条评论。我所要做的只是将“+”号改为“&”号。这消除了不匹配错误。 – user1084089

+0

VBA中的连接运算符是“&”,而不是“+”,正如您发现的那样。 – JimmyPena

相关问题