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
  // create database context
  Context := Service.createInstance('com.sun.star.sdb.DatabaseContext');

  // get the database
  DataBase :=Context.getByName(ToOOPfad(db));

  //establish connection to database
  Conn := DataBase.getConnection('','');

  //1create a statement service object
  Stmt := Conn.createStatement;

  //create an SQL command
  strSQL := 'SELECT * FROM TESTTABELLE';

  //1execute and store results in ResultSet Object
  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)>0do
  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....


JoelH - Mi 31.03.10 12:50

schau mal da rein, das sollte dir weiterhelfen

http://docs.sun.com/app/docs/doc/819-1326/faajr?a=view