2011-12-06 6 views
1

複合キーに関連するすべてのフィールドをフォームフィールドに表示する方法を探しています。これは、ユーザーが複数のレコードを入力しているときに、作業中のレコードを追跡するのに役立ちます。現在、複合キーのフィールドにのみアクセスが表示されます。ms 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の状態は変更されません。あなたはそれが開いたままであることを発見しました。 ビットをこのクリーンアップ、そう


を(最後の行に2番目除く):

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

関連する問題