Seite 1 von 1

Calc Felder zu Base / Autragsabwicklung

Verfasst: Mi, 06.12.2006 18:09
von cobii
Hallo Ihr OO-Profis,

Ich arbeite im Außendienst in diversen Werkstätten. Ich mache meine Termine selber. Um mir dies in Zukunft zu erleichtern wollte ich mir ein kleine Datenbank zur Terminkoordinierung basteln.

Von meinem Auftraggeber bekomme ich Einen Auftrag (mit Nr =ID) in Form eine eines EXECEL Dokuments mit mindestens 2 Tabellen. Auf diesen beiden Blättern muss ich mir den Kunden (eigene ID), die letzte Werkstatt (noch eine ID), das Kennzeichen seines Fahrzeugs (noch ne ID) und ein paar Zusatz infofs zusammen suchen. Leider sind alle wichtigen Daten kreuz und quer in den Tabellen in immer gleichen Feldern verstreut.

Wie kann ich mittels eines Macros diese Felder auslesen und in meine neue Datenbank einfügen?

Ich weiß, dass dieses Unterfangen nicht in zwei Sätzen zu erklären sein wird. Ich bin jetzt aber schon seit vier Wochen an dem Thema drann und komm einfach nicht vorann. Vieleicht hab ich auch einfach zuwenig Grundwissen. Dann bitte ich noch einmal um gute Literaturempfehlungen rund um OO, Base und BASIC.


Ahoi aus Hamburg
Christian

Ps.: Sollte diese Frage eigentlich an das BASIC Forum gestellt werden?

Verfasst: Mo, 11.12.2006 20:01
von komma4
Hallo Christian,

ich finde die Frage in diesem Forum erstmal richtig plaziert. Du fragst konkret mit einem Anwendungsbeispiel, da können mehr Lösungen kommen, als "nur" im Basic-Forum.

Einfachste Möglichkeit, die ich sehe:

XLS vom Auftraggeber öffnen
F4 Datenbankbrowser, Tabelle anzeigen (wo die Daten hin sollen)
mit Kopieren&Einfügen in die Ziel-Tabellespalte

Das geht bei 3-5 Aufträgen pro Woche.


Allerdings, ....

Du fragst ziemlich konkret nach "auslesen von Feldern" [Zellen] und einfügen....

...und, wenn
die wichtigen Daten kreuz und quer in den Tabellen in immer gleichen Feldern verstreut
sind, dann suche Dir hier Code-Beispiele zusammen.

Beispiel Calc-Zell-Zugriff

Code: Alles auswählen

oSheet=ThisComponent.Sheets.getByName("Tabelle1")
msgbox oSheet.getCellByposition(0,0).String
Beispiel Zugriff interne HSQLDB

Code: Alles auswählen

' Kontext holen
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )

' Datenquelle auswählen
oDatenquelle = oDatenbankKontext.getByName( "OpenOffice" )

 ' Verbindung zur DB herstellen
 oVerbindung = oDatenquelle.getConnection( "" , "")

 ' Statement erzeugen
 oStatement = oVerbindung.createStatement

sSQL = "SELECT * From ""t_bereich"" ;"

' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )

while oResultSet.next()
' Spalte ausgeben
emplName = oResultSet.getString( 2 )
msgbox emplName
 Wend
 
oVerbindung.close()
Ähnlich sollten auch INSERTs gehen. Ist -natürlich- vom Aufbau Deiner Datenbank abhängig.


Programmier-Tipps?
Auch schon oft behandelt (->"Suchen"-Funktion)

Beispiele von http://www.ooomacros.org (dort auf jeden Fall XRay besorgen) und http://www.pitonyak.org

Viel Erfolg