Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT Distinct company .... aus LDAP (https://www.delphipraxis.net/83652-select-distinct-company-aus-ldap.html)

DerMike 5. Jan 2007 12:33

Datenbank: LDAP,SQL2000 • Zugriff über: ADO

SELECT Distinct company .... aus LDAP
 
Hallo,

da mir bei meinem letzten Problem so schnell geholfen wurde, probiere ich es gleich nochmals. :lol:

Ich baue eine Verbindung zu unserem Domänencontroler auf. (Funktioniert)
Ich lese Werte, in meinem Fall company, aus dem Active Directory aus. (Funktioniert)

So jetzt zu meinem Problem.

Da einige Mitarbeiter in der selben <company> angestellt sind, ich aber nur eine Liste aller <companys> haben möchte, sind einige Werte natürlich doppelt vorhanden. Diese Werte möchte ich nicht angezeigt bekommen.

Meine Lösung wäre gewesen:
SQL-Code:
SELECT distinct company
FROM 'LDAP://dc=domain,dc=local'
WHERE objectclass='user' and objectcategory='person'
Leider bekomme ich so immer ein Fehlermeldung..... :wall:

Im Projekt CRM.exe ist eine Exception der Klasse EOleExecption aufgetreten. Meldung: "Der Befehl enthielt mindestens einen Fehler'. Prozess wurde angehalten. Mit Einzelne Anw....... usw.

Kann mir jemand bei diesem Problem helfen???

marabu 5. Jan 2007 12:57

Re: SELECT Distinct company .... aus LDAP
 
Hallo Mike,

probiere es mal so:

SQL-Code:
SELECT DISTINCT i.company
FROM (
  SELECT company
  FROM 'LDAP://dc=domain,dc=local'
  WHERE objectclass='user' and objectcategory='person'
) AS i
Eigentlich gehört ja eine Referenz auf company in den person entry und dann gäbe es dein Problem überhaupt nicht.

Grüße vom marabu

Bernhard Geyer 5. Jan 2007 13:05

Re: SELECT Distinct company .... aus LDAP
 
Wenn der LDAP OLE DB-Provider kein Distinct kennt/kann mußt du in einem Nachverarbeitungsschritt (z.B. mit TStringList) dupletten killen.

DerMike 5. Jan 2007 13:19

Re: SELECT Distinct company .... aus LDAP
 
Hallo,

wiedermal kamen die Antworten sehr schnell. :thumb:

Leider funktioniert

SQL-Code:
SELECT DISTINCT i.company
FROM ( 
SELECT company
FROM 'LDAP://dc=tcm-i,dc=local'
WHERE objectclass='user' and objectcategory='person'
) AS i
nicht.

Mit Stringlisten habe ich noch nie gearbeitet. Wie bringe ich die Daten in eine Stringlist??

Delphi-Quellcode:
 ADOQuery1.Active := TRUE;
 while not ADOQuery1.Eof do begin
  meADGefunden.Lines.Add(VarToStr(ADOQuery1.FieldValues['company']));
  ADOQuery1.Next;
 end;
und ich vermute, ich werde die Ergebnisse anstatt in ein Memo in eine Stringliste schreiben.

marabu 5. Jan 2007 13:44

Re: SELECT Distinct company .... aus LDAP
 
Zitat:

Zitat von DerMike
Leider funktioniert ... nicht.

Stimmt, es kann erst dann funktionieren, wenn du eine heterogene Abfrage aufbaust. Dabei wird die äußere Abfrage mit dem normalen T-SQL Sprachumfang des MSSQL OLEDB Provider abgewickelt und die innere Abfrage über den LDAP Provider. Die Syntax müsstest du mal im Handbuch nachschlagen.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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