2017-01-23 2 views
2

私はこの質問に対する回答を見つけようとしましたが、役に立たなかった。セカンダリテーブルに基づいて1つのレコードを選択しようとしています

プロセッサのテーブルに基づいて更新ループを実行しようとしていますが、うまく動作します。私が必要とするのは、スクリプトの前回の実行で最後に誰が使用されたかに基づいて、新しい「最初の」レコードを選択することです。ここで

は、私が上でこだわっているものです:(薄暗いとスペース上の理由から含まれていない設定)

With Rst 
    Rst.MoveFirst 

    ' this is the problem code 
    RsA.FindFirst (RsA.Fields("Processor") = RsL.Fields("LastPortfolio")) 

    Do While Not Rst.EOF 
     If Rst.Fields("Product Type") <> "Acquisition" Then 
      Rst.Edit 
      Rst.Fields("Allocated Processor").Value = RsA.Fields("Processor") 
      Rst.Update 
      RsA.MoveNext 
      If RsA.EOF Then 
       RsA.MoveFirst 
      End If 
      If RsL.Fields("LastPortfolio").Value <> Rst.Fields("Allocated Processor") Then 
       RsL.Edit 
       RsL.Fields("LastPortfolio").Value = RsA.Fields("Processor") 
       RsL.Update 
      End If 
     End If 
     Rst.MoveNext 
    Loop 
End With 
DoCmd.Requery 
+1

これは完璧で、あなたのコード – 0m3r

答えて

0

をオフに取り除くためにREPLACE関数を使用している文字列パラメータは次のように、WHERE表現としてフォーマットする必要があります。 criteriaパラメータは、SQLのWhere句に似た文字列です。

は、私はあなたがこれを行うにしようとしていると思います:

RsA.FindFirst("[Processor] = '" & RsL.Fields("LastPortfolio").Value & "'") 
If Rsa.NoMatch Then 

    ' action if not found 

Else 

    ' action if found 

End If 
+1

をフォーマットしてください!どうもありがとうございます。 ifは正しく動作するために必要ではありませんでした。 – ClarissaHD

0

FindFirst()方法は、文字列パラメータを取ります。

RsA.FindFirst "Processor = ' & "REPLACE(RsL.Fields("LastPortfolio"), "'", "''") & "'" 

NB:私はあなたが正しくFindFirst(criteria)を使用していないアポストロフィ

関連する問題