❤️ Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! ❤️
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Abrage - Order by als dynamische Auswahl aus Formular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
n0gg
Beiträge: 1
Registriert: Do 31. Dez 2015, 14:28

Abrage - Order by als dynamische Auswahl aus Formular

Beitrag von n0gg » Do 31. Dez 2015, 14:38

Hallo

ich habe eine größere Datenbank erstellt, sowie eine Abrage und ein Formularentwurf, über den ich mir die Datenbankeinträge anzeigen lassen kann und auch filtern kann. Was fehlt ist jetzt nur noch die Sortierung. Im Moment ist diese noch starr nach einem Tabelleneintrag.

Im groben sieht meine Abfrage so aus:
SELECT Eintrag1, Eintrag2, Eintrag3 FROM Tabelle WHERE xyz ORDER BY Eintrag1.

Ich möchte nun in meinem Formular nicht starr nach Eintrag1 sortieren sondern im Prinzip einen Alias einsetzen und diesen dann im Formular durch ein Listenfeld auswählen.

Also SELECT ... ORDER BY alias1.

Den Alias möchte ich dann im Formular über ein Listenfeld ausfählen - also nach Eintrag1, Eintrag2 Eintrag3 um so auswählen zu können, wo nach ich filter.

Wie schaffe ich dies, bisher gekomme ich nur Fehler wenn ich dies versuche...

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abrage - Order by als dynamische Auswahl aus Formular

Beitrag von RobertG » Do 31. Dez 2015, 17:49

... und hier ein kurzer Hinweis zur Sache:
Es ist nicht möglich, einen Feldbegriff variabel in eine Abfrage zu schreiben. Das Vorhaben kann nur mit Hilfe von Makros gelingen. Angenommen das Listenfeld befindet sich in dem gleichen Formular wie die Tabelle selbst:

Code: Alles auswählen

SUB Order(oEvent AS OBJECT)
	oFeld = oEvent.Source.Model
	oForm = oFeld.parent
	stOrder = """"+oFeld.CurrentValue+""" ASC"
	oForm.Order = stOrder
END SUB
Nicht weiter getestet, Deklaration der Variablen fehlt, vielleicht auch ein Fehler bei den Anführungszeichen.
Ob anschließend das Formular über oForm.reload neu eingelesen werden muss kann ich nicht sagen.

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Abrage - Order by als dynamische Auswahl aus Formular

Beitrag von F3K Total » Fr 1. Jan 2016, 13:58

Hallo Robert,
RobertG hat geschrieben:Es ist nicht möglich, einen Feldbegriff variabel in eine Abfrage zu schreiben...
Da hast du Recht. Was aber funktioniert, sofern die Sortierfelder vom gleichen Datentyp sind, also entweder alles Zahlen oder alles Texte sind, ist eine Fallunterscheidung:

Code: Alles auswählen

... ORDER BY
CASE 
WHEN (SELECT "SORTIERSPALTE" FROM "Filter") = 'Nachname' THEN "Nachname" 
WHEN (SELECT "SORTIERSPALTE" FROM "Filter")  = 'Vorname' THEN "Vorname" 
END
Anbei eine Beispieldatei.
Gruß R
Dateianhänge
Adressen_Order_By.zip
nur entpacken
(68.6 KiB) 148-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten