![]() |
Filter setzen mit mehrern Kriterien auf ein ADOB Verbindung
Hi Leute,
ich hoffe einer kann mir weiterhelfen. Folgendes möchte gerne umsetzen. Ich verbinde mich zu einer Datenbank OleObject('ADODB.Connection'). Nun möchte ich gerne einen Filter von mehreren Kriterien setzen. Meine Lösung sieht wie folgt aus:
Delphi-Quellcode:
Ich möchte gerne, dass mit "oder" umsetzen, so dass mindestens 1 Kriterium erfüllt ist und der Filter mir etwas anzeigt. Ich habe es schon mit "|" probiert aber ich verstehe den Syntax nicht.
sFilter := '(&(&(&(Objectclass=person)(catmaildropcode='+ kriterium_1 + ')(catmaildropfaccode='+ kriterium_2 + ')(catafltnorgcode='+ kriterium_3 + '))))';
Vielen Dank, Sven |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Mal mit or versucht
|
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Ja habe ich auch. Aber da bricht die Procedure ab.
Mein größtes Problem ist, wie ich den Filter mit mehreren Kriterien überhaupt zusammen bauen muss und ob der Syntax überhaupt stimmt. Gruß, Sven |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Hallo Sven,
du willst einen LDAP Suchfilter für einen Verzeichnisdienst aufbauen? Hier in Zeitlupe - wegen der Übersichtlichkeit:
Delphi-Quellcode:
Die Syntax wird in RFC 1960 beschrieben, wenn ich nicht irre. Was dir noch fehlt ist eine Escape-Funktion, mit der du die eventuell in deinen Suchkriterien vorkommenden Metazeichen maskierst.
var
sFilter: string; begin sFilter := Format('(%s=%s)', ['catmaildropcode', kriterium_1]); sFilter := sFilter + Format('(%s=%s)', ['catmaildropfaccode', kriterium_2]); sFilter := sFilter + Format('(%s=%s)', ['catafltnorgcode', kriterium_3]); sFilter := Format('(|%s)', [sFilter]); sFilter := Format('(&(objectClass=person)%s)', [sFilter]); end; Getippt und nicht getestet. Grüße vom marabu |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Danka Marabu,
hat alles bestens geklappt. Genau das brauchte ich. Schönen Tag noch. Grüße aus dem sonnigen Kiel. |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Ich muss das Thema nochmal auftauen.
Die Filter funktionieren aber er scheint doch eine UND Verknüpfung zu erstellen. Die Treffer sind nur wenn alle 3 Kriterien vorhanden sind. WARUM??? Ich hoffe kann mir den Fehler erklären. Weil ich komm mit dem Syntax nicht klar. Vielen Dank im Voraus. |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Hallo Sven,
in meinem Beispiel werden die drei Kriterien "ODER"-verknüpft - das macht der vertical bar. Die objectClass wird mit dem restlichen Filter "UND"-verknüpft - das geschieht über das ampersand. Soviel zur Syntax. Probleme entstehen, wenn du nach leeren Strings suchen willst - das ist eigentlich eine Existenzfrage: (!(attr=*)) findet alle Einträge ohne Attribut attr. (|(!(attr=*))(attr=value)) findet solche Einträge, bei denen das Attribut entweder fehlt oder einen bestimmten Wert hat. Schick mir mal Beispieldaten im LDIF Format und deinen Suchfilter, bei dem das Problem auftritt. Grüße vom marabu |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Den Syntax habe ich jetzt verstanden und es ist alles so wie du theoretisch beschrieben hast eingestellt.
Das mit dem LDIF ist schwierig weil es Firmendaten sind und außerdem handelt es sich nicht direct um ein Active Directory Serivce sonder um ADAM. Ich habe kein Plan, was da falsch ist?
Delphi-Quellcode:
...
sFilter := Format('(%s=%s)', ['xxxxx', cgdsFilter_1]); sFilter := sFilter + Format('(%s=%s)', ['yyyyy', cgdsFilter_2]); sFilter := sFilter + Format('(%s=%s)', ['zzzzz', cgdsFilter_3]); sFilter := Format('(|%s)', [sFilter]); sFilter := Format('(&(objectClass=Person)%s)', [sFilter]); ... |
Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind
Hallo Sven,
bau dir eine Spielecke auf deinem LDAP-Server und versuche die Situation ohne sensible Firmendaten mit möglichst simplen Objekten nachzustellen. Wenn du den Fehler so reproduzieren kannst, dann exportiere die Beispieldaten als LDIF-Datei. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz