AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Filter setzen mit mehrern Kriterien auf ein ADOB Verbindung
Thema durchsuchen
Ansicht
Themen-Optionen

Filter setzen mit mehrern Kriterien auf ein ADOB Verbindung

Ein Thema von Piro · begonnen am 6. Jun 2007 · letzter Beitrag vom 31. Aug 2007
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Filter setzen mit mehrern Kriterien auf ein ADOB Verbindung

  Alt 6. Jun 2007, 14:59
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:

sFilter := '(&(&(&(Objectclass=person)(catmaildropcode='+ kriterium_1 + ')(catmaildropfaccode='+ kriterium_2 + ')(catafltnorgcode='+ kriterium_3 + '))))'; 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.

Vielen Dank, Sven
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 6. Jun 2007, 15:02
Mal mit or versucht
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 6. Jun 2007, 15:53
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 6. Jun 2007, 16:27
Hallo Sven,

du willst einen LDAP Suchfilter für einen Verzeichnisdienst aufbauen? Hier in Zeitlupe - wegen der Übersichtlichkeit:

Delphi-Quellcode:
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;
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.

Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 7. Jun 2007, 07:37
Danka Marabu,

hat alles bestens geklappt. Genau das brauchte ich. Schönen Tag noch.

Grüße aus dem sonnigen Kiel.
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 31. Aug 2007, 10:28
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 31. Aug 2007, 11:08
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
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 31. Aug 2007, 12:31
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]);
...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Filter setzen mit mehrern Kriterien auf ein ADOB Verbind

  Alt 31. Aug 2007, 18:57
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz