RsetToRset




Option Explicit
Private Sub Command1_Click()
Dim cn As ADODB.Connection, rsSource As ADODB.Recordset, rsDest As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nwind.mdb"
Set rsSource = cn.Execute("SELECT * FROM Customers")
Set rsDest = MakeRS(rsSource)
OpenAndFillRS rsSource, rsDest
rsSource.Close
cn.Close
Set DataGrid1.DataSource = rsDest
End Sub
'________________________________________________________


Function MakeRS(ByVal rsSource As ADODB.Recordset) As ADODB.Recordset
Dim rsTemp As ADODB.Recordset, F As ADODB.Field
Set rsTemp = New ADODB.Recordset
For Each F In rsSource.Fields
If F.Type <> adChapter Then
rsTemp.Fields.Append F.Name, F.Type, _
F.DefinedSize, F.Attributes And adFldIsNullable
With rsTemp(F.Name)
.Precision = F.Precision
.NumericScale = F.NumericScale
End With
End If
Next F
Set MakeRS = rsTemp
End Function
'________________________________________________________


Sub OpenAndFillRS(ByVal rsSource As ADODB.Recordset, ByVal rsDest As ADODB.Recordset)
Dim F As ADODB.Field
If rsSource.State = adStateClosed Then Exit Sub<BR/>
If rsSource.EOF And rsSource.BOF Then Exit Sub
If rsSource.CursorType <> adOpenForwardOnly Then
If Not rsSource.EOF And Not rsSource.BOF Then
rsSource.MoveFirst
End If
End If
rsDest.CursorLocation = adUseClient
rsDest.Open

Do While Not rsSource.EOF
rsDest.AddNew
For Each F In rsSource.Fields
If F.Type <> adChapter Then rsDest(F.Name).Value = F.Value
Next F
rsDest.Update
rsSource.MoveNext
Loop
End Sub
Open a new project in Microsoft Visual Basic 6.0.
Form1 is created by default.
From the Projects menu, choose Components, select the
"Microsoft DataGrid Control 6.0 (OLEDB)" control, and place
it on the form. Make it fairly large.
From the Projects menu, choose References, select
"Microsoft ActiveX Data Objects 2.1 Library."
Add the following code to the form module:











( rsettorset.html )- by Paolo Puglisi - Modifica del 17/12/2023