BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

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

Abfrage EXAKT oder BEINHALTET

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
mexman
Beiträge: 30
Registriert: Mi 29. Mär 2017, 04:56

Abfrage EXAKT oder BEINHALTET

Beitrag von mexman » Do 7. Sep 2017, 06:21

Hallo Freunde:
Ich habe nach viel Freude an der erstellten Dartenbank jetzt eine Macke gefunden:
Die .odb Im Anhang hat ein Filterformular (JimTableForm).
Diese bestimmt die Ergebnis-Auswahl aus der Tabelle JimTable1.
Derzeit funktioniert das Filter so, dass ich in das Filterformular (gelbe Felder) lediglich Namensbestandteile eingeben muss und das klappt MEIST auch gut.
Allerdings such ich z.B. nach "BRUCE ME" und ich bekomme auch alle "BRUCE AMES" angezeigt, weil ja "ME" in "AMES" enthalten ist -> FALSCHE PERSON.
Gibt es eine Möglichkeit, die Abfrage so umzuschreiben, dass ich irgendwie angeben kann, wenn ich den Suchbegriff EXAKT eingeben will (z.B. "ME" in Anführungsstrichen, Wildcards o. ä.) Falls sowas nicht geht, gäbe es die Option ein Schaltfeld einzusetzen ( Suchbegriff EXAKT / Suchbegriff BEINHALTET)?
Hoffe ich konnte das richtig ausdrücken.
Gruss
Michael
Dateianhänge
JimTest3.zip
Musterdatei für Abfrage
(278.28 KiB) 154-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von RobertG » Do 7. Sep 2017, 17:33

Hallo Michael,

damit Du einen Unterschied zwischen den genauen Inhalten und Inhalten, die irgendwo im Wort vorkommen, hin bekommst, musst Du die Abfrage umschreiben. Das geht nicht über eine externe Filter-Tabelle. Die speist ja nur die Abfrage, und die hast Du bereits festgeschrieben.

Ich würde das über einen Filter versuchen, den ich direkt in das Formular schreibe:

Code: Alles auswählen

SUB FilterSetzen
DIM oDoc AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM stFilter As String
oForm = thisComponent.Drawpage.Forms.getByName("MainForm")
oFeld = oForm.getByName("Filter")
stFilter = oFeld.Text
oForm.filter = " UCASE(""Name"") LIKE '%'||'" + UCASE(stFilter) + "'||'%'"
oForm.ApplyFilter = TRUE
oForm.reload()
End Sub
... direkt aus dem Handbuch kopiert. Jetzt kannst Du auch unterschiedliche Felder Deines Filter-Formulars ausfragen und entsprechend den Filter unterschiedlich gestalten. Hier ist nur ein Feld "Filter" abgefragt. In dem Hauptformular wird das Formular dann gefiltert nach dem Inhalt dieses Feldes, der unabhängig von der Position und unabhängig von Groß- und Kleinschreibung greift. Der Text, der in oForm.filter steht, müsste jetzt abhängig von einem Auswahlfeld umgeschrieben werden können:

Code: Alles auswählen

...
IF oForm.getByName("Genau").CurrentValue = 1 THEN
oForm.filter = " ""Name"" = '" + stFilter + "'"
ELSE
oForm.filter = " UCASE(""Name"") LIKE '%'||'" + UCASE(stFilter) + "'||'%'"
END IF
...
Damit filterst Du über Felder, die alle in gleichen Formular stehen, nicht wie bisher in einem Formular, das neben dem anderen Formular steht oder als Hauptformular für ein Unterformular dient. Gegebenenfalls kannst Du hier aber Anpassungen vornehmen.
Du könntest auch "Genau" einfach auf einen separaten Button legen. Dann musst Du allerdings beim Makro die Eigenschaften des auslösenden Ereignisses auslesen.

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

mexman
Beiträge: 30
Registriert: Mi 29. Mär 2017, 04:56

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von mexman » Do 7. Sep 2017, 17:51

Hallo Robert:
Danke für die schnelle Reaktion!
Ich habe das im Handbuch auch gefunden, aber gehofft, eine MIR leicht verständliche Fassung zu bekommen ;-)
Das verstehe ich nicht..... ich habe die Datenbank soweit (mit viel Hilfe aus dem Forum und 4 Wochen lesen, lesen, lesen und probieren) hinbekommen. Das ist jetzt mehr als ein halbes Jahr her und eigentlich hatte ich nicht vor, mich nochmal genauer damit auseinanderzusetzen, sehe jetzt aber dieses funktionelle Problem und muss nochmal drangehen....Ich bin aber fachlich eine Null und müsste bei Adam und Eva mit einem Kurs anfangen ;-)

Werde versuchen Deine Antwort Stück für Stück auseinander zu nehmen und zu verstehen :-(

Gruss aus Mexiko
Michael

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von RobertG » Do 7. Sep 2017, 19:05

Hallo Michael,

ich könnte mich eventuell am Freitag darum kümmern und das an der gewünschten Stelle einbauen. Warte einfach bis morgen Abend.

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

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von RobertG » Fr 8. Sep 2017, 16:27

Hallo Michael,

im Anhang die Datenbankdatei mit einem neuen Formular, in dem für das Filtern 2 Buttons vorhanden sind. Ich habe die Formularkonstruktion etwas umgestellt. Die Buttons speichern so zur Zeit nicht mehr in der Tabelle "Filter". Gegebenenfalls müsste hier ein oFormStart.UpdateRow() eingefügt werden.

... der Anhang ist übrigens tatsächlich als *.zip-Datei gepackt ... keine *.odb-Datei mit falscher Dateiendung ...

Allerdings hast Du noch Berichte, die auch entsprechend angepasst werden könnten/müssten.

Gruß

Robert
Dateianhänge
JimTest3.zip
(272.43 KiB) 167-mal heruntergeladen
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

mexman
Beiträge: 30
Registriert: Mi 29. Mär 2017, 04:56

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von mexman » Fr 8. Sep 2017, 19:15

Hallo Robert:
Ganz herzlichen Dank.
"... der Anhang ist übrigens tatsächlich als *.zip-Datei gepackt " -> Sowas beherrsche ich noch ohne Forums-Hlfe ;-)
Aber der Rest ist mir ein Rätsel.
Das Filter im Formular funktioniert halbwegs (eigentlich wollte ich nur die SCHREIBWEISE "exakt" haben, nicht Gross/Kleinschreibung. Darauf habe ich mit das mal angeschaut und bin bei den beiden Filer-Buttons schon hängerngeblieben: Beide (Filter VAR und Filter FIX) rufen die selbe Funktion auf (Standard.Module1.FilterSetzen (document, Basic))....wie kann dann da was unterschiedliches passieren?
Na gut....das mit dem EXAKTEN Gross/Kleinschreiben kann ich notfalls noch verkraften (oder evtl. hinbiegen), aber wie Du schon geschrieben hast: Ich habe keine Ahnung, wie ich den Bericht zum Laufen bekommen soll, denn der wird aus "Abfrage1" gespeist und diese Abfrage1 enthält ja jetzt falsche Daten!
"Gegebenenfalls müsste hier ein oFormStart.UpdateRow() eingefügt werden."
Das verstehe ich leider garnicht.

Gruss
Michael

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage EXAKT oder BEINHALTET

Beitrag von RobertG » Fr 8. Sep 2017, 21:02

Hallo Michael,
mexman hat geschrieben:
Fr 8. Sep 2017, 19:15
Das Filter im Formular funktioniert halbwegs (eigentlich wollte ich nur die SCHREIBWEISE "exakt" haben, nicht Gross/Kleinschreibung. Darauf habe ich mit das mal angeschaut und bin bei den beiden Filer-Buttons schon hängerngeblieben: Beide (Filter VAR und Filter FIX) rufen die selbe Funktion auf (Standard.Module1.FilterSetzen (document, Basic))....wie kann dann da was unterschiedliches passieren?
Von den Buttons wird die Zusatzinformation aus den allgemeinen Eigenschaften ausgelesen: oField.Tag
Damit kannst Du dann von jedem Button aus unterschiedliche Filteraktionen starten.
Die Groß- und Kleinschreibung kannst Du natürlich in dem Makro wieder egalisieren - wie das zu machen ist siehst Du vielleicht bei dem 2. Filter, der dann eintritt, wenn das Ergebnis nicht exakt gleich sein soll.
mexman hat geschrieben:
Fr 8. Sep 2017, 19:15
"Gegebenenfalls müsste hier ein oFormStart.UpdateRow() eingefügt werden."
Das verstehe ich leider garnicht.
Ist vielleicht zu Beginn des Makros sinnvoll, damit die im Filter angegebenen Daten auch sicher in die Filtertabelle übertragen werden.

Soweit ich das im Makro gesehen habe wird aber der Bericht über Makros in eine Tabelle geschrieben und hat nichts mit einer Abfrage zu tun, oder? Und das kann dann auch über ein Makro wieder in die gleiche Richtung gebogen werden wie der Filter des Formulars.

Ich schaue mir das einmal im Laufe des Samstags noch einmal an.

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

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 ❤️

Antworten