Entwickler-Ecke
Datenbanken - Open Office Base und Delphi
klabri - So 28.03.10 17:55
Titel: Open Office Base und Delphi
Hallo,
ich habe eine Datenbank mit Open Office Base erstellt, wie kann mit Delphi auf sie zugreifen ?
Sybok Factor - Mo 29.03.10 13:40
Meines Wissens gibt es da keinen Weg BASE Daten über Komponenten anzusprechen. Prinzipiell ist Base als Container gedacht, um auf Daten aus anderen Datenquellen (MySQL, SQLServer...) Zugriff zu bekommen. In dem Fall werden die Zugriffsinformationen gespeichert und du bekommst die Datenquellen in anderen OO-Dokumenten vorgeschlagen.
Die Base Datenbank ist glaube ich "nur" ein XML Dokument, meines Wissens ist ein Mehrbenutzerzugriff nicht vorgesehen. Eventuell kannst du über JDBC einen Zugriff aus Delphi heraus bekommmen...
Ansonsten wäre mir nur ein manueller Zugriff bekannt, dazu müsstest du dir Kenntnisse in der OOo Makro Programmierung aneignen. Ich muss gestehen, dass ich diesen Zugriff auf Base noch nicht ausprobiert habe. Bislang konnte ich aber die meisten Makro Befehle in Delphi nutzen.
Viele Grüße
Sybok
JDF - Mo 29.03.10 14:22
Die Datenbank nennt sich 'HyperSQL'.
Schau mal auf die Homepage:
http://hsqldb.org/
Jürgen
JoelH - Mo 29.03.10 16:06
einfaches auslesen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TOLE_OpenOffice.do_db(db:String); var Context,DataBase,Conn,Stmt,Res : Variant; strSQL, s : String; begin Context := Service.createInstance('com.sun.star.sdb.DatabaseContext');
DataBase :=Context.getByName(ToOOPfad(db));
Conn := DataBase.getConnection('','');
Stmt := Conn.createStatement;
strSQL := 'SELECT * FROM TESTTABELLE';
Res := Stmt.executeQuery(strSQL); While Res.next do begin s := Res.getString(1); end; Conn.close; End; |
Service ist ebenfalls vom Typ Variant
Delphi-Quelltext
1:
| Service := CreateOleObject('com.sun.star.ServiceManager'); |
und das ToOOPfad wandelt einfach nur den Pfadnamen in einen OO-kompatiblen Pfadstring um
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function TOLE_OpenOffice.ToOOPfad(Pfad:String):String; var rueckgabe : string; i : integer; begin rueckgabe := 'file:///'; while (POS('\',pfad)>0) do begin i := POS('\',pfad); delete(pfad,i,1); Insert('/',pfad,i); end; rueckgabe := rueckgabe + pfad; result := rueckgabe; end; |
klabri - Di 30.03.10 13:37
Hallo JoelH,
danke für deine Beiträge,leider hab ich das mit dem "auslesen" nicht verstanden,
bin Delphi-Anfänger....
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!