BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Listenfeld mit SQL Abfrage
-
- Beiträge: 43
- Registriert: Di 20. Jan 2015, 18:56
- Wohnort: Hungen
Listenfeld mit SQL Abfrage
Hallo
als Neuling komme ich wieder nicht weiter.
MySQL Datenbank
Ich habe ein Listenfeld mit der Abfrage: SELECT DISTINCT "anlass" FROM "dbbilder"."bilder1" ORDER BY "anlass"
Dies liefert mir Anlässe wie : Urlaub, Geburtstag, Ausflug u.s.w
In einem zweiten Listenfeld mit der Abfrage : SELECT DISTINCT "jahr" FROM "dbbilder"."bilder1" WHERE "anlass"='Geburt' ORDER BY "jahr"
werden mir die Jahre ausgelesen
Jetzt möchte ich die Abfrage im zweiten Listenfeld per Makro ändern und zwar wenn ein Anlass ausgewählt wurde soll dieser bei der Jahres suche berücksichtigt werden . Manuell kann ich den SQL-String ändern und das funktioniert auch, aber über Makro geht es nicht.
zB.: in der WHERE "anlass" = 'Urlaub'
Im Makro schon versucht.
arSQL(0) = SELECT DISTINCT "jahr" FROM "dbbilder"."bilder1" WHERE "anlass"='Urlaub' ORDER BY "jahr"
oListBoxJahr.ListSource(0) = arSQL(0)
in oListBoxJahr.ListSource(0) bleibt der manuell eingetragene Befehl stehen
danch oListBoxJahr = refresh nicht das erwartete Ergebnis
Kann mir bitte jemand helfen.
Vielen Dank
als Neuling komme ich wieder nicht weiter.
MySQL Datenbank
Ich habe ein Listenfeld mit der Abfrage: SELECT DISTINCT "anlass" FROM "dbbilder"."bilder1" ORDER BY "anlass"
Dies liefert mir Anlässe wie : Urlaub, Geburtstag, Ausflug u.s.w
In einem zweiten Listenfeld mit der Abfrage : SELECT DISTINCT "jahr" FROM "dbbilder"."bilder1" WHERE "anlass"='Geburt' ORDER BY "jahr"
werden mir die Jahre ausgelesen
Jetzt möchte ich die Abfrage im zweiten Listenfeld per Makro ändern und zwar wenn ein Anlass ausgewählt wurde soll dieser bei der Jahres suche berücksichtigt werden . Manuell kann ich den SQL-String ändern und das funktioniert auch, aber über Makro geht es nicht.
zB.: in der WHERE "anlass" = 'Urlaub'
Im Makro schon versucht.
arSQL(0) = SELECT DISTINCT "jahr" FROM "dbbilder"."bilder1" WHERE "anlass"='Urlaub' ORDER BY "jahr"
oListBoxJahr.ListSource(0) = arSQL(0)
in oListBoxJahr.ListSource(0) bleibt der manuell eingetragene Befehl stehen
danch oListBoxJahr = refresh nicht das erwartete Ergebnis
Kann mir bitte jemand helfen.
Vielen Dank
Re: Listenfeld mit SQL Abfrage
Moin,
ein Schuss ins Blaue:
Statt
nimm mal
HTH Gruß R
EDIT: Ich würde das allerdings ohne Makro, mit einer einzeiligen Filtertabelle, in die der Wert der ersten Listbox geschrieben wird, versuchen.
Siehe auch z.B. im englischen Forum: https://forum.openoffice.org/en/forum/v ... 00&t=94393
ein Schuss ins Blaue:
Statt
Code: Alles auswählen
oListBoxJahr = refresh
Code: Alles auswählen
oListBoxJahr.refresh
EDIT: Ich würde das allerdings ohne Makro, mit einer einzeiligen Filtertabelle, in die der Wert der ersten Listbox geschrieben wird, versuchen.
Siehe auch z.B. im englischen Forum: https://forum.openoffice.org/en/forum/v ... 00&t=94393
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Listenfeld mit SQL Abfrage
Ich nehme einmal Deinen Code und passe ihn so an, dass er zu dem im Handbuch passt:
… und zu der Filtertabelle:
Bei Mehrbenutzersystemen wie MySQL entweder mit einer temporären Tabelle arbeiten (die sehen die anderen Nutzer nicht) oder mit einer Filtertabelle, in der die CONNECTION_ID() als Primärschlüssel gespeichert ist. Dann wird der Filter je nach Verbindung auch richtig raus gesucht. Beides im Handbuch im Makro-Kapitel beschrieben.
Code: Alles auswählen
DIM arSQL(0) AS STRING
arSQL(0) = "SELECT DISTINCT ""jahr"" FROM ""dbbilder"".""bilder1"" WHERE ""anlass""='Urlaub' ORDER BY ""jahr"""
oListBoxJahr.ListSource = arSQL
oListBoxJahr.refresh
Bei Mehrbenutzersystemen wie MySQL entweder mit einer temporären Tabelle arbeiten (die sehen die anderen Nutzer nicht) oder mit einer Filtertabelle, in der die CONNECTION_ID() als Primärschlüssel gespeichert ist. Dann wird der Filter je nach Verbindung auch richtig raus gesucht. Beides im Handbuch im Makro-Kapitel beschrieben.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- Beiträge: 43
- Registriert: Di 20. Jan 2015, 18:56
- Wohnort: Hungen
Re: Listenfeld mit SQL Abfrage
Hallo
Danke für die Antwort es funktioniert ein stück weiter. Mein Fehler war das ich nur den String übergeben wollte aber Du hast mir gezeigt, dass das Array übergeben werden muss.
Ich habe jetzt den Querrystring in eine gespeicherte Abfrage geschrieben ( dieser wird entsprechend der Parameter) angepasst. Abfrage zur Kontrolle im SQL-Modus geöffnet -> OK.
Ich habe dazu eine Tabelle mit den entsprechenden Spalten und in den Formulareigenschaften Art des Inhaltes [Abfrage] und im Inhalt [qViewFuellen] stehen. Die Tabelle soll aber aktualisiert d.h. qViewFuellen ausgeführt werden. Wechsel ich in den Bearbeitungsmodus und wieder zurück wird sie aktualisiert. Wie kann ich das Ohne den Wechsel machen ?
Schöne Ostern und schonmal vielen Dank
von Roland
Danke für die Antwort es funktioniert ein stück weiter. Mein Fehler war das ich nur den String übergeben wollte aber Du hast mir gezeigt, dass das Array übergeben werden muss.
Ich habe jetzt den Querrystring in eine gespeicherte Abfrage geschrieben ( dieser wird entsprechend der Parameter) angepasst. Abfrage zur Kontrolle im SQL-Modus geöffnet -> OK.
Ich habe dazu eine Tabelle mit den entsprechenden Spalten und in den Formulareigenschaften Art des Inhaltes [Abfrage] und im Inhalt [qViewFuellen] stehen. Die Tabelle soll aber aktualisiert d.h. qViewFuellen ausgeführt werden. Wechsel ich in den Bearbeitungsmodus und wieder zurück wird sie aktualisiert. Wie kann ich das Ohne den Wechsel machen ?
Schöne Ostern und schonmal vielen Dank
von Roland
Re: Listenfeld mit SQL Abfrage
Hallo Roland,
durch die Beschreibung, die Du da lieferst, steige ich nicht mehr durch. Die Tabelle ist doch in der Datenbank. Wenn Du da etwas rein geschrieben hast, dann verstehe ich nicht, was Du aktualisieren willst. Oder geht es um ein Formular, das mit oForm.reload() z.B. neu geladen werden kann?
Gruß
Robert
durch die Beschreibung, die Du da lieferst, steige ich nicht mehr durch. Die Tabelle ist doch in der Datenbank. Wenn Du da etwas rein geschrieben hast, dann verstehe ich nicht, was Du aktualisieren willst. Oder geht es um ein Formular, das mit oForm.reload() z.B. neu geladen werden kann?
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- Beiträge: 43
- Registriert: Di 20. Jan 2015, 18:56
- Wohnort: Hungen
Re: Listenfeld mit SQL Abfrage
Hallo Robert
ich hab mal 3 Bilder im Anhang. Hoffentlich hilft Dir das weiter.
Hier wird der Aufbau des Formulars gezeigt. Hier ist die selektierte Tabelle mit Werten angezeigt Hier wird der erzeugte select-befehl, welcher in der gespeicherten Abfrage "Auswahl" eingetragen wird. Die oberen Listenfelder zeigen die vorhandenen Einträge an. z.B.: Anlass = "Urlaub" -> Urlaub kommt nur in den Jahren 2018,2019,2020 vor -> das Jahr 2020 ausgewählt -> es gibt nur die Orte = Zempin, Zempin-Tutow,... -> Zempin-Totow
daraus folgt dann der Selectbefehl.
Ich bin hier ziemlich Neuling. Es gibt nur eine große Tabelle mit allen Werten aus der Windowspfadstruktur. Diese ist nicht normalisiert weil ich den Import über eine csv-Datei welche über einen DIR-Befehl erzeugt wurde mache. Ich weiss, dass ist nicht besonders gut. Mit fehlt aber die Kenntnis noch wie ich die Zeilen der csv-Datei auseinander nehmen kann.
Danke für deine Mühe.
Gruss Roland
ich hab mal 3 Bilder im Anhang. Hoffentlich hilft Dir das weiter.
Hier wird der Aufbau des Formulars gezeigt. Hier ist die selektierte Tabelle mit Werten angezeigt Hier wird der erzeugte select-befehl, welcher in der gespeicherten Abfrage "Auswahl" eingetragen wird. Die oberen Listenfelder zeigen die vorhandenen Einträge an. z.B.: Anlass = "Urlaub" -> Urlaub kommt nur in den Jahren 2018,2019,2020 vor -> das Jahr 2020 ausgewählt -> es gibt nur die Orte = Zempin, Zempin-Tutow,... -> Zempin-Totow
daraus folgt dann der Selectbefehl.
Ich bin hier ziemlich Neuling. Es gibt nur eine große Tabelle mit allen Werten aus der Windowspfadstruktur. Diese ist nicht normalisiert weil ich den Import über eine csv-Datei welche über einen DIR-Befehl erzeugt wurde mache. Ich weiss, dass ist nicht besonders gut. Mit fehlt aber die Kenntnis noch wie ich die Zeilen der csv-Datei auseinander nehmen kann.
Danke für deine Mühe.
Gruss Roland
Re: Listenfeld mit SQL Abfrage
Du versuchst ja wirklich alles über Makros zu machen, was nur geht, oder?
Du hast den SQL-Befehl erstellt, der für das Formular gelten soll. Das Formular soll also nicht auf einer Abfrage basieren sondern auf einem SQL-Befehl:
Da muss natürlich jetzt das richtige Formular rein und als SQL-Befehl der Befehl, den Du da ermittelt hast.
Gruß
Robert
Du hast den SQL-Befehl erstellt, der für das Formular gelten soll. Das Formular soll also nicht auf einer Abfrage basieren sondern auf einem SQL-Befehl:
Code: Alles auswählen
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms.getByName("")
oForm.Command = "SELECT ...."
oForm.CommandType = com.sun.star.sdb.CommandType.COMMAND
oForm.reload()
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- Beiträge: 43
- Registriert: Di 20. Jan 2015, 18:56
- Wohnort: Hungen
Re: Listenfeld mit SQL Abfrage
Hallo Robert
Danke für die Lösung. Ich hab das im Makro angepasst und es FUNKTIONIERT.
Einen schönen Ostermontag wünscht Dir
Roland
PS: Ich muss mir wohl Dein Handbuch über BASE mal "reinsaugen".
Danke für die Lösung. Ich hab das im Makro angepasst und es FUNKTIONIERT.
Einen schönen Ostermontag wünscht Dir
Roland
PS: Ich muss mir wohl Dein Handbuch über BASE mal "reinsaugen".
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️