如何使用更新查询进行循环 - 访问

时间:2012-04-04 19:21:40

标签: ms-access vba

如果条件与DataSelect表匹配,我正在尝试使用表DataSelect中的源代码更新表Cleaned。标准的示例就像年份是在2012年到2011年之间,而频道就像 TM ,MRC在5到10之间。我创建DataSelect以保存我想要程序的所有不同类型的标准循环遍历每一个已分配的清除源代码。到目前为止,我总是得到“参数太少。期望1.运行时错误3061”。任何帮助将不胜感激。

谢谢, 尼基

Private Sub doDataSegm_Click()


Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL, strSearch, strReplace As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("dataselect", dbOpenTable)

If rs.RecordCount = 0 Then Exit Sub
rs.MoveFirst

    For i = 1 To rs.RecordCount
    strChan = rs("Chan")
    strDataCode = rs("code")
    strMrcYrLow = rs("mrcyr_low")
    strMrcYrhigh = rs("mrcyr_high")
    strMrcLow = rs("mrc_low")
    strMrchigh = rs("mrc_high")
    strSQL = "UPDATE Cleaned SET [cleaned].[datacode]= " & _
              strDataCode & " where [CLEANED].[CHANNEL] Like '" & strChan & _
             "' AND [CLEANED].[MRC_YEAR] Between '" & strMrcYrLow & _
             "' And '" & strMrcYrhigh & "' AND CLEANED.MRC Between " & _
              strMrcLow & " And " & strMrchigh & ";"

    db.Execute strSQL, dbFailOnError
    rs.MoveNext
    Next i


End Sub

1 个答案:

答案 0 :(得分:0)

消息如“参数太少。期望1.运行时错误3061”。通常表示您的查询包含一个不带引号的数据值,Access正在将其解释为字段名称。由于您的查询中唯一不带引号的标识符为datacodeMRC,因此您需要引用其中一个标识符:

UPDATE Cleaned SET [Cleaned].[datacode] = '" & strDataCode & "' ...
                                          ^ ...add quotes...  ^