2011-12-06 50 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

相關問題