21.08.2013 Aufrufe

Base-Handbuch - The Document Foundation Wiki

Base-Handbuch - The Document Foundation Wiki

Base-Handbuch - The Document Foundation Wiki

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

der Erstellung der Makros über den eingefärbten Code sichtbar, falls eventuell einmal ein<br />

doppeltes Anführungszeichen vergessen wurde. Die Anführungszeichen verändern sofort iohre<br />

Farbgebung, wenn sie nicht durch das Makro als Begrenzung von Zeichenketten erkannt werden.<br />

ELSE<br />

... und wenn eine zweite Tabelle nicht existiert, wird der folgende SQL-Code erstellt:<br />

IF Position = 2 THEN<br />

stSql = "SELECT """ + NameTabellenFeld1 + """||'" + Feldtrenner +<br />

"'||""" + NameTabellenFeld2 + """ FROM """ + NameTabelle1 + """ WHERE ""ID""='" +<br />

inID + "'"<br />

ELSE<br />

stSql = "SELECT """ + NameTabellenFeld2 + """||'" + Feldtrenner +<br />

"'||""" + NameTabellenFeld1 + """ FROM """ + NameTabelle1 + """ WHERE ""ID""='" +<br />

inID + "'"<br />

END IF<br />

END IF<br />

ELSE<br />

Wenn ein zweites Tabellenfeld nicht existiert kann es auch nur eine Tabelle sein. Daraus ergibt sich<br />

die folgende Abfrage:<br />

stSql = "SELECT """ + NameTabellenFeld1 + """ FROM """ + NameTabelle1 + """<br />

WHERE ""ID""='" + inID + "'"<br />

END IF<br />

Die in der Variablen 'stSql' abgespeicherte Abfrage wird jetzt ausgeführt und das Ergebnis<br />

dieser Abfrage in der Variablen 'oAbfrageergebnis' gespeichert.<br />

oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)<br />

Das Abfrageergebnis wird über eine Schleife ausgelesen. Hier könnten, wie in einer Abfrage aus<br />

der GUI, mehrere Felder und Datensätze dargestellt werden. Von der Konstruktion der Abfrage her<br />

wird aber nur ein Ergebnis erwartet. Dieses Ergebnis wird in der ersten Spalte (1) der Abfrage zu<br />

finden sein. Es ist der Datensatz, der den anzuzeigenden Inhalt des Kombinationsfeldes<br />

wiedergibt. Der Inhalt ist ein Textinhalt ('getString()'), deshalb hier<br />

'oAbfrageergebnis.getString(1)'.<br />

IF NOT IsNull(oAbfrageergebnis) THEN<br />

WHILE oAbfrageergebnis.next<br />

stFeldWert = oAbfrageergebnis.getString(1)<br />

WEND<br />

Das Kombinationsfeld muss jetzt auf den aus der Abfrage sich ergebenden Textwert eingestellt<br />

werden. Hierzu ist ein Zugriff auf den Controller notwendig.<br />

oDocCrl = ThisComponent.getCurrentController()<br />

oCtlView = oDocCrl.GetControl(oFeldList)<br />

oCtlView.setText(stFeldWert)<br />

END IF<br />

END IF<br />

Falls überhaupt kein Wert in dem Feld für den Fremdschlüssel 'oFeld' vorhanden ist, ist auch die<br />

ganze Abfrage nicht gelaufen. Das Kombinationsfeld wird jetzt auf eine leere Anzeige eingestellt.<br />

IF IsEmpty(oFeld.getCurrentValue()) THEN<br />

oDocCrl = ThisComponent.getCurrentController()<br />

oCtlView = oDocCrl.GetControl(oFeldList)<br />

oCtlView.setText("")<br />

END IF<br />

END SUB<br />

Diese Prozedur erledigt jetzt also den Kontakt von dem in einem versteckten Feld abgelegten<br />

Fremdschlüssel zu dem Kombinationsfeld. Für die Anzeige der richtigen Werte im<br />

Kombinationsfeld würde das ausreichen. Eine Abspeicherung von neuen Werten hingegen<br />

benötigt eine weitere Prozedur.<br />

Makros: Bedienbarkeit verbessern 242

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!