Access Vba-如何将一个记录集的当前记录设置为另一个记录集

时间:2018-11-16 23:08:40

标签: access-vba recordset

我获取一个记录集

Do while not recset.eof 
Recset.movenext
Loop

,并希望使用vba将记录集的当前记录设置为另一个记录集

Set rec2 = rec1.????

我尝试过

Set.Rec2 = recset.bookmark

但是没有成功! 我希望有一种方法可以轻松地将当前记录设置为其他记录集

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

有很多选择,但是如果不知道自己的确切目标,很难知道哪一个最适合您。

一种选择是打开recordsetclone:

Set rec2 = rec1.RecordsetClone 'Open a clone
rec2.Bookmark = rec1.Bookmark 'Move the clone to the same record

在这种情况下,rec2包含rec1拥有的所有所有数据,但设置为同一记录。

另一个选择是使用过滤器:

rec1.Filter = "ID = " & rec1!ID 'Set a filter to the current record, assumes ID = primary key
Set rec2 = rec1.OpenRecordset 'Set rec2 to the filtered result, rec1 is still unfiltered

答案 1 :(得分:0)

我的目标是将记录集的当前记录导出到Excel文件。正如Eric所写,不可能将当前记录设置为另一个记录集。

但是copyFromRecordset具有非常有趣的属性,可以解决我的问题,如下所示 CopyFromRecordset RecordSet,MaxRows,MaxColumns Full description here

所以我测试了这段代码,效果很好

    Dim oRecSet As Recordset, oRecSetClone As Recordset
    Dim varBookmark As Variant

    Set objExcelApp = New Excel.Application
    objExcelApp.Visible = True
    Set wb = objExcelApp.Workbooks.Open("G:\Access\test.xlsx")
    Set ws = wb.Sheets(1)


    sSQL = "SELECT * FROM tbl"
    Set oRecSet = CurrentDb.OpenRecordset(sSQL)
    Set oRecSetClone = oRecSet.Clone

    Do While Not oRecSet.EOF
        Debug.Print i
        oRecSetClone.Bookmark = oRecSet.Bookmark
        ws.Range("A" & i).CopyFromRecordset oRecSetClone, 1
        oRecSet.MoveNext
    Loop

End Sub

只有一条评论

我使用书签是因为我在应用copyFromRecordSet rec,1时发现了一个奇怪的行为。 执行此命令后,rec.movenext会生成错误消息:Nbr 3021-无当前记录