我有两张表Table1
和Table2
。在Table1
中有一个名为FileID
的列,Table2
有一个名为FileID
的列。现在FileID
不是唯一的,因此在某些行中FileID
在两个表中重复出现。
我在Access中有一个表单,其中有一个名为GetDate
的字段来自Table1
。
我需要vba中的一些内容,如果您对表单上的GetDate
部分(来自Table1
表)进行了更改,那么它应该使用当前日期和时间更新列Date
在Table2
我是按照以下方式做到的。但它仅更新Date
来自Table2
的当前时间的第一条记录,而不是第二条记录FileID = 1
。
在FileID = 1
中有table2
的两条记录,因此它应该使用当前日期更新2条记录,而不是一条。
这是我的代码。
Option Compare Database
Private Sub GetDate_AfterUpdate()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
' Dim rst2 As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT [GetDate], [DATE] FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID2 where Table1.FileID = Table1.FileID", dbOpenDynaset)
'Begin row processing
Do While Not rst.EOF
rst.Edit
rst![Date] = Now
rst.Update
rst.MoveNext
Exit Do
Loop
rst.Close
Set rst = Nothing
End Sub
感谢您的帮助!
答案 0 :(得分:2)
为什么在你的movenext后有一个退出,如果你想循环遍历所有记录,那就不应该在那里。
当rst.eof到达文件末尾时,它将退出循环。
你写它的方式将在第一条记录后退出。
Do While Not rst.EOF
rst.Edit
rst![Date] = Now
rst.Update
rst.MoveNext
Exit Do 'This will exit loop after first record
Loop
改为
Do
rst.Edit
rst![Date] = Now
rst.Update
rst.MoveNext
Loop Until rst.EOF