Avatar billede cwhopperboy Nybegynder
23. juli 2003 - 16:53 Der er 3 kommentarer

Recordset returneret fra Connection.Execute

Hej

Jeg vil gerne kunne opdatere et lokalt (disconnected) recordset returneret fra et kald til en stored procedure i SQL server 2000. Jeg kan kun få et recordset med CursorType=adOpenStatic tilbage, hvilket jeg ikke kan bruge fordi jeg vil rette i recordsettet bagefter - uden at skrive tilbage til SQL serveren. Data i recordsettet skal sendes videre igennem en 3.parts dll senere i programmet. Jeg har prøvet en masse, men er desværre kun kommet frem til følgende som heller ikke virker. Jeg skal bruge en ClientSide cursor. Løsningen opretter et recordset af den type jeg gerne vil have og kopierer indhold fra det returnerede recordset over. Har prøvet recordset.clone men den løsning giver mig også et adOpenStatic recordset.



-Kode start-

  adoDBCon.BeginTrans
  adoDBCon.Errors.Clear
  Set rsTemp = New ADODB.Recordset
  Set rsTemp = adoDBCon.Execute(strCommand, rlngOptions)
  If rsTemp.State = adStateOpen Then
    Set DBExecute = New ADODB.Recordset
    Set DBExecute.ActiveConnection = Nothing
    DBExecute.CursorLocation = adUseClient
    DBExecute.LockType = adLockBatchOptimistic
    DBExecute.CursorType = adOpenDynamic
    If Not (rsTemp Is Nothing) Then
      For Each fldSource In rsTemp.Fields
        DBExecute.Fields.Append fldSource.Name, fldSource.Type, fldSource.DefinedSize, fldSource.Attributes
      Next
      DBExecute.Open , , adOpenDynamic, adLockBatchOptimistic
      Do While Not rsTemp.EOF
        DBExecute.AddNew
        For Each fldSource In rsTemp.Fields
          DBExecute.Fields(fldSource.Name) = rsTemp.Fields(fldSource.Name)
        Next
        rsTemp.MoveNext
      Loop
      DBExecute.MoveFirst
    Else
      Set DBExecute = Nothing
    End If
  End If
  adoDBCon.CommitTrans

-Kode slut-

Mvh.
En snart meget desperat...
Avatar billede nmh Nybegynder
30. juli 2003 - 15:08 #1
Måske kunne dette bruges?
Hvis record-sættet ikke er meget stort vil ADO-metoden getrows kunne bruges til at flytte hele sættet ind i et array. Det letter ofte håndteringen af data.
Se f.eks. her:
http://www.4guysfromrolla.com/webtech/tips/t053100-1.shtml
Avatar billede nanosoft00 Nybegynder
31. juli 2003 - 19:41 #2
har du defineret dine variabler ?
sådan at "adOpenDynamic" faktisk indenholder noget og ikke bare er en null værdi
Avatar billede nanosoft00 Nybegynder
31. juli 2003 - 19:46 #3
prøv evt. at erstatte
DBExecute.CursorType = adOpenDynamic
med
DBExecute.CursorType = 2
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging