Base-Handbuch - The Document Foundation Wiki
Base-Handbuch - The Document Foundation Wiki
Base-Handbuch - The Document Foundation Wiki
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