Formular / Subformular Problem: Synchronisierung der Abfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

GBorn
Beiträge: 2
Registriert: Mo, 09.02.2004 21:08

Formular / Subformular Problem: Synchronisierung der Abfrage

Beitrag von GBorn » Mo, 09.02.2004 21:30

Hallo, wer kann mir einen Tipp geben. Ich habe testweise zwei Tabellen Bestellung und Bestelldetails in MySQL angelegt. In einem Formular sollen nun in einem Textfeld die Datensätze des Felds "BestNr" eingeblendet werden (funktioniert auch).

In einem Unterformular habe ich ein Datagrid hinterlegt, welches mir die Datensätze der Tabelle "Bestelldetails" anzeigen soll. Hierzu wurde in den Formulareigenschaften des Unterformulars die korrekte Datenquelle (Firma) eingetragen. Das Feld "Art des Inhalts" steht auf SQL-Befehl und der Wert der Eigenschaft "Inhalt" ist "Select * from Bestelldetails where BestNr =:c1". C1 soll die Speichervariable zur Feldsynchronisation sein. Der Schreibweise nach wäre diese eine Parameterabfrage.

Im Feld "Verknüpfen von" steht der Wert "BestNr", was einem Feldnamen in der Tabelle "Bestellung" entspricht. Im Feld "Verknüpfen nach" steht die Variable "c1". So weit so gut.

Wenn ich jetzt jedoch das Formular aktiviere, erscheint statt der erwarteten Synchronisation der Tabellen bei mir das Dialogfeld "Parameter-Eingabe" und ich muss den Wert für das Feld "BestNr" eintippen. Dann werden im Subformular die Werte der SQL-Abfrage mit den Bestelldetails korrekt angezeigt. Aber eine Synchronisation zwischen den Tabellen findet nicht statt - blätter ich im Hauptformular, tut sich nichts im Unterformular.

Ich hätte jetzt aber (nach dem Lesen der Beschreibung "how_to_link_tables_using_named_parameters" und dem Lesen des Issues 19950 (de.openoffice.org/issues/show_bug.cgi?id=19950) erwartet, dass die Werte "Verknüpfen von" und "Verknüpfen nach" das Feld "BestNr" in der Tabelle "Bestellung" dynamisch zur Synchronisation des Subformulars benutzt werden.

Was mache ich falsch, oder was habe ich übersehen, dass bei mir eine Parameterabfrage als Dialog erscheint. Die Angabe :c1 im SQL-Befehl generiert ja eine Parameterabfrage. Wieso klappt es beim Beispiel aus Issue 19950? Müssen die Namen der Kontrollelemente mit dem Feldnamen übereinstimmen?

Ist das Problem mit dem EnableParameterNameSubstitution in OO 1.1 bzw. SO 7 behoben, oder muss man das Makro nach wie vor einbinden. Hab mal den Makrocode versuchsweise in das Formulardokument eingebaut, hat aber nichts gebracht.

Es ist zum Haare ausraufen - aber ich komm nicht auf den Fehler. Hat vielleicht jemand ähnliche Probleme gehabt und kennt die Lösung? Wer kann mir noch einen Tipp geben (abgesehen davon, sich beim Friseur einen Mecki schneiden zu lassen - von wegen Haare ausraufen ...;-).

Danke

G. Born

GBorn_NoSpam@web.de

GBorn1

Fehler doch noch gefunden

Beitrag von GBorn1 » Di, 10.02.2004 09:39

Ich habe die Lösung mittlerweile selbst gefunden -> man, war ich blöd. Mein Fehler war, dass ich im Formular-Navigator nicht peinlich darauf geachtet habe, dass wirklich ein Unterformular angelegt wurde. Ich hatte zwar den Kontextmenübefehl "Neu" benutzt, aber immer den Zweig "Formulare" im Navigator angewählt. Und dann legt der Navigator einfach mehrere Haupt-Formulare auf der gleichen Ebene an, die natürlich nichts miteinander zu tun haben. Und damit kommt Dialog zur Parameter-Eingabe - eine Synchronisation ist nicht möglich.

Das Makro ist übrigens ab OO 1.1 bzw. SO7 nicht mehr notwendig - hab's ohne Makro am Laufen.

Vielleicht hilft's ja dem Einen oder Anderen, der in die gleiche Falle tappt - die Oo-Hilfe und die diversen Dokus hier im Netz erläutern diese Klippe jedenfalls nicht.

Gruss

G. Born

Kholja

Parameter Substitution - geht nicht

Beitrag von Kholja » Di, 16.03.2004 16:03

Ich habe dasselbe in OO1.1 probiert bekomme aber ebenfalls die Fehlermeldung "Die Dateninhalte konnten nicht geladen werden."
Das Unterformular ist auf der richtigen Ebene. Guckt man sich die Fehlermeldung nochmal genauer an steht da:

"You tried to set a parameter at position 1 but there is/are only 0 parameter(s) allowed. One reason may be that the property "ParameterNameSubstitution" is not set to TRUE in the data source."

Wo kann ich diese Eigenschaft setzten? Ich greife mit ODBC auf eine Access Datenbank zu. Liegt da vielleicht das Problem?

Grüße an die OO-Welt

Kholja

Kholja

Lösung gefunden

Beitrag von Kholja » Mi, 17.03.2004 10:11

Hallo zusammen,

habe die Lösung gefunden. Das Macro war doch notwendig trotz OO1.1.
@GB - wie hast du das ohne Macro gemacht?

Jedenfalls kann man die Parameter Substitution und ein paar andere Settings sehr schön mit einem kleinen GUI (in ein Writer Dokument eingebettet) einstellen. Das Dokument gibt es hier:

http://www.ooomacros.org/user.php#103772

Vielleicht hilfts

Grüsse

Kholja

GBorn1

Parameter Substitution

Beitrag von GBorn1 » Fr, 26.03.2004 11:07

Hm,

habe es jetzt gerade nochmals unter Windows XP probiert. Bei mir läuft das Unterformular ohne Makros (sowohl in StarOffice 7 mit Service Patch 2) als auch in OpenOffice.org 1.1.0. Habe jetzt leider keine Zeit, Linux zu booten und dort auch noch mal zu testen (aber meiner Erinnerung nach war das Verhalten dort identisch).

Könnte an Deiner Access-Datenbank oder am Treiber liegen. Bei Access hatte ich erhebliche Probleme (hab aber ADO zur Anbindung genutzt). Die Treiber unterstützen viele Access-Features nicht, weshalb ich das Thema aufgesteckt habe und zu MySQL gewechselt bin.

Ansonsten ist die Subformularfunktion in Oo 1.x und So 7 noch buggy. Wird ein zweiter Subformularzweig im Dokument eingeführt, lässt sich dieser nicht als Subformular nutzen (der Parser scheint nur den ersten gefundenen Zweig der Formularhierarchie auszuwerten).

G. Born

Antworten