Microsoft Access VBA 错误 461

Microsoft Access VBA Error 461

我不明白为什么我总是收到错误 #461,"Method or data member not found"

Private Sub cmdUpdate_Click()
    CurrentDb.Execute "UPDATE Parts " _
        & "SET [In-Week 1] = " & Me.in1 & ", [In-Week 2] = " & Me.in2 & ", [In-Week 3] = " & Me.in3 _
        & ", [In-Week 4] = " & Me.in4 & ", [In-Week 5] = " & Me.in5 & ", [In-Week 6] = " & Me.in6 & ", [In-Week 7] = " & Me.in7 _
        & ", [In-Week 8] = " & Me.in8 & ", [In-Week 9] = " & Me.in9 & ", [In-Week 10] = " & Me.in10 & ", [In-Week 11] = " & Me.in11 _
        & ", [In-Week 12] = " & Me.in12 & ", [In-Week 13] = " & Me.in13 & ", [In-Week 14] = " & Me.in14 & ", [In-Week 15] = " & Me.in15 _
        & ", [In-Week 16] = " & Me.in16 & ", [In-Week 17] = " & Me.in17 & ", [In-Week 18] = " & Me.in18 & ", [In-Week 19] = " & Me.in19 _
        & ", [In-Week 20] = " & Me.in20 & ", [In-Week 21] = " & Me.in21 & ", [In-Week 22] = " & Me.in22 & ", [In-Week 23] = " & Me.in23 _
        & ", [In-Week 24] = " & Me.in24 & ", [In-Week 25] = " & Me.in25 & ", [In-Week 26] = " & Me.in26 & ", [In-Week 27] = " & Me.in27 _
        & ", [In-Week 28] = " & Me.in28 & ", [In-Week 29] = " & Me.in29 & ", [In-Week 30] = " & Me.in30 & ", [In-Week 31] = " & Me.in31 _
        & ", [In-Week 32] = " & Me.in32 & ", [In-Week 33] = " & Me.in33 & ", [In-Week 34] = " & Me.in34 & ", [In-Week 35] = " & Me.in35 _
        & ", [In-Week 36] = " & Me.in36 & ", [In-Week 37] = " & Me.in37 & ", [In-Week 38] = " & Me.in38 & ", [In-Week 39] = " & Me.in39 _
        & ", [In-Week 40] = " & Me.in40 & ", [In-Week 41] = " & Me.in41 & ", [In-Week 42] = " & Me.in42 & ", [In-Week 43] = " & Me.in43 _
        & ", [In-Week 44] = " & Me.in44 & ", [In-Week 45] = " & Me.in45 & ", [In-Week 46] = " & Me.in46 & ", [In-Week 47] = " & Me.in47 _
        & ", [In-Week 48] = " & Me.in48 & ", [In-Week 49] = " & Me.in49 & ", [In-Week 50] = " & Me.in50 & ", [In-Week 51] = " & Me.in51 & ", [In-Week 52] = " & Me.in52 & "  " _
        & "WHERE [Part #] = '" & txtFindPart & "';"

单击我的按钮后,它运行错误并以黄色突出显示 Private Sub cmdUpdate_Click(),在正常光标突出显示中突出显示 .in4

我已确保所有部分都输入正确,并且它们以链接到 VBA 脚本的形式存在。

Access 似乎与构建可怕的 UPDATE 字符串的代码混淆了。当真正的问题是 Me.in5 不存在时,它会抱怨 Me.in4。当您检查您认为名为 in5 的文本框时,您会发现它的名称实际上是 Text10in5.

我通过将此代码添加到 cmdUpdate_Click() 的开头来追踪问题。第一个版本在 i = 5 时抛出错误,所以我将该值放在 Case 语句中以忽略它并查看是否有任何剩余值抛出类似的错误。 None 个其他值引发错误。

Dim i As Long
For i = 1 To 52
    Select Case i
    Case 5
        ' pass: Text10in5
    Case Else
        Debug.Print Me.Controls("in" & i).Name
    End Select
Next

尽管这是一种有用的调试技术,但我向您展示它的实际原因是因为我认为您应该使用类似的策略来更新 Parts。使用目标 Parts 行打开 DAO.Recordset。然后循环遍历这 52 个文本框并将它们的值存储到相应的 Parts 字段 ...

For i = 1 To 52
    rs.Fields("In-Week " & i).Value = Nz(Me.Controls("in" & i).Value, 0)
Next

假设您将 Text10in5 重命名为 in5.

,这应该可以工作