我对我为访问而写的一段VBA有一个问题。我有一个表,它有一个级联字段'Concat‘(字符串字段)和一个名为'Age’的字段(带有数值的整数字段)。
还有另外61个字段(分别命名为'0‘、'1’、‘2’……‘60’),但是代码需要工作:我希望代码循环通过,并在每个记录条目中使用Concat + age字段查找另一个表(称为: tbl_Final_Probabilities),并提取一个概率并用正确的概率填充这61个字段。这些字段设置在一个数值字段中,数据类型为单个。
代码提取正确的概率,但是当我试图在代码行更新该字段的记录时:"rs.Fields(a) = b“(在代码中也突出显示),我得到错误消息:”运行时错误'3164':‘字段不能更新’“。
所有的帮助欢迎我需要如何纠正这一点请,使用的代码如下。
潘趣酒和派。
代码:
Dim rs As DAO.Recordset
Dim a As Integer
Dim b As Single
Dim lookup As String
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Circuit_plus_prob")
For a = 0 To 60
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
Do Until rs.EOF = True
rs.Edit
lookup = rs!Concat & (rs!age + a)
b = DLookup("Prob_Date", "tbl_Final_Probabilities", "Concat2 = '" & lookup & "'")
rs.Fields(a) = b '- CODE BREAKS DOWN HERE
rs.Update
rs.MoveNext
Loop
End If
Next a
rs.Close
Set rs = Nothing提前感谢您的帮助。
发布于 2016-10-28 14:41:10
你的回路翻了个底朝外:
Dim rs As DAO.Recordset
Dim a As Integer
Dim b As Single
Dim lookup As String
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Circuit_plus_prob")
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
Do Until rs.EOF = True
rs.Edit
For a = 0 To 60
lookup = rs!Concat & (rs!age + a)
b = DLookup("Prob_Date", "tbl_Final_Probabilities", "Concat2 = '" & lookup & "'")
rs.Fields(a).Value = b
Next
rs.Update
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing发布于 2016-10-28 14:05:13
您的代码: rs.Fields(a) =b使用索引'a‘(在第一个循环中为0)寻址该字段,在您的表中,这可能是一个自动增量字段,因此不能更新。如果要在字段中使用“0”、“1”、.使用以下语法: rs.Fields(x + a) = b,其中x是字段'0‘之前存在的表中fields+1的数量(因为循环以0开头)。
https://stackoverflow.com/questions/40305919
复制相似问题