dbase-Datei importieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

oliver1804
**
Beiträge: 39
Registriert: Fr, 27.11.2009 15:07

dbase-Datei importieren

Beitrag von oliver1804 »

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
oliver1804
**
Beiträge: 39
Registriert: Fr, 27.11.2009 15:07

Re: dbase-Datei importieren

Beitrag von oliver1804 »

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 :(
Antworten