Abfrage mit Kombinationsfeld

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage mit Kombinationsfeld

Re: Abfrage mit Kombinationsfeld

von peschiber » Mo, 06.05.2019 06:25

Hallo R,

danke für den Hinweis,
steht im Eigenschaftsdialog ganz oben
Tut mir leid, habe ich völlig übersehen, hatte mich immer nur auf den Inhalt des "Eigenschaftsdialog" konzentriert.

Danke für deine Geduld, Peter

Re: Abfrage mit Kombinationsfeld

von F3K Total » So, 05.05.2019 16:22

Irgendwie scheinst du meine Posts nicht richtig zu lesen, jedes Wort hat seinen Sinn:
F3K Total hat geschrieben: So, 05.05.2019 10:11 ... denn die Art des Feldes steht im Eigenschaftsdialog ganz oben, im Bild rot unterstrichen...
Und das sich die Art eines Feldes, beim Kopieren von einem Formular ins andere, ändert, habe ich in 10 jahren OpenOffice noch nicht erlebt!
Was ich bestätigen kann, ist, dass unter LibreOffice 6.2.3, Windows 7, das Icon von Listen- und Kombinationsfeld gleich ist.
Das ist aus meiner Sicht ein BUG.
R

Re: Abfrage mit Kombinationsfeld

von peschiber » So, 05.05.2019 13:37

Hallo R,

mag an Windows liegen, bei mir sehen die gleich aus - sieh Screenshot.
Die Namen wurden automatisch in dem Beispiel von Base vergeben.

Muss aber sagen, dass ich langsam bezüglich Listenfeld und Kombinationsfeld eine Krise bekomme.
Weiß nicht, ob man das als Bug bezeichnen kann.

Ich habe mehrfach eine Listenfeld aus einem vorhanden Formular in ein anderes kopiert und mich gewundert, warum es plötzlich nicht mehr funktioniert.
Erst nach langem suchen bin ich dahinter gekommen, dass beim Kopieren Base aus dem ehemaligen Listenfeld beim Kopieren daraus ein Kombinationsfeld macht. Der Fehler ist leider nicht immer reproduzierbar, es scheint mehr ein Zufall zu sein, denn manchmal wird es als Listenfeld, mal als Kombinationsfeld ins andere Formular kopiert. Da bei mir die Icon nicht zu unterscheiden sind, bleibt die einzige Möglichkeit es festzustellen, ob es als Listenfeld oder Kombinationsfeld kopiert wurde: rechte Maustaste und "Ersetzen durch" anklicken, dann wird halt nur die Alternative angeboten. Aber wer kommt denn schon auf so eine Idee so etwas zu überprüfen?

Gruß Peter
Dateianhänge
Listenfeld v Kombofeld.png
Listenfeld v Kombofeld.png (5.89 KiB) 7567 mal betrachtet

Re: Abfrage mit Kombinationsfeld

von F3K Total » So, 05.05.2019 10:11

peschiber hat geschrieben: Sa, 04.05.2019 10:15 PS.:
Kleiner Vorschlag für das nächste Base update.
Im Formular-Navigater wird für Listenfeld und Kombinationsfeld das gleiche Icon vewendet.
Wenn dann der Name geändert wird, zum Beispiel in "Filter" weiß man gar nicht, ob es sich um ein Listenfeld oder Kombinationsfeld handelt.
Ich schlage vor, du schaust nochmal genau hin, es ist weder das gleiche Icon, noch kann man nicht erkennen worum es sich handelt, denn die Art des Feldes steht im Eigenschaftsdialog ganz oben, im Bild rot unterstrichen:
LFCF.png
LFCF.png (52.73 KiB) 7580 mal betrachtet
Gruß R

Re: Abfrage mit Kombinationsfeld

von RobertG » Sa, 04.05.2019 18:26

Kleiner Nachtrag zu Listen- bzw. Kombinationsfeldern, die eine Tabellenansicht ermöglichen:

Bedingung ist, dass die eingestellte Schrift eine mit fester Breite ist. Dann kann über geschickte Abfragetechnik die Breite für jedes Element festgelegt werden. Siehe dazu auch im Handbuch: Abfragen > Abfragen für die Erstellung von Listenfeldern.

Re: Abfrage mit Kombinationsfeld

von peschiber » Sa, 04.05.2019 10:15

Hallo R,

super! danke!

Tut mir leid, wenn ich dich unnötig belästigt habe, hatte nur das Formular "Filter-Combobox" getestet.
In der Tat, das mit Listenfeld ist erheblich einfacher. Ich hatte bis heute angenomen, dass das Dopdown-Feld in deiner Beispieldatei immer ein Kombinationsfeld ist - bis heute.

Auch wenn du es nicht glauben wirst, weiß der Henker warum, in der OpenOffice Version,6.2, die ich bis gestern installiert hatte, gab es keine Möglichkeit, Listenfeld auf "aufklappbar" einzustellen.
Ich habe mich nur gewundert, dass du es im Handbuch erwähnt hast, aber bei meiner Istallation fehlte für Listenfeld der Eintrag: "Aufklappbar"
War davon ausgegangen, dass das in der neusten LibreOffice Version einfach geändert wurde.
Die Einstellung "Aufklappbar" taucht bei mir nur bei Kombinatiosnfeld auf, daher auch mein Wunsch, das Kombinationsfeld und nicht ein Listenfeld zu nutzen.
Habe LibreOffice gestern komplett wegen der vielen Abstürze gelöscht und neu installiert, gleiche Verison, und jetzt, ich kann es kaum glauben, kann ich das Listenfeld auch auch auf "Aufklappbar" einstellen.
Insofern war meine Hinweise mit der "Paltzverschwendung" für dich auch nicht nachvollziehbar.
Du musst gedacht haben, der tickt nicht sauber. Sorry für das Missverständnis.

Ein schönes Wochenende, Peter

PS.:
Kleiner Vorschlag für das nächste Base update.
Im Formular-Navigater wird für Listenfeld und Kombinationsfeld das gleiche Icon vewendet.
Wenn dann der Name geändert wird, zum Beispiel in "Filter" weiß man gar nicht, ob es sich um ein Listenfeld oder Kombinationsfeld handelt.
(Nur die Resultate sind bei gleicher SQL-Anweisung unterschiedlich.)
Wäre hilfreich, wenn das Icon für Listenfeld und Kombinationsfeld unterschiedlich wäre.

Re: Abfrage mit Kombinationsfeld

von F3K Total » Sa, 04.05.2019 08:42

Mach es genau so, wie ich es im Formular mit dem Listenfeld gezeigt habe...baue HELPER_FORM ein ..Mann Mann, Mann... :roll:
LL.png
LL.png (11.09 KiB) 7682 mal betrachtet

Re: Abfrage mit Kombinationsfeld

von peschiber » Sa, 04.05.2019 02:45

Lieber R,

ganz herzlichen Dank für deine unsagbare Geduld, Neueinsteigern auf die Sprünge zu helfen.

Ich habe mir noch mal deine Beispieldatei „Adressen_Filter_nach_ID_3.odb“ angeschaut.

Auch in deiner Beispieldatei taucht das Problemchen auf, dass nach Editieren zwar der Datensatz geändert, und in der Tabelle „tbl_Test_Stammdaten“ gespeichert wird, aber das Kombinationsfeld wird leider nicht aktualisiert.
Das ist für AnwenderInnen irritierend.
(siehe Screenshot).

Ich hätte gerne gewusst, was ich machen muss, damit auch das Kombinationsfeld ebenfalls aktualisiert wird.

Du hast zwar in einer anderen Beispieldatei „kaskadierende Listenfelder ohne Makro“
gezeigt, wie ein Kombinationsfeld aktualisiert werden kann, aber das finde ich bedienungsmäßig ziemlich umständlich.

Hatte auf eine bedienungsfreundlichere Lösung gehofft.
Geht wahrscheinlich nur über ein Makro, aber da traue ich mich als Anfänger noch nicht ran.
Aber wahrscheinlich komme ich sowieso nicht darum, mich mit Basic zu beschäftigen, allein schon um Formulare auf "Kopfdruck" zu öffnen.

Von daher hätte ich eine große Bitte an dich - hoffentlich keine Zumutung.
Könntest du anhand deiner eigenen Beispieldatei „tbl_Test_Stammdaten“ mal einen Basic-Code hier veröffentlichen, wie die Aktualisierung mit Basic-Code zu realisieren ist?
(dann kann wahrscheinlich auch auf den cmd-button "Filter" verzichtet werden.

Danke und Grüße aus El Salvador, Peter
Dateianhänge
Kombinationsfeld nicht aktualisiert.png
Kombinationsfeld nicht aktualisiert.png (65.08 KiB) 7702 mal betrachtet

Re: Abfrage mit Kombinationsfeld

von F3K Total » Fr, 03.05.2019 16:09

... hier ein Beispiel für deine letzte Frage, siehe Formular Filter_Listbox.
Schaue die die Struktur mit dem Formularnavigator im Vergleich zur vorigen Version an, ich habe ein Hilfsformular eingebaut HELPER_FORM
HF.PNG
HF.PNG (15.98 KiB) 7724 mal betrachtet
Gruß R
Dateianhänge
Adressen_Filter_nach_ID_3.odb
(115.76 KiB) 174-mal heruntergeladen

Re: Abfrage mit Kombinationsfeld

von F3K Total » Fr, 03.05.2019 15:57

Irgendwie reden wir aneinander vorbei:
LFKF.png
LFKF.png (69.96 KiB) 7731 mal betrachtet
Oben links, das ist das Listenfeld, oben rechts, das ist das Kombinationsfeld. Kann es sein dass du das Listenfeld mit einem Tabellenkontrollfeld, in beiden Formularen unten, verwechselst?
Auf alle Fälle ist das Filtern mit Listenfeld viel einfacher, weil es eben ein Anzeigespalte gefolgt von einer Schreibspalte hat, also sinngemäß: Zeige Name, schreibe ID.
Der SQL Befehl dazu:
SELECT "Nachname" || ' , ' || "Vorname" || ', ' || RIGHT( '0' || DAY( "Geburtstag" ), 2 ) || '. ' || RIGHT( '0' || MONTH( "Geburtstag" ), 2 ) || '.' || YEAR( "Geburtstag" ), "ID" FROM "tbl_Test_Stammdaten"
Gruß R

Re: Abfrage mit Kombinationsfeld

von peschiber » Fr, 03.05.2019 07:02

Hallo R,

ganz herzlichen Dank für deine Antwort.
Selbstverständlich habe ich mir dein Beispiel genau angeschaut. Ohne deine Hilfe hätte ich es nicht geschafft, den SQL-Code für das Kombinationsfeld so zu ändern, wie ich es gerne hätte. Dafür noch mal herzlichen Dank.

Damit du verstehst, was ich mit „Platzverschwendung“ in einem Formular meine, hier noch mal ein Screenshot, Teilausschnitt einer Eingabemaske. Leider ohne Daten, weil beim letzten Absturz sämtliche Datenquellen, selbst bei deiner Beispieldatei, gelöscht wurden. Sehr ärgerlich.
(Siehe dazu auch meine neue Frage: Mehrere Dateien gleichzeitig geöffnet – ein Problem unter Windows?)

Möglicherweise sollte ich mich auch mit Formular Designe beschäftigen.
Als Neueinsteiger stelle ich mir halt Eingabemasken so vor, dass sie viel Platz für Einträge bieten.
Von daher auch meine Vorstellung: in so einem Formular, habe ich gar keinen Platz für ein Listenfeld.

Allerdings bin ich, was das Kombinationsfeld anbelangt nun auf ein neues Problem gestoßen.
Kombinationsfeld wird nach Datenänderung nicht aktualisiert:

Nach Betätigung des Button „Datensatz suchen“ wird der entsprechende Datensatz angezeigt und kann auch editiert und gespeichert werden, allerdings wird der Inhalt des Kombinationsfeldes nicht aktualisiert.
Beispiel: der Nachname „Müller“ wird in „Müllermeister“ geändert, der geänderte Eintrag in der Tabelle übernommen, aber nicht im Kombinationsfeld. Wenn ich erneut im Kombinationsfeld die Liste aufklappe, steht in der Liste immer noch „Müller“, aber der Datensatz, den ich dann aufrufe, zeigt mir im Textfeld den geänderten Namen „Müllermeister“.
(Die Suchroutine: es wird nach der ID und nicht nach Nachnamen gesucht.)
Die Aktualisierung des Kombinationsfeldes erfolgt erst dann, wenn das Formular geschlossen und erneut aufgerufen wird.
Das ist natürlich keine Lösung.

Frage:
Was muss getan werden, damit, wenn der geänderte Datensatz gespeichert wurde, auch das Kombinationsfeld aktualisiert wird?
Hoffe, dass das ohne Basic Routine geht, da ich mich damit als Einsteiger in Base nun überhaupt noch nicht auskenne.

Danke Peter
Dateianhänge
Formualr mit Kombinationsfeld.png
Formualr mit Kombinationsfeld.png (98.09 KiB) 7750 mal betrachtet

Re: Abfrage mit Kombinationsfeld

von F3K Total » Mi, 01.05.2019 08:42

Moin,
schau dir doch einfach mal meine Beispieldatei richtig an, da hast du doch alles drin... all das, was dir beim Listenfeld vermeintlich fehlt, kann es!
Habe in der angehängten Version im Gegensatz zur vorigen nur die ID am Anfang der Listenfeldeinträge weggenommen.
FL.PNG
FL.PNG (5.45 KiB) 7787 mal betrachtet
Gruß R
Dateianhänge
Adressen_Filter_nach_ID_2.odb
(115.68 KiB) 189-mal heruntergeladen

Re: Abfrage mit Kombinationsfeld

von peschiber » Mi, 01.05.2019 02:26

Hallo R,

ganz herzlichen Dank, jetzt klappt es super.

Zu deinem Unverständnis:
ich verstehe zwar immer noch nicht, warum du statt der einfachen Listenfeld-Lösung unbedingt das Kombinationsfeld nutzen willst,
kann ich nachvollziehen, da das Kombinationsfeld viel mehr Aufwand erfordert und auch Einschränkungen unterliegt, z. B. Formatierung in Spalten.

Aus meiner Sicht bietet das Kombinationsfeld aber 3 Vorteile:
1. benötigt ein Kombinationsfeld weniger Platz in einem Formular als ein Tabellen-Steuerelement,
es ist mir bislang noch nicht gelungen in einem Listenfeld mehrere Werte, als ein String darzustellen.
(z. B: "Müller, Paul, 04. 04. 1944" In der Datenbank können vielleicht mehrere "Müller, Paul" gespeichert sein, aber es ist fast ausgeschlossen, dass mehrere Datensätze existieren mit gleichem Nachname, gleichem Vorname und gleichem Geburtstag.)
2. in einem Kombinationsfeld muss z. B. nur ein Buchstabe eingetippt werden, z. B. "M" und schon wird der erste Eintrag gezeigt, der mit dem Buchstaben "M" beginnt.
3. Die Liste im Kombi-Feld, sortiert nach Nachnamen, zeigt bei Eingabe von "M" z. B. sofort alle Einträge die mit dem Buchstaben "M" beginnen.
(siehe Datenanhang)

In meinem Datenanhang, Screenshot handelt es sich nicht um ein Listenfeld, sondern um ein Tabellen-Steuerelement, was nicht aufklappbar ist.

Falls es möglich sein sollte, Zeilen im Listenfeld mit zusammengesetzten Textfeldern zu erzeugen, lass es mich bitte wissen.
Bin mir sicher, dass ich als Neueinsteiger in Base das Potenzial eines Listenfeldes noch nicht erkannt habe.

Noch mal ganz lieben Dank, Peter
Dateianhänge
Kombi versus Listfeld.png
Kombi versus Listfeld.png (157.26 KiB) 7569 mal betrachtet

Re: Abfrage mit Kombinationsfeld

von F3K Total » Di, 30.04.2019 16:05

Moin,
ich verstehe zwar immer noch nicht, warum du statt der einfachen Listenfeld-Lösung unbedingt das Kombinationsfeld nutzen willst, aber die beiden SQLs lauten z.B:
Fürs Kombinationsfeld:

Code: Alles auswählen

SELECT  "Nachname" || ' , ' || "Vorname" || ', ' || RIGHT( '0' || DAY( "Geburtstag" ), 2 ) || '. ' || RIGHT( '0' || MONTH( "Geburtstag" ), 2 ) || '.' || YEAR( "Geburtstag" )|| '>'||"ID"   FROM "tbl_Test_Stammdaten"
Für die Abfrage "qAdressen_Filter_Combobox":

Code: Alles auswählen

SELECT "ID", "Nachname", "Vorname", "Strasse", "PLZ", "Ort" FROM "tbl_Test_Stammdaten" WHERE ( "ID" = CAST( SUBSTR( :qTEXTID, LOCATE( '>', :qTEXTID ) + 1, 999 ) AS INTEGER ) OR :qTEXTID IS NULL )
Gruß R

Re: Abfrage mit Kombinationsfeld

von peschiber » Di, 30.04.2019 07:58

Hallo Robert,

danke für die super schnelle Antwort.

Wie stelle ich sicher, dass der Wet z. B. nach ">" ausgelesen wird, und nicht der Wert, der vor dem ">" steht.

Kenne mich leider mit der Syntax von LOCATE nicht so aus.
Habe den Code von R:
CAST( SUBSTR( :qTEXTID, 1, LOCATE( ',', :qTEXTID ) - 1 ) AS INTEGER )
so interpretiert, dass der Wert der vor dem "," steht ausgewertet wird.

Da der ID Wert im String jetzt aber ganz hinten aufgeführt wird, müsste der Code anders aussehen, ich weiß aber leider nicht wie.
Ich hatte das "," schon durch ein ";" ersetzt, kommt im Sting nur einmal, unmittelbar vor der ID, aber irgendwie ist meine Syntax falsch, es klappt nicht.

Wäre dir also dankbar, wenn du mir auf die Sprünge helfen könntest.

Danke, Peter

Nach oben