Avatar billede ing Nybegynder
08. marts 2004 - 15:27 Der 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 ?

VH

ing
Avatar billede martin_moth Mester
08. marts 2004 - 15:41 #1
Er rs1 og rs2 altid lige store?
Avatar billede venne Nybegynder
08. marts 2004 - 15:43 #2
Jeg har selv brugt følgende 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.
Avatar billede ing Nybegynder
08. marts 2004 - 15:58 #3
Som svar til martin_moth:

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 ;-)

VH

Ing
Avatar billede venne Nybegynder
08. marts 2004 - 16:01 #4
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++...
Avatar billede ing Nybegynder
08. marts 2004 - 16:27 #5
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester