🙏 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. 🤗

Listenfeld programmieren/erweitern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Helles58
Beiträge: 115
Registriert: Mo 17. Jul 2017, 19:51

Listenfeld programmieren/erweitern

Beitrag von Helles58 » Do 3. Okt 2024, 14:00

Hallo zusammen,

ich habe mit folgedem Makro einListenfeld eingestellt:
Sub DS_suchen_3'benötigt
Dim oForm, oListbox As Object
Dim LB_Item as integer
oForm = ThisComponent.drawpage.forms.getbyindex(0)
oListbox = oForm.getByName("Firma_suchen")
LB_Item = oListbox.SelectedItems(0)
nKundenNummer = oListbox.ValueItemList(LB_Item)
oform.filter = """Kunden-Nr"" = "+nKundenNummer
oform.Reload
oform.filter = ""
End Sub

Listenfeld Inhalt ist:
SELECT "Firma" || ', ' || "Postleitzahl" || ', ' || "Ort", "Kunden-Nr" FROM "T_Master_Adressen" WHERE ( "kein_Bedarf" = 0 AND "Löschen" = 0 AND "Insolvent" = 0 OR "kein_Bedarf" IS NULL AND "Löschen" IS NULL AND "Insolvent" IS NULL ) AND LOWER("Firma" || ') LIKE 'a%' ORDER BY "Firma" || '

Funktioniert soweit, möchte aber gern 2 Dinge noch daran verbessern.

1. Wenn das Formular aufgerfufen wird kann noch durch die DS mit den
Navigationstasten geblättert werden. Nach dem erstmaligen benutzen(aktualisieren) des Listenfeldes geht das nicht
mehr.
Wie kann man das beheben?

2. Bei vielen DS wird die Listenfeldanzeige unübersichtich und ich würde das gern die Eingabe begrenzen.
Kann man dazu das Makro aus dem Handbuch ohne Änderung verwenden? Wenn ja, wie muss dann der Listeninhalt
definiert und/oder das Listenfeld eingestellt werden?

BIn dankbar für jeden Tip

VG Helles58

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

Re: Listenfeld programmieren/erweitern

Beitrag von RobertG » Do 3. Okt 2024, 19:25

Zuerst einmal: Den Wert, den Du aus einer Listbox auslesen willst, bekommst Du einfacher über oListbox.CurrentValue() - es sei denn, Du nutzt AOO. Da war der Doppelschritt von Dir notwendig.

Du setzt einen Filter für ein Formular und lädst das Formular neu. Danach entfernst Du den Filter wieder - warum? Du kannst den Filter doch im Formular selbst an- und ausschalten.

Gibt es denn bei dem gefilterten (und noch gültigen) Filter mehrere Datensätze, so dass Du mit den Navigationstasten blättern könntest?

Zu dem Code für das Listenfeld: Da blicke ich zum Schluss des Codes nicht mehr durch. Vermutlich ist das ja nicht alles, weil Du da hinter die Firmenbezeichnung eine Concat-Zeichen und ein Hochkomma einsetzt. Wozu da LIKE 'a%' steht ist mir auch unklar. Wenn Du sowieso nur den ersten Buchstaben willst: LEFT("Firma",1) = 'a' dürfte deutlich schneller laufen als eine LIKE-Bedingung. Natürlich kannst Du für die Anzeige ein Limit setzen, nur kommst Du dann an bestimmte Datensätze nie mehr dran.
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

Helles58
Beiträge: 115
Registriert: Mo 17. Jul 2017, 19:51

Re: Listenfeld programmieren/erweitern

Beitrag von Helles58 » Sa 5. Okt 2024, 16:15

Hallo Robert,

danke für die Beantwortung.
Ich habe mein Fehler auch gefunden.
Wenn das Formular aktualisiert wird und der Focus auf dem Listenfeld bleibt kommt eine Fehlermeldung beim betätigen der Navigationstasten, wenn er auf einem anderem Feld liegt nicht.
Wie immer ein User Fehler wieder.
Ich versuche jetzt mal eine neues Formular mit dem Makro für die Beschränkung der Anfangsbuchstaben des LF aus dem Handbuch zu erstellen.
Wünsche dir ein frohes Wochende

Gruß Helmut


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