Ich möchte die Daten einer MSSQL-Datenbank in eine MySQL DB im Internet schreiben. Dazu habe ich folgendes Script geschrieben. Es kommt jedoch immer „Der Vorgang ist für ein geschlossenes Objekt nicht zugelassen“.
Bin für jede Hilfe dankbar!
Private Sub Form_Load()
'Connection MSSQL Datenbank
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open „Provider=SQLOLEDB.1:stuck_out_tongue_winking_eye:ersist Security Info=False;User ID=sa;Initial Catalog=kam;Data Source=BWEICHEL“
'Connection MySQL Datenbank
Dim conn2 As ADODB.Connection
Set conn2 = New ADODB.Connection
conn2.CursorLocation = adUseClient
conn2.Open „Provider=MSDASQL.1;DSN=kps-mysql“
'Connection MSSQL Datenbank
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Source = „SELECT * FROM artstat“
rst.ActiveConnection = conn
rst.Open
'Connection MySQL Datenbank
Dim rst2 As ADODB.Recordset
Set rst2 = New ADODB.Recordset
'rst2.Source = „SELECT * FROM artikel“
'rst2.ActiveConnection = conn2
'rst2.Open
'Schleife MSSQL Datenbank
'If rst.Supports(adUpdateBatch) Then
While Not rst.EOF
If IsNull(rst.Fields(„Bestand“)) Then
bestand = rst.Fields(„Bestand“).Value = 0
artnum = rst.Fields(„Artikelnum“)
rst2.Open „UPDATE artikel SET bestand = ‚bestand‘ WHERE artnr = ‚artnum‘“, conn2, adOpenStatic, adLockOptimistic
'rst2.Fields(„bestand“).Value = 0
'rst2.Update
Else
List1.AddItem rst.Fields(„Artikelnum“)
bestand = rst.Fields(„Bestand“)
artnum = rst.Fields(„Artikelnum“)
rst2.Open „UPDATE artikel SET bestand = ‚bestand‘ WHERE artnr = ‚artnum‘“, conn2, adOpenStatic, adLockOptimistic
List1.AddItem ("UPDATE artikel SET bestand = " & bestand & " WHERE artnr = " & artnum)
'rst2.Fields(„bestand“).Value = rst.Fields(„Bestand“)
'rst2.Update
End If
rst.MoveNext
Wend
If MsgBox("Sie haben " & lngCount & " Artikel aktualisiert. Wollen Sie " & _
„die Änderungen übernehmen?“, vbYesNo Or vbQuestion) = vbYes Then
rst2.UpdateBatch
Else
rst2.CancelBatch
End If
'Else
'MsgBox „Der verwendete Provider unterstützt keine Stapelaktualisierungen“
'End If
rst.Close
'rst2.Close
End Sub