Hallo,
wahrscheinlich mache ich mal wieder einen blöden Anfänger Fehler, aber ich komme auch nach 2 Stunden Fehlersuche nicht weiter. Folgende Funktion:
Private Function TmpToHierarchy(ByVal HierarchyID As Long)
Dim ComponentCategoryID As Long, ComponentCUser As Long, ComponentCTime As _
String, ComponentMUser As Long, ComponentMTime As String
Dim recElements As New Recordset
Dim ComponentID As Long
Dim LevelID As Long
Dim LevelNr As Long
With clsDB
.A_SetDatabaseConnection DevDB.Connection1
'Erstelle neue Component
ComponentID = clsHierarchy.NewComponent(HierarchyID)
'Get Levels
Set recElements = New Recordset
Set recElements = .Q_GetTmpLevels(HierarchyID)
Do Until recElements.EOF = True
LevelNr = recElements("el_level").Value
If (LevelNr = 0) Then
LevelID = .Q_InsOrUpdate_Level(0, ComponentID, HierarchyID, _
LevelNr, "Level " & LevelNr)
Else
LevelID = .Q_InsOrUpdate_Level(0, 0, HierarchyID, LevelNr, _
"Level " & LevelNr)
End If
recElements.MoveNext
Loop
End With
End Function Ruft folgende Funktion auf:
Public Function Q_InsOrUpdate_Level(ByVal id As Long, ByVal component_id As _
Long, ByVal hierarchy_id As Long, ByVal Level As Long, ByVal name As String) _
As Long
Dim glbSQL As String
Dim qrySQL As String
If id > 0 Then
'Basic SQL
glbSQL = "UPDATE H_LEVEL SET COMPONENT_ID = " & component_id & "," & _
"HIERARCHY_ID = " & hierarchy_id & ", LEVEL = " & Level & "', NAME =" & _
"'" & SQLExpr(name) & "' " & _
" @@1 "
qrySQL = " WHERE ID = " & id
virtRecordSet.Open CreateSQLString(glbSQL, qrySQL), DBCon, _
adOpenForwardOnly, adLockReadOnly
Q_InsOrUpdate_Level = id
Else
'Basic SQL
glbSQL = "INSERT INTO H_LEVEL (COMPONENT_ID, HIERARCHY_ID, LEVEL, NAME)" & _
"VALUES (" & component_id & ", " & hierarchy_id & ", " & Level & "," & _
"'" & SQLExpr(name) & "') " & _
" @@1 "
qrySQL = ""
virtRecordSet.Open CreateSQLString(glbSQL, qrySQL), DBCon, _
adOpenForwardOnly, adLockReadOnly
'ID des Eintrags ermitteln
Q_InsOrUpdate_Level = Q_GetRecMax("H_LEVEL")
End If
End Function Die Funktion Q_GetRecMax("H_LEVEL") können wir ausser Acht lassen.
Mein Problem ist jetzt, das mein Recordset "recElements" aus Funktion 1 nach dem ersten Aufruf von Funktion 2 auf einmal geschloßen ist und ich eine entsprechende Fehlermeldung erhalte. Ich weis einfach nicht warum! Ich sitze da jetzt schon 2 Stunden vor und mir brummt der Schädel. Kann mir jemand helfen?
Roj |