使用DAO.Recordset编辑,更新记录

时间:2014-04-10 02:58:45

标签: sql ms-access access-vba dao

我有两张表Table1Table2。在Table1中有一个名为FileID的列,Table2有一个名为FileID的列。现在FileID不是唯一的,因此在某些行中FileID在两个表中重复出现。 我在Access中有一个表单,其中有一个名为GetDate的字段来自Table1。 我需要vba中的一些内容,如果您对表单上的GetDate部分(来自Table1表)进行了更改,那么它应该使用当前日期和时间更新列DateTable2

我是按照以下方式做到的。但它仅更新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

感谢您的帮助!

1 个答案:

答案 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