08. marts 2004 - 15:27Der er
4 kommentarer og 1 løsning
Kopiere recordset over i et andet recordset - possible ?
Hej
Jeg har lavet en applikation i VB 6.0 som er koblet op via dataenvironment til MS SQL-server 2000. Jeg har behov for at kunne sætte et tomt recordset lig et recordset som indeholder data. Det jeg ønsker kan eks. skrives:
set de.rs1 = de.rs2
rs1 kan i forvejen indeholde andre data, men disse skal i så fald bare overskrives med de data, som findes i rs2.
Er det muligt at lave dette lille trick uden for meget kode ?
Function KopierRecordsetStruktur(rsInd As Recordset) As Recordset Dim rsUd As Recordset Dim fld As Field
Set rsUd = New Recordset For Each fld In rsInd.Fields rsUd.Fields.Append fld.Name, fld.Type, fld.DefinedSize, fld.Attributes Next rsUd.Open
Set KopierRecordsetStruktur = rsUd End Function
Sub KopierRecordsetData(rsInd As Recordset, rsUd As Recordset) Dim fld As Field
If rsInd.RecordCount <> 0 Then rsInd.MoveFirst Do Until rsInd.EOF rsUd.AddNew For Each fld In rsInd.Fields rsUd.Fields(fld.Name).Value = fld.Value Next rsUd.Update rsInd.MoveNext Loop End If End Sub
Den første funktion laver et nyt recordset med de samme felter som et eksisterende. Den anden funktion kopierer alle data fra et recordset til et andet med samme struktur.
Nej de to recordset er ikke nødvendigvis altid lige store (afhænger dog af hvad du mener) Forespørgslen foretages på nøjagtigt samme tabeldata (samme parametre selectes), men da rs2's indhold af records styres af en søgeparameter, så er antallet af hits variabel.
Som svar til Venne:
Jeg har set flere eksempler på den kode, om du har valgt at vise, men vil gerne have afklaret om det kan klares på en mere impel måde, ved at sætte et (fyldt) recordset lig et andet (fyldt) recordset direkte. Men tak for kodestumpen ;-)
Jeg kender ikke nogen simplere måde, men hvis man dykker ned i de underliggende interfaces i OLEDB kan det være man kan finde noget... Der er nok stor risiko for at det så skal foregå i C++...
Jeg finder en anden løsning som er mere hensigtsmæssig for hele koden. Jeg har ikke lyst til at rode med C++ desværre ;-)
Tak
VH
Ing
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.