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

问题描述:

我已经设置了一个数据库,其中有一个表中有两个“Account”和“Total Accounts”字段。我想要在每个记录的“总帐户”字段中拥有帐户总额的总和,这是以前所有记录中的“帐户”值总和到当前记录的总和的结果。为了达到这个目的,我首先将每条记录的“金额”字段的值复制到同一记录的“总帐户”字段中。然后,我尝试在每个记录的“总帐户”字段中添加前一个记录的“总帐户”金额,以获得该记录的实际总金额。我发现我需要一个VBA循环来做所有记录的查询(除了第一条记录),所以我把它编码为如下,但它有“运行时错误'424':Object required”,似乎我我在分配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 
+0

跨张贴在AWF:http://www.access-programmers.co.uk/forums/showthread.php?t=268668 – PaulFrancis 2014-09-02 11:55:53

你已经包括你的迭代i在SQL的文本字符串,即

"UPDATE Table1, Table1 as copyTable Set Table1.[Total Accounts] = Table1.[Total Accounts] + [copyTable].[Total Accounts] Where Table1.ID = i and copyTable.ID = i-1"

而不是

"UPDATE Table1, Table1 as copyTable Set Table1.[Total Accounts] = Table1.[Total Accounts] + [copyTable].[Total Accounts] Where Table1.ID = 2 and copyTable.ID = 2-1"

你需要建立包含字符串你i变量,即

"UPDATE Table1, Table1 as copyTable Set Table1.[Total Accounts] = Table1.[Total Accounts] + [copyTable].[Total Accounts] Where Table1.ID = " & i & " and copyTable.ID = " & i-1

+0

citizenkong:我代替你的建议我的代码,但尚未我接收相同的错误... – Masoud 2014-09-02 15:23:24

+0

ID字段是从2开始连续的吗?无论有什么错误,这似乎都是一件奇怪的事情。 – citizenkong 2014-09-02 15:33:45

+0

奇怪的是,我的意思是将一个表存储在一个表中并不是一个好主意 - 将静态数据存储在表中并在查询中计算值。 – citizenkong 2014-09-02 15:38:32