У меня довольно маленькая таблица tblFunding
с 20 записями. Я хочу обновить его поле Payment
, используя результаты необновляемого запроса ie:
"SELECT UserName, Sum([Payment]) As Payment FROM tblFundingMain WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date()),1,1))) Between -7 And 4)) GROUP BY UserName")
Я знаю, что хранить этот тип данных - плохая практика, но пользователь хочет взглянуть в данных время от времени, так как таблица привязана к форме для его удобства. Мы разработали метод, который использует DAO
, который работает, но оставляет пустые значения для записей, которые не существуют для поля UserName
в обновленной таблице, т.е. tblFunding
. Мы бы предпочли, чтобы значение было 0
в случае, если поля не совпадают. Код запускается до открытия формы, что означает, что таблица обновляется перед запуском формы. Есть ли способ вежливо выполнить sh эту задачу? Пожалуйста, просмотрите код ниже и посоветуйте, где сможете. Спасибо!
Private Sub btnGlance_Click()
Dim rs1 As DAO.Recordset
Dim rs 2 As DAO.Recordset
Set rs1 = CurrentDb.OpenRecordset("SELECT UserName, Sum([Payment]) As Payment FROM tblFundingMain WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date()),1,1))) Between -7 And 4)) GROUP BY UserName")
Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM tblFunding")
rs1.MoveFirst
Do Until rs1.EOF
rs2.MoveFirst
Do Until rs2.EOF
If rs1.Fields("UserName") = rs2.Fields("UserName") Then
rs2.Edit
rs2.Fields("Payment").Value = rs1.Fields("Payment").Value
rs2.Update
End If
rs2.MoveNext
Loop
rs1.MoveNext
Loop
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
Docmd.OpenForm "frmUserGlance"
End Sub