Zusammenhang Datenbank + Formular

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Brizzl
**
Beiträge: 34
Registriert: Di, 05.07.2011 13:50

Zusammenhang Datenbank + Formular

Beitrag von Brizzl »

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
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zusammenhang Datenbank + Formular

Beitrag von DPunch »

Aloha
Brizzl hat geschrieben:So wie ich das verstehe ist die Gesamtheit der Kontrollfelder als Formular anzusehen. Richtig?
Nein.
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.
Brizzl
**
Beiträge: 34
Registriert: Di, 05.07.2011 13:50

Re: Zusammenhang Datenbank + Formular

Beitrag von Brizzl »

DANKE!!!

:idea: :idea: :idea: :idea: :idea: 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.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zusammenhang Datenbank + Formular

Beitrag von DPunch »

Aloha
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.
Du meinst, dass Du irgendwo im Netzwerk mit einer .odb-Datei arbeitest, auf die Du von verschiedenen Rechnern aus zugreifen willst?
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
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
Brizzl
**
Beiträge: 34
Registriert: Di, 05.07.2011 13:50

Re: Zusammenhang Datenbank + Formular

Beitrag von Brizzl »

die embedded HSQLDB ist von Haus aus erstmal nicht multiuserfähig
Das ist ja eine Sch... schööne Bescherung. Ok dann setz ich eine MySQL DB auf, dann dürfte sich das ja erledigt haben.

Vielen lieben Dank.

Grüße
Sascha
Antworten