Abfrage, basierend auf Formular-Daten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Nikolaus

Abfrage, basierend auf Formular-Daten

Beitrag von Nikolaus » Di, 05.07.2016 14:12

Liebe Base-Anwender,

die Datenbank Buchliste hat u.a. die Felder Sachgebiet und Bereich. Im Formular NeuesBuch gibt es die Kombo-Listboxen Sachgebiet und Bereich. Der Inhalt von Bereich soll nach dem Wert für Sachgebiet gefiltert werden. Der SQL-Befehl

SELECT DISTINCT "Bereich" FROM "Buchliste" WHERE ((Buchliste.Sachgebiet)=[Forms]!(NeuesBuch.Sachgebiet))

funktioniert aber nicht. Die Lösung ist sicher für jeden außer mir ganz einfach.

Vielen Dank für Hilfe

Nikolaus

RobertG
*******
Beiträge: 1702
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage, basierend auf Formular-Daten

Beitrag von RobertG » Di, 05.07.2016 16:12

Hallo Nikolaus,

das, was Du präsentierst, ist kein reiner SQL-Code. Woher soll die Datenbank denn wissen, was in dem Formular an anderer Stelle ausgewählt wurde. Das bekommt die Datenbank schließlich erst mit dem Abspeichern des Datensatzes zu sehen.

In Base ist so etwas nur über Makros realisierbar. Du könntest das so machen, wie im Handbuch zu Listenfeldern beschrieben:

Code: Alles auswählen

SUB Combofilter
DIM stSql(0) AS STRING
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM stSachgebiet AS STRING
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oFeld1 = oForm.getByname("Sachgebiet")
oFeld2 = oForm.getByname("Bereich")
stSachgebiet = oFeld1.getCurrentValue()
stSql(0) = "SELECT DISTINCT ""Bereich"" FROM ""Buchliste"" WHERE ""Sachgebiet"" = '"+stSachgebiet+"'"
oFeld2.ListSource = stSql
oFeld2.refresh
END SUB
Bei dem Formular und den Feldern musst Du natürlich schauen, welche Bezeichnung die (im Formularnavigator) haben. Den Code mit oDoc, oDrawpage usw. kannst Du auch über das auslösende Ereignis umgehen, aber ohne Makro wirst Du da nicht weiter kommen.
Das Makro musst Du jetzt an das Kombinationsfeld "Sachgebiet" koppeln. Dann soll es dort ausgelöst werden, sobald der Inhalt geändert wird.

Gruß

Robert

Gast

Re: Abfrage, basierend auf Formular-Daten

Beitrag von Gast » Di, 05.07.2016 19:40

Lieber Robert,

vielen Dank für die schnelle Hilfe. Da muss ich wohl noch bis zum Ziel einige Steine aus dem Weg räumen. Zumindest habe ich jetzt das richtige Handbuch gefunden.

vielen Dank

Nikolaus

Antworten