Ms access 如何在表的所有记录上循环更新查询

Ms access 如何在表的所有记录上循环更新查询,ms-access,vba,ms-access-2007,ms-access-2010,Ms Access,Vba,Ms Access 2007,Ms Access 2010,我已经设置了一个数据库,其中有一个表,其中有两个字段“Account”和“Total Accounts”。我想在每个记录的“合计账户”字段中计算账户的合计金额,这是所有以前记录中的“账户”值合计到当前记录的结果。为了达到这个目的,我首先将每条记录的“金额”字段的值复制到同一条记录的“总账户”字段中。然后,我尝试将每个记录的“总账户”字段与前一个记录的“总账户”金额相加,以获得该记录的实际总金额。我发现我需要一个VBA循环来查询所有记录(第一条记录除外),因此我将其编码如下,但它有“运行时错误'4

我已经设置了一个数据库,其中有一个表,其中有两个字段“Account”和“Total Accounts”。我想在每个记录的“合计账户”字段中计算账户的合计金额,这是所有以前记录中的“账户”值合计到当前记录的结果。为了达到这个目的,我首先将每条记录的“金额”字段的值复制到同一条记录的“总账户”字段中。然后,我尝试将每个记录的“总账户”字段与前一个记录的“总账户”金额相加,以获得该记录的实际总金额。我发现我需要一个VBA循环来查询所有记录(第一条记录除外),因此我将其编码如下,但它有“运行时错误'424':需要对象”,并且似乎我在分配strSQL变量时出错了

Private Sub doDataSegm_Click()


Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String

Set dbs = CurrentDb()
Set rs = dbs.OpenRecordset("Table1", dbOpenTable)

If (rs.RecordCount <= 1) Then Exit Sub

rs.MoveFirst
rs.MoveNext

For i = 2 To rs.RecordCount
   strSQL = "UPDATE Table1, Table1 as copyTable Set Table1.[Total Accounts] = Table1.[Total Accounts] + [copyTable].[Total Accounts] Where Table1.ID = i and copyTable.ID = i-1"

db.Execute strSQL, dbFailOnError
rs.MoveNext
Next i


End Sub
Private Sub-doDataSegm_Click()
Dim数据库作为DAO.Database
Dim rs作为DAO.Recordset
作为字符串的Dim strSQL
设置dbs=CurrentDb()
Set rs=dbs.OpenRecordset(“表1”,dbOpenTable)

如果(rs.RecordCount您已将迭代器
i
包含在SQL的文本字符串中,即

“将表1、表1更新为copyTable Set Table1。[总账户]=Table1。[总账户]+[copyTable].[总账户]其中Table1.ID=i和copyTable.ID=i-1”

而不是

“将表1、表1更新为copyTable Set Table1。[总账户]=Table1。[总账户]+[copyTable].[总账户],其中Table1.ID=2和copyTable.ID=2-1”

您需要构建一个包含
i
变量的字符串,即


“将表1、表1更新为copyTable Set Table1。[总账户]=Table1。[总账户]+[copyTable].[总账户]其中Table1.ID=“&i&”和copyTable.ID=”&i-1

在AWF:citizenkong交叉发布:我在我的代码中替换了你的建议,但我收到了相同的错误…ID字段从2开始是连续的吗?这似乎是一件奇怪的事情,不管有什么错误。所谓“奇怪”,我的意思是在表中存储总计不是一个好主意-在表中存储静态数据,在查询中计算值。是的,你是完全正确的。但是这个想法不是我的,我刚刚被问到这个问题。我坚决建议只在查询中进行计算,正如你所说的。但是这个项目的程序员坚持自己的想法和方法,所以我应该为实现他的想法找到一个解决方案。