Guten Morgen!
Habe ein Problem mit ADO, bei dem ich überhaupt nicht weiterkomme. Wenn ich mehr als einen Datensatz in meine Datenbank per ADO einfügen will (egal ob in einer Schleife oder separat nacheinander ausgeführt) stürzt mein komplettes VB6 ab - ohne Fehlermeldung beendet es sich dann. Woran kann das liegen???
Hier mal die wichtigsten Code-Schnipsel (Kopieren eines Datensatzes):
'Funktion gInput_Infopunkt
Public Function gInput_Infopunkt(ByVal vboolUpdate As Boolean, ByVal vvarIndex _
As Variant, Optional ByVal vvarNAIP As Variant, Optional ByVal vvarName As _
Variant, _
Optional ByVal vvarTAIP As Variant, Optional ByVal vvarWzahl As _
Variant, Optional ByVal vvarWtext As Variant, Optional ByVal vvarWZeit _
As Variant, _
Optional ByVal vvarWList As Variant, Optional ByVal vvarAGP As Variant, _
Optional ByVal vvarAGO As Variant, Optional ByVal vvarWGO As Variant, _
Optional ByVal vvarWGU As Variant, Optional ByVal vvarAGU As Variant, _
Optional ByVal vvarTyp As Variant, Optional ByVal vvarPSTD As Variant, _
Optional ByVal vvarPSTS As Variant, Optional ByVal vvarPSTH As Variant, _
Optional ByVal vvarPSTA As Variant, Optional ByVal vvarMSTA As Variant, _
Optional ByVal vvarPRIO As Variant, Optional ByVal vvarTAKT As Variant, _
Optional ByVal vvarDELTA As Variant, Optional ByVal vvarOSV As Variant, _
Optional ByVal vvarUNT As Variant, Optional ByVal vvarCVP As Variant, _
Optional ByVal vvarUST As Variant, Optional ByVal vvarDigTx As Variant, _
Optional ByVal vvarJEV As Variant, Optional ByVal vvarMARK As Variant, _
Optional ByVal vvarAlarm As Variant, Optional ByVal vvarQuitt As _
Variant, _
Optional ByVal vvarNotiz As Variant, Optional ByVal vvarNTyp As _
Variant, Optional ByVal vvarNDatei As Variant, Optional ByVal vvarCheck _
As Variant, _
Optional ByVal vvarKeepConnectionAlive As Variant = False) As Boolean
'NAIP
If IsMissing(vvarNAIP) Then
vvarNAIP = Null
Else
If LenB(vvarNAIP) = 0 Then
vvarNAIP = Null
End If
End If
'Die obere Schleife mache ich für alle optionalen Variablen
[...]
If vboolUpdate = False Then
DBInsert "Infopunkte", "IP_Index", _
Array("IP_Index", "NAIP", "Name", "TAIP", "WZahl", "WText", _
"WZeit", "WList", "AGP", "AGO", "WGO", "WGU", "AGU", "TYP", _
"PSTD", "PSTS", "PSTH", "PSTA", "MSTA", "PRIO", "TAKT", _
"DELTA", "OSV", "UNT", "CVP", "UST", "DigTx", "JEV", _
"MARK", "Alarm", "QUITT", "Notiz", "NTyp", "NDatei", _
"Check"), _
Array(vvarIndex, vvarNAIP, vvarName, vvarTAIP, vvarWzahl, _
vvarWtext, vvarWZeit, vvarWList, vvarAGP, vvarAGO, _
vvarWGO, vvarWGU, vvarAGU, vvarTyp, vvarPSTD, vvarPSTS, _
vvarPSTH, vvarPSTA, vvarMSTA, vvarPRIO, vvarTAKT, _
vvarDELTA, vvarOSV, vvarUNT, vvarCVP, vvarUST, vvarDigTx, _
vvarJEV, vvarMARK, vvarAlarm, vvarQuitt, _
vvarNotiz, vvarNTyp, vvarNDatei, vvarCheck), _
vvarKeepConnectionAlive
Else
[...]
End If
gInput_Infopunkt = True
End Function 'Funktion DBInsert
Public Function DBInsert(ByVal vstrTable As String, ByVal vstrKey As String, _
ByVal vrefFields As Variant, ByVal vrefValues As Variant, Optional ByVal _
vvarKeepConnectionAlive As Variant = False)
'Datensatz einfügen
Dim strSQL As String
Dim rstData As ADODB.Recordset
Dim intCounter As Integer
Set connData = New ADODB.Connection
connData.Open mstrDBConnect
strSQL = "SELECT * FROM [" & vstrTable & "]"
Set rstData = New ADODB.Recordset
rstData.Open strSQL, connData, adOpenKeyset, adLockOptimistic, adCmdText
'rstData.AddNew vrefFields, vrefValues
rstData.AddNew
For intCounter = 0 To UBound(vrefValues)
If Not IsNull(vrefValues(intCounter)) Then
rstData(vrefFields(intCounter)) = vrefValues(intCounter)
End If
Next intCounter
rstData.Update
DBInsert = rstData(vstrKey)
rstData.Close
connData.Close
Set rstData = Nothing
Set connData = Nothing Viel Code, aber ich hoffe es ist einigermaßen verständlich... Danke! |