在Access里复制记录要用到recordset.getrows方法。
关于getrows,Access帮助文件里的解释太过繁锁。当你的数据库并不是太复杂,而且你打算一次只复制一条记录的时候,帮助文件中的许多代码其实是多余的,可以根据实际情况进行简化。
ID
|
人员
|
出差地点
|
时间
|
天数
|
D1
|
张三
|
广州
|
2007-12-1
|
5
|
D2
|
李四
|
广州
|
2007-12-1
|
5
|
上表中,张三和李四有一个相同的任务,出差到广州。除ID、姓名不同外,其他的信息完全相同。这种情况下,可以使用getrows来简化输入人员的工作。
代码如下:
Private Sub add_Click()
Set rst = CurrentDb.OpenRecordset("tbl_出差安排")
'introw计算记录条数,此时introw=2。
introw = DCount("*", "tbl_出差安排")
'getrows方法会返回一个二维数组(avarRecord),具体含义参见Access帮助文件。
avarRecords = rst.GetRows(introw)
With rst
'添加一条新记录
.AddNew
'将avarRecord复制的记录添加进新记录
'因为新记录的ID和人员是不同于上一条的,所以要另外输入或从窗体获得。
!ID = acchelp_autoid("D", 1, "tbl_出差安排", "ID")
!人员=me.人员
'其余的记录复制自上一条记录,行数为introw-1。
!出差地点 = avarRecords(2, (introw - 1))
!时间 = avarRecords(3, (introw - 1))
!天数 = avarRecords(4, (introw - 1))
.Update
.Close
end with