2014-09-02 2 views
0

Я установил базу данных, в которой есть таблица, в которой есть 2 поля «Учетная запись» и «Всего учетных записей». Я хочу получить сумму суммарного суммирования счетов в поле «Всего учетных записей» каждой записи, что является результатом суммирования значений «Учетная запись» во всех предыдущих отчетах до текущего. Для этой цели я скопировал значение поля «Сумма» каждой записи в поле «Всего учетных записей» одной и той же записи. Затем я попытался добавить количество полей «Всего учетных записей» каждой записи только с суммой «Всего счетов» предыдущего, чтобы получить фактическую общую сумму этой записи. Я обнаружил, что мне нужен цикл 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 
+0

Крест отправил на ФАЖ: http://www.access-programmers.co.uk/forums/showthread.php?t=268668 – PaulFrancis

ответ

0

Вы включили свой итератор 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

+0

Является ли поле идентификатора последовательным от 2? Кажется странным, что делать независимо от ошибок. – citizenkong

+0

Нечетным я имею в виду, что сохранение общего количества в таблице - отличная идея - хранить статические данные в таблицах и вычислять значения в запросах. – citizenkong

Смежные вопросы