von oliver1804 » Do, 03.06.2010 22:52
o.k., selbst gelöst:
- 2 Verbindungsobjekte erzeugen (1 odb mit Verbindung zum Verzeichnis mit der .dbf, 1 odb mit der Datenbank, da das Makro aus calc gestartet werden soll)
- SQL -String zur Abfrage der .dbf erzeugen
- dann Resultset erzeugen:
oStatement = oCon.createStatement()
oResultSet = oStatement.executeQuery(sSQL)
- und dann noch so'n Bischen anners Zeugs:
Code: Alles auswählen
if not isNull(oResultSet) then
Do while oResultSet.Next()
iKDNR = oResultSet.getString(1)
sNAME = """" & oResultSet.getString(2) & """"
sSTRASSE = """" & oResultSet.getString(3) & """"
iPLZ = oResultSet.getInt(4)
sORT = """" & oResultSet.getString(5) & """"
iNR_VKB = oResultSet.getInt(6)
' Prüfabfrage, ob ein Kunde bereits in der Tabelle customer vorhanden ist
sSQL = "SELECT 1 FROM customer WHERE id_customerorigin = 2 AND kdnr = " & iKDNR
oAnzRecordsResult = oStatement.executeQuery(sSQL)
Do while oAnzRecordsResult.next()
iRecordCount = oAnzRecordsResult.getInt(1)
Loop
If iRecordCount = 1 then
sSQL = "UPDATE customer SET " & _
"id_staff_editor = 1, " & _
"name = " & sNAME & ", " & _
"street = " & sSTRASSE & ", " & _
"plz = " & iPLZ & ", " & _
"city = " & sORT & ", " & _
"nr_vkb = " & iNR_VKB & " " & _
"WHERE id_customerorigin = 2 AND kdnr = " & iKDNR & ";"
else
sSQL = "INSERT INTO customer(id_staff_editor, id_customerorigin, kdnr, name, street, plz, city, nr_vkb) " & _
"VALUES(1,2," & iKDNR & "," & sNAME & "," & sSTRASSE & "," & iPLZ & "," & sORT & "," & iNR_VKB & ");"
End if
'MsgBox sSQL
oStatement.executeUpdate(sSQL)
loop
End if
hat jemand noch 'nen Tipp wie man's etwas gescheiter machen kann?
EDIT: das Ganze ist nicht wirklich schnell

o.k., selbst gelöst:
- 2 Verbindungsobjekte erzeugen (1 odb mit Verbindung zum Verzeichnis mit der .dbf, 1 odb mit der Datenbank, da das Makro aus calc gestartet werden soll)
- SQL -String zur Abfrage der .dbf erzeugen
- dann Resultset erzeugen:
oStatement = oCon.createStatement()
oResultSet = oStatement.executeQuery(sSQL)
- und dann noch so'n Bischen anners Zeugs:
[code] if not isNull(oResultSet) then
Do while oResultSet.Next()
iKDNR = oResultSet.getString(1)
sNAME = """" & oResultSet.getString(2) & """"
sSTRASSE = """" & oResultSet.getString(3) & """"
iPLZ = oResultSet.getInt(4)
sORT = """" & oResultSet.getString(5) & """"
iNR_VKB = oResultSet.getInt(6)
' Prüfabfrage, ob ein Kunde bereits in der Tabelle customer vorhanden ist
sSQL = "SELECT 1 FROM customer WHERE id_customerorigin = 2 AND kdnr = " & iKDNR
oAnzRecordsResult = oStatement.executeQuery(sSQL)
Do while oAnzRecordsResult.next()
iRecordCount = oAnzRecordsResult.getInt(1)
Loop
If iRecordCount = 1 then
sSQL = "UPDATE customer SET " & _
"id_staff_editor = 1, " & _
"name = " & sNAME & ", " & _
"street = " & sSTRASSE & ", " & _
"plz = " & iPLZ & ", " & _
"city = " & sORT & ", " & _
"nr_vkb = " & iNR_VKB & " " & _
"WHERE id_customerorigin = 2 AND kdnr = " & iKDNR & ";"
else
sSQL = "INSERT INTO customer(id_staff_editor, id_customerorigin, kdnr, name, street, plz, city, nr_vkb) " & _
"VALUES(1,2," & iKDNR & "," & sNAME & "," & sSTRASSE & "," & iPLZ & "," & sORT & "," & iNR_VKB & ");"
End if
'MsgBox sSQL
oStatement.executeUpdate(sSQL)
loop
End if[/code]
hat jemand noch 'nen Tipp wie man's etwas gescheiter machen kann?
EDIT: das Ganze ist nicht wirklich schnell :(