🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

(gelöst) Abfrage nur nach Ziffern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 16:26

Hallo,

für eine Inverssuche unter meinen Telefonnummern hätte ich gerne eine Abfrage, die enthaltene Leerzeichen oder Bindestriche in Rufnummern ignoriert.

Beispiel: Die Handynummer 01715-123 456 789 soll auch gefunden werden, wenn man "5123" oder "56789" eingibt.

Der entsprechende Teil meiner Abfrage ist im Moment:

Code: Alles auswählen

 AND ( LOWER ( "Nummer" ) LIKE LOWER ( '%' || NULLIF ( :Nummernteil, '' ) || '%' ) ) 
, also vorne und hinten Wildcard hab ich schon, nur dazwischen ist es etwas störrisch... :lol:

Gruß
Freischreiber
Zuletzt geändert von Freischreiber am Mo 10. Aug 2015, 16:35, insgesamt 1-mal geändert.

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 17:49

Hallo nikki,

LOWER hab ich drin, weil in derselben Tabelle alle Kontakte sind, auch Mailadressen, nach denen ich auch flexibel suchen möchte.
TRIM entfernt evtl. Leerzeichen
Bei mir nicht. Liegt vielleicht an der externen HSQL-DB. Es scheint auch, selbst wenn es geht, nur für Leerzeichen zu gehen. In meiner Tabelle sieht es aber wild aus, / und - kommen auch vor.

Danke trotzdem,
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

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

Re: Abfrage nur nach Ziffern

Beitrag von RobertG » Di 17. Mär 2015, 17:52

Hallo Freischreiber,

Du musst irgendwie die innenliegenden Leerzeichen (TRIM kümmert sich nur um die davor und dahinter) sowie andere Zeichen entfernen.

Code: Alles auswählen

AND REPLACE(REPLACE("Nummer",' ',''),'-','') LIKE '%' || :Nummernteil || '%'
Das LOWER hast Du, wenn ich Dich richtig verstehe, nur aus Gewohnheit drin - hier bringt es ja nichts, da keine Großschreibung vorhanden ist ...

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

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 19:22

Hallo Robert,

das LOWER ist eben deshalb, weil in der selben Tabelle alle Kontakte aufgelistet sind, auch Mailadressen, wo mal was großgeschrieben sein kann. Und manche Mailadressen sind so nichtssagend, daß sie wirklich eine Inverssuche brauchen.

Sehe ich es richtig, wenn ich mit REPLACE auch noch / (Schrägstriche) in Telefonnummern unterdrücken will, muß man dreifach schachteln?

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

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

Re: Abfrage nur nach Ziffern

Beitrag von RobertG » Di 17. Mär 2015, 20:45

Hallo Freischreiber,
Freischreiber hat geschrieben: das LOWER ist eben deshalb, weil in der selben Tabelle alle Kontakte aufgelistet sind, auch Mailadressen, wo mal was großgeschrieben sein kann. Und manche Mailadressen sind so nichtssagend, daß sie wirklich eine Inverssuche brauchen.
Du meinst vermutlich nicht "Tabelle", sondern "Feld", das Du in diesem Fall nicht nur für Telefonnummern nutzt. Da Du aber tatsächlich nur nach einer Ziffernfolge suchst kann doch die Kleinschreibung nichts bewirken, oder?
Freischreiber hat geschrieben: Sehe ich es richtig, wenn ich mit REPLACE auch noch / (Schrägstriche) in Telefonnummern unterdrücken will, muß man dreifach schachteln?
Genau, alles, was raus soll, kannst Du so herauslöschen, bevor Du nach einer Ziffernfolge suchst.

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

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Do 19. Mär 2015, 19:07

Hallo Robert,

richtig, es gibt ein Feld, das für Rufnummern und Mailadressen genutzt wird, die nach einem weiteren Feld, Nummern-ID, unterschieden werden.

Aber ich sehs ein, nach T-online-Mailadressen kann ich mit dieser Abfrage sowieso nicht mehr suchen, da muß eine zweite Abfrage her...

Funktioniert aber gut, danke!

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Mo 10. Aug 2015, 16:35

So, jetzt habe ich auch die Inverssuche nach Rufnummern oder Mailadressen mit einem Formularfilter statt mit einer Parameterabfrage realisiert, mit diesem Makro:

Code: Alles auswählen

Sub Formularfilter_Inverssuche(oEvent AS OBJECT)
	oForm = thisComponent.Drawpage.Forms.getByName("Form_Inverssuche") 'Das Formular beruht auf einer Abfrage aller Kontakt-Datensätze.
	oFeld = thisComponent.Drawpage.Forms.getByName("Form_Inverssuche").getByName("txtFiltertext")
	stSuchtext = LCASE(oFeld.text) 'ermöglicht Großbuchstaben in Suchfeld
	oForm.Filter = "LCASE(Nummer) LIKE '%"+stSuchtext+"%' OR REPLACE(REPLACE(REPLACE(LCASE(Nummer), ' ', '' ), '-', '' ), '/', '' ) LIKE '%"+stSuchtext+"%'" 'Mit Leerzeichen- und Zwischenstrichoption
	'Spaltennamen können auch doppelt maskiert werden (""Nachname"")
	oForm.reload
End Sub
Durch das OR werden sowohl zusammenhängende Zeichenketten wie "...@t-online.de" gefunden als auch Rufnummern, bei denen der - Strich stört wie "089-08150816" bei dem Suchtext "0890". Hätte ich auch gleich drauf kommen können :?

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
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