2017-01-23 86 views
2

我試過並試圖找到這個問題的答案,但無濟於事。試圖根據輔助表選擇一條記錄

我想做一個基於處理器表的更新循環,它工作得很好。我需要做的是根據腳本上一次運行的最後使用者選擇新的「第一個」記錄。

這裏是我卡上: (DIM,並設置不包括對空間的原因)

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

您沒有使用正確FindFirst(criteria)擺脫掉單引號。 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

這是完美的!非常感謝。如果沒有必要讓它正常工作。 – ClarissaHD

0

FindFirst()方法將字符串參數。字符串參數必須格式化爲WHERE表達式,像這樣:

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

注:我已經使用了REPLACE函數來獲取