2017-01-23 80 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函数来获取