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