user1838163
user1838163

Reputation: 63

Copy one Recordset to another

Since I received so nice and fast solution to my problem, I will try again to get some help from you:

I opened two Recordsets.

 Set cmd1.ActiveConnection = cn1
 cmd1.CommandText = "SELECT * FROM mov Where [Date] >= #" & DateA & "#;"
 Set RSold = cmd1.Execute

 Set cmd2.ActiveConnection = cn2
 cmd2.CommandText = "SELECT * FROM mov"
 Set RSnew = cmd2.Execute

(I want to save only selected records of a file.)

I know how to copy record by record, but is there a 'Short Cut' to do it faster ?

Thanks

Upvotes: 5

Views: 26393

Answers (4)

John Rasor
John Rasor

Reputation: 1

I don't think CLONE is going to do what you want. It just gives you another view of the same recordset you already have. This allows you to use multiple bookmarks and so forth, but the recordset is still attached to the same database the original was. I also need a way to copy the recordset and save it to a new database in a new format.

Upvotes: 0

Preeti
Preeti

Reputation: 1386

You Can use code :

Set RSNew = RSOld.Clone

@user1838163 :Saving the second Recordset as a file

Dim RFileNm  As String 
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")

RFileNm  = "c:\temp\" & Trim(RFileNm) & ".adt"
fs.DeleteFile (RFileNm)
RSNew .Save RFileNm, adPersistADTG
RSNew .Close
RSNew .Open RFileNm, , , , adCmdFile

Upvotes: 2

Joe M
Joe M

Reputation: 3440

I think this will do what you want by doing it all at once.

Dim objPB As New PropertyBag

objPB.WriteProperty "rs", RSOld
Set RSNew = objPB.ReadProperty("rs")

Set objPB = Nothing

Upvotes: 0

hassan
hassan

Reputation: 84

try this:

Dim i As Long
Do While Not RSold.EOF
    ' You can place if condition here
    RSNew.AddNew
    For i = 0 To RSold.Fields.Count - 1
        RSNew.Fields(RSold.Fields(i).Name) = RSold.Fields(i).Value
    Next i
    RSNew.Update
    RSold.MoveNext
Loop

This will copy records from RSold to RSnew recordset

Upvotes: 2

Related Questions