Hallo Leute,
ich habe ein Verständnissproblem und komme nicht so recht weiter.
Ich versuche mit den Daten aus einer OOBase Datenbank in einer Writer Vorlage mit Hilfe von Textfeldern und anderen Kontrollfelder
ein Dokument zu erstellen. Dort wird teilweise Text von Hand eingegeben und teilweise kommt dieser aus der DB als vorformulierter Text.
Beispielsweise steht im Dokument dann "Kunde: Kundenanschrift" Kundenanschrift soll per Listbox aus der DB kommen.
So wie ich das verstehe ist die Gesamtheit der Kontrollfelder als Formular anzusehen. Richtig?
Ich habe nun die Möglichkeit über die Symbolleiste "Formular-Steuerelemente" und den Button "Formular" sog. "Formular-Eigenschaften"
festzulegen. Dort finde ich unter dem Reiter "Daten" Angaben zu "Datenquelle", "Art des Inhaltes", "Inhalt" usw. Wenn ich nun alle diese Felder
leer lasse ("Art des Inhaltes" kann nicht leer sein, also habe ich "Tabelle" ausgewählt) zeigt mir OO z.B. in einem Listenfeld, dessen Parameter
wie folgt eingestellt sind: "Art des Listeninhalts": SQL, "Listeninhalt": SELECT "Namen" FROM "Kunden" nichts an. Das Feld ist vollkommen
leer und lässt sich nicht öffen (Drop-Down). Trage ich in den Formular-Eigenschaften die benutzte Datenbank ein und eine Tabelle die existiert,
so bekomme ich Daten im Listenfeld angezeigt und kann sie selektieren. Auch wenn ich den Zusammenhang Formular<->Datenbank nicht
verstehe hätte es ja zumindest mal funktioniert - aber ich verstehe nicht wozu ich eine Tabelle im Formular eintragen muss. Die Eigenschaft
"SQL-Befehl" als "Art des Inhaltes" wäre für mich plausibel gewesen - sorgt aber ebenfalls dafür, dass keine Daten im Listenfeld landen.
Kann mir jemand erklären wie dieser Zusammenhang zwischen Kontrollfeldern <--> Formular <--> Datenbank ist und was ich in den Parametern
des Formulars eintragen muss oder wo ich hierzu Infos finde?
Vielen lieben Dank schonmal.
Grüße
Sascha
Zusammenhang Datenbank + Formular
Moderator: Moderatoren
Re: Zusammenhang Datenbank + Formular
Aloha
Ein Dokument kann beliebig viele Formulare (Forms) haben, diese wiederum können jeweils beliebig viele Kontrollfelder beinhalten.
Ein Kontrollfeld ist immer Teil genau eines Formulars
Wenn Du nun mit sogenannten Data Aware Forms (also mit Datenbindung) arbeitest, ist das Formular die Schnittstelle zur Datenbank, also zuständig für das Aufbauen der Verbindung zur Datenbank.
Alle Kontrollfelder können nun entweder das RowSet ihres Formulars oder die offene Verbindung zur im Formular definierten Datenbank verwenden, je nach Art des Steuerelements.
Unterschiedliche Formulare im gleichen Dokument können dabei auch an unterschiedliche Datenbanken gebunden sein.
Deshalb kannst Du Kontrollfelder in einem Formular ohne Datenbankverbindung auch nicht mit Daten aus einer Datenbank füllen, in einem Formular mit Datenbankverbindung dagegen hast Du über die geöffnete Verbindung Zugriff auf alle Elemente dieser Datenbank.
Nein.Brizzl hat geschrieben:So wie ich das verstehe ist die Gesamtheit der Kontrollfelder als Formular anzusehen. Richtig?
Ein Dokument kann beliebig viele Formulare (Forms) haben, diese wiederum können jeweils beliebig viele Kontrollfelder beinhalten.
Ein Kontrollfeld ist immer Teil genau eines Formulars
Wenn Du nun mit sogenannten Data Aware Forms (also mit Datenbindung) arbeitest, ist das Formular die Schnittstelle zur Datenbank, also zuständig für das Aufbauen der Verbindung zur Datenbank.
Alle Kontrollfelder können nun entweder das RowSet ihres Formulars oder die offene Verbindung zur im Formular definierten Datenbank verwenden, je nach Art des Steuerelements.
Unterschiedliche Formulare im gleichen Dokument können dabei auch an unterschiedliche Datenbanken gebunden sein.
Deshalb kannst Du Kontrollfelder in einem Formular ohne Datenbankverbindung auch nicht mit Daten aus einer Datenbank füllen, in einem Formular mit Datenbankverbindung dagegen hast Du über die geöffnete Verbindung Zugriff auf alle Elemente dieser Datenbank.
Re: Zusammenhang Datenbank + Formular
DANKE!!!
ahhhhhhhhh, verstehe. Das Formular ist die Schnittstelle zur DB. Und die Tabelle die ich dort (Formular-Eigenschaften) angebe ist, wenn ich die Kontrollfelder per SQL Query füllen lasse, nicht weiter relevant für mich. Ich kann innerhalb dieses Formulars auf jede Tabelle dieser einen Datenbank zugreifen.
Somit ergibt sich die Frage, wie sage ich dem Formular nun, es soll seine Verbindung zur DB schliessen - Hintergrund. Bei dieser Vorlage hatte ich das Problem, dass die Datenbank gelockt wurde und ich von einem anderen Rechner nicht nochmal das Dokument mit der Vorlage öffnen konnte.





Somit ergibt sich die Frage, wie sage ich dem Formular nun, es soll seine Verbindung zur DB schliessen - Hintergrund. Bei dieser Vorlage hatte ich das Problem, dass die Datenbank gelockt wurde und ich von einem anderen Rechner nicht nochmal das Dokument mit der Vorlage öffnen konnte.
Re: Zusammenhang Datenbank + Formular
Aloha
Wenn ja, dann würde ich Dir eher empfehlen, eine echte Datenbank ala SQLite oder MySQL aufzusetzen, die embedded HSQLDB ist von Haus aus erstmal nicht multiuserfähig.
Um die Datenbankdatei zu entriegeln, musst Du bei allen Formularen die Verbindung kappen, ala
Die Verbindung ist dann allerdings gekappt, bis Du das Dokument neu lädst (dafür reicht schon Wechsel zwischen Entwurfsmodus und wieder zurück) oder per Makro die Verbindung neu aufbaust
Du meinst, dass Du irgendwo im Netzwerk mit einer .odb-Datei arbeitest, auf die Du von verschiedenen Rechnern aus zugreifen willst?Brizzl hat geschrieben:Bei dieser Vorlage hatte ich das Problem, dass die Datenbank gelockt wurde und ich von einem anderen Rechner nicht nochmal das Dokument mit der Vorlage öffnen konnte.
Wenn ja, dann würde ich Dir eher empfehlen, eine echte Datenbank ala SQLite oder MySQL aufzusetzen, die embedded HSQLDB ist von Haus aus erstmal nicht multiuserfähig.
Um die Datenbankdatei zu entriegeln, musst Du bei allen Formularen die Verbindung kappen, ala
Code: Alles auswählen
oDoc = thisComponent
oForms = oDoc.Drawpage.Forms
For each Form in oForms
Form.ActiveConnection.close
Next Form
Re: Zusammenhang Datenbank + Formular
Das ist ja eine Sch... schööne Bescherung. Ok dann setz ich eine MySQL DB auf, dann dürfte sich das ja erledigt haben.die embedded HSQLDB ist von Haus aus erstmal nicht multiuserfähig
Vielen lieben Dank.
Grüße
Sascha