Guten Tag zusammen,
ich habe schon etwas geforscht:
1.) Wenn ich eine Base-Datei "entzippe" sehe ich den Inhalt der Datenbankdatei(1)
Im Ordner "forms" liegen die Formulare(2)
öffne ich "Obj11" sehe ich diese Struktur(3)
die wiederum bis auf die fehlenden "META-INF" und mimetype (4) den Daten entsprechen, die ich erhalte wenn ich das Formulardokument aus der Datenbankdatei heraus separat speichere.
Kopiere ich den Ordner "Obj11" auf die Platte, füge die "META-INF" der separat gespeicherten Datei hinzu und "zippe" sie wieder, kann ich mein ehemals eingebettetes Formular als Writer-Datei direkt öffnen.
D.h. nach meinem Verständnis, in der .odb liegen im Ordner "forms" schlicht abgespeckte "Writer-Dokumente".
2.) Wenn ich in der "entzippten" Base-Datei einen zusätzlichen Ordner anlege, z.B. "templates", sieht das so aus:
Hier kann ich nun selbst einen Ordner "Obj11" mit den Daten z.B. einer "Calc-Datei" einfügen.
Jetzt wird die Base Datei wieder "gezippt" und in .odb umbenannt, dann kann ich sie fehlerfrei öffnen und benutzen.
Mit diesem Befehl:
xray thisdatabasedocument.documentstorage.templates.Obj11.elementnames
kann ich jetzt sogar meine selbst angelegten Daten, die sich innerhalb der .odb Datei befinden, sehen: Nun kommt endlich die Frage:
Wie kann ich die eingebettete Calc-Datei jetzt öffnen?
Ich habe überall gesucht, nix gefunden.
beste Grüße von Rik
[gelöst]Calc Datei z.B als Vorlage in Base-Datei einbetten
Moderator: Moderatoren
[gelöst]Calc Datei z.B als Vorlage in Base-Datei einbetten
Zuletzt geändert von F3K Total am Mo, 26.09.2011 18:51, insgesamt 1-mal geändert.
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Aloha
Mit dem genauen Aufbau der Dateien selber kenne ich mich leider zu wenig aus, als dass ich Dir sagen könnte, wie Du Stream-Zugriff auf derart gespeicherte Dateien im Package bekommst.
Aber in meinen Augen wäre es sowieso sinnvoller, die Vorlagen in in einer eigenen "Templates"-Tabelle der Datenbank als BLOB zu hinterlegen und von dort zu laden.
Das macht das Ganze deutlich übersichtlicher und vor allem viel leichter zu organisieren.
Mit dem genauen Aufbau der Dateien selber kenne ich mich leider zu wenig aus, als dass ich Dir sagen könnte, wie Du Stream-Zugriff auf derart gespeicherte Dateien im Package bekommst.
Aber in meinen Augen wäre es sowieso sinnvoller, die Vorlagen in in einer eigenen "Templates"-Tabelle der Datenbank als BLOB zu hinterlegen und von dort zu laden.
Das macht das Ganze deutlich übersichtlicher und vor allem viel leichter zu organisieren.
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Hallo DPunch,
Dein Vorschlag hört sich sehr gut an.
Kannst Du mir ein Beispiel geben? Eine Base-Datei, die eine Calc-Datei enthält?
Wie öffne ich die Calc-Datei dann per Makro? Die Sache mit dem "streamelement" usw. habe ich bisher nicht verstanden.
Es fängt leider schon damit an, dass ich nicht weiß, welcher Dateityp in der embeddet HSQL-DB dem BLOB entspricht.
Beste Grüße von Rik
Dein Vorschlag hört sich sehr gut an.
Kannst Du mir ein Beispiel geben? Eine Base-Datei, die eine Calc-Datei enthält?
Wie öffne ich die Calc-Datei dann per Makro? Die Sache mit dem "streamelement" usw. habe ich bisher nicht verstanden.
Es fängt leider schon damit an, dass ich nicht weiß, welcher Dateityp in der embeddet HSQL-DB dem BLOB entspricht.
Beste Grüße von Rik
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Aloha
Siehe Anhang.
Ist nur auf die Schnelle zusammengeschustert, möglicherweise hab ich den einen oder anderen potenziellen Fehler nicht bedacht, aber es funktioniert und das Grundprinzip sollte klar werden.
Siehe Anhang.
Ist nur auf die Schnelle zusammengeschustert, möglicherweise hab ich den einen oder anderen potenziellen Fehler nicht bedacht, aber es funktioniert und das Grundprinzip sollte klar werden.
BLOB steht für "Binary Large Object", das entsprechende Feld muss also ein Binärfeld sein (VARBINARY).F3K Total hat geschrieben:Es fängt leider schon damit an, dass ich nicht weiß, welcher Dateityp in der embeddet HSQL-DB dem BLOB entspricht.
- Dateianhänge
-
- BLOB_Stream.odb
- (52.15 KiB) 87-mal heruntergeladen
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Hallo DPunch,
Hammer, vielen Dank, klappt hervorragend.
Da wäre ich nicht so schnell, wenn überhaupt, drauf gekommen!
Ich werde meine DB so umbauen.
Habe nämlich inzwischen 18 Templates und eine Doku, die ich parallel zur DB immer mitschleppen muß. Auf diese Weise werde ich also aufräumen.
Den Code kann ich bis auf einen Parameter nachvollziehen.
oStream = oStorage.openStreamElement("ms777", com.sun.star.embed.ElementModes.READWRITE)
Kannst Du mir sagen was "ms777" bedeutet?
Beste Grüße von Rik
Hammer, vielen Dank, klappt hervorragend.
Da wäre ich nicht so schnell, wenn überhaupt, drauf gekommen!
Ich werde meine DB so umbauen.
Habe nämlich inzwischen 18 Templates und eine Doku, die ich parallel zur DB immer mitschleppen muß. Auf diese Weise werde ich also aufräumen.
Den Code kann ich bis auf einen Parameter nachvollziehen.
oStream = oStorage.openStreamElement("ms777", com.sun.star.embed.ElementModes.READWRITE)
Kannst Du mir sagen was "ms777" bedeutet?
Beste Grüße von Rik
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Aloha
Das "ms777" hatte ich so stehen gelassen, weil die Zeile nicht original von mir ist, sondern vom user ms777 im englischen Forum.
Das hat keine bestimmte Bedeutung, es ist ein normaler NameAccess - Du kannst auch "bla" dahinschreiben. Was genau Du da für einen Namen verwendest, ist nur dann wichtig, wenn Du später nochmal auf dieses temporäre Storage-Element zugreifen willst / musst.F3K Total hat geschrieben:Kannst Du mir sagen was "ms777" bedeutet?
Das "ms777" hatte ich so stehen gelassen, weil die Zeile nicht original von mir ist, sondern vom user ms777 im englischen Forum.
Re: Calc Datei z.B als Vorlage in Base-Datei einbetten
Hallo Dpunch,
na, dann weiss ich jetzt, dass ich da nix falsch machen kann.
Inzwischen habe ich ein Calc-Template in eine meine DBs eingebettet.
Es wird dann per Makro aus einem Formular heraus gefüllt und direkt gedruckt.
Klasse, funktioniert wunderbar, also nochmal vielen Dank.
Beste Grüße von Rik
na, dann weiss ich jetzt, dass ich da nix falsch machen kann.
Inzwischen habe ich ein Calc-Template in eine meine DBs eingebettet.
Es wird dann per Makro aus einem Formular heraus gefüllt und direkt gedruckt.
Klasse, funktioniert wunderbar, also nochmal vielen Dank.
Beste Grüße von Rik
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO