Einzelnen Beitrag anzeigen

mxh

Registriert seit: 31. Jan 2012
2 Beiträge
 
#1

Active Directory Ldap Abfrage Limit umgehen

  Alt 31. Jan 2012, 11:18
Hallo Delphi-Praxis,
ich weiß das Thema ist nicht neu und es gibt schon einige Einträge im Forum. Leider konnte ich das Problem nicht lösen.

Ich möchte gern alle Benutzer aus der AD auslesen. Leider bekomm ich nur 1000 Einträge vom Server zurückgeliefert. Ich weiß das dieses Limit vom Server ausgeht da dieser aus "Performancegründen" nur diese Anzahl zurückliefert.
Weil das Limit auf dem Server nicht geändert werden kann (möchte der Administrator nicht ) hab ich versucht mit PageSize die Anfrage zu limitieren. Das hat leider nicht funktioniert. Jetzt weiß ich nicht mehr weiter.

Ich benutze für die die Abfrage eine TADOConnection und TADOQuery beidesmal Komponenten die auf der Form liegen.


Dann führe ich folgenden Code aus :

Delphi-Quellcode:

 ADOConnection1.Connected := false;
  Fdomain := edDomain.Text;
  Fdomain := 'DC=' + StringReplace(Fdomain,'.', ',DC=', [rfReplaceAll, rfIgnoreCase]);
  ADOConnection1.ConnectionString := Format( 'Provider=ADsDSOObject;Password=%s;User ID=%s;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648', [edPasswort.Text, edName.Text + '@' + eddomain.Text] );
  ADOConnection1.Connected := True;
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT SN, Displayname,sAMAccountName, department FROM ' + QuotedStr('LDAP://'  + edserver.Text + '/'  +Fdomain ) + ' WHERE objectClass=' + QuotedStr('user') + ' AND objectCategory=' + QuotedStr('Person') ;
  Try
    ADOQuery1.Open;
    ADOQuery1.Recordset.PageSize:= 100;
  Except
    on e :exception do
    ShowMessage(e.Message);
  End;
Die "PageSize" hat überhaupt keinen Einfluss auf mein Ergebnis da der Recordcount der Query1 immer 1000 ist.

Hoffe ihr könnt mir helfen , danke im Vorraus
  Mit Zitat antworten Zitat