Hallo,
ich möchte bestimmte Spalten einer .dbf in eine Datenbanktabelle importieren ohne den Zwischenschritt über das Öffnen in Calc und anschließender Handarbeit. Alles soll automatisch per Knopfdruck passieren.
Kann mir da jemand einen Schubs in die richtige Richtung geben?
Gruß
Oliver
dbase-Datei importieren
Moderator: Moderatoren
-
- **
- Beiträge: 39
- Registriert: Fr, 27.11.2009 15:07
Re: dbase-Datei importieren
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:
hat jemand noch 'nen Tipp wie man's etwas gescheiter machen kann?
EDIT: das Ganze ist nicht wirklich schnell
- 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
EDIT: das Ganze ist nicht wirklich schnell
