Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Internes Limit bei SELECT aus Active Directory?

13 views
Skip to first unread message

Sebastian Kaps

unread,
Oct 4, 2007, 4:43:50 AM10/4/07
to
Hallo!

Ich lese per SELECT aus einem Active Directory alle Benutzergruppen aus:

Set objconn = CreateObject("ADODB.Connection")
objconn.Provider = "ADsDSOObject"
objconn.Open "Active Directory Provider"

'Command Objekt instanziieren und definieren
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objconn

'Pfad ins AD holen
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = objRoot.Get("defaultNamingContext")
Set objDomain = GetObject("LDAP://" & strDomain)

'Query aufbauen
strSQL = "SELECT distinguishedName FROM 'LDAP://" & strDomain & "'" & " WHERE objectClass='Group'"

'und Befehl dem CommandObject übergeben
objCommand.CommandText = strSQL

'Query ausführen
Set objRS = objCommand.Execute
[...]

Problem: Ich bekomme nur 1000 Datensätze zurück, obwohl es mehr Gruppen
gibt. Gibt es da ein internes Limit? Wie bekomme ich alle Gruppen
ausgelesen?


--
Ciao, Sebastian

Henry Habermacher [MVP Access]

unread,
Oct 4, 2007, 5:09:02 AM10/4/07
to
Hallo Sebastian

"Sebastian Kaps" wrote:
> Ich lese per SELECT aus einem Active Directory alle Benutzergruppen aus:
>
> Set objconn = CreateObject("ADODB.Connection")
> objconn.Provider = "ADsDSOObject"
> objconn.Open "Active Directory Provider"
>
> 'Command Objekt instanziieren und definieren
> Set objCommand = CreateObject("ADODB.Command")
> objCommand.ActiveConnection = objconn

Beim command Objekt kannst Du die Page Size angeben. Diese ist defaultmässig
auf 1000 eingestellt. Versuch mal folgendes:

objCommand.Properties("Page Size") = 10000

nachdem Du das Command Objekt instanziiert hast.

HTH
Henry
--
Keine E-Mails auf Postings
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von MS Access (Taste F1)
Downloads: http://www.dbdev.org


Sebastian Kaps

unread,
Oct 4, 2007, 1:26:11 PM10/4/07
to
// Sebastian Kaps writes:

> [...]

For the records: es handelt sich um ein internes Limit des AD. Umgehen
kann man das ganze indem man objCommand.Properties("Page Size") auf
einen geeigneten Wert setzt.

--
Ciao, Sebastian

Michel Fouquet

unread,
Oct 4, 2007, 7:37:39 PM10/4/07
to
Hallo,

Sebastian Kaps schrieb:


> For the records: es handelt sich um ein internes Limit des AD. Umgehen
> kann man das ganze indem man objCommand.Properties("Page Size") auf
> einen geeigneten Wert setzt.

also genau das, was Henry geschrieben hatte.

Allerdings stellt sich die Frage, was denn ein "geeigneter" Wert ist.
Durch Glaskugelmodus zu ermitteln?

mfg,
Michel

Sebastian Kaps

unread,
Oct 5, 2007, 1:32:14 AM10/5/07
to
// Michel Fouquet writes:

> also genau das, was Henry geschrieben hatte.

Hm, ich habe bisher keine andere Antwort als Deine auf das Posting
erhalten.

> Allerdings stellt sich die Frage, was denn ein "geeigneter" Wert ist.
> Durch Glaskugelmodus zu ermitteln?

Man kann sich ja die Anzahl der zurückgelieferten Datensätze ausgeben
lassen. Für meine Zwecke reicht es aus, die Page Size an diesem Wert zu
orientieren, natürlich mit genügend Luft nach oben. Falls jemals der
Fall eintreten sollte, daß die Anzahl der zurückgelieferten Datensätze
gleich der Page Size ist, gebe ich eine Meldung aus, die darauf
hinweist.
Um das universeller zu gestalten, könnte man natürlich auch eine
Schleife basteln, die die Anzahl der Datensätze prüft und die Page Size
in jedem Durchlauf solange verdoppelt bis die Anzahl der DS kleiner als
die PS ist. Die Lösung kostet aber vermutliche einiges an Performance.

--
Ciao, Sebastian

Peter Doering

unread,
Oct 5, 2007, 5:02:16 AM10/5/07
to
Hallo,

Sebastian Kaps wrote:

> // Michel Fouquet writes:
>
>> also genau das, was Henry geschrieben hatte.
>
> Hm, ich habe bisher keine andere Antwort als Deine auf das Posting
> erhalten.

Schau mal hier:

http://groups.google.com/group/microsoft.public.de.access/browse_frm/thread/49d6403dc06fc774/f5eb2403f150b446#f5eb2403f150b446

Gruss - Peter

Michel Fouquet

unread,
Oct 5, 2007, 4:50:35 AM10/5/07
to
Hallo Sebastian,

Sebastian Kaps schrieb:


> // Michel Fouquet writes:
>
>> also genau das, was Henry geschrieben hatte.
>
> Hm, ich habe bisher keine andere Antwort als Deine auf das Posting
> erhalten.

Henrys Anwort von 11:09 (Message-ID:
<31DE7281-483B-4066...@microsoft.com>) lautete:

<zitat>


Beim command Objekt kannst Du die Page Size angeben. Diese ist
defaultmässig auf 1000 eingestellt. Versuch mal folgendes:

objCommand.Properties("Page Size") = 10000

nachdem Du das Command Objekt instanziiert hast.

HTH
Henry
</zitat>

>> Allerdings stellt sich die Frage, was denn ein "geeigneter" Wert ist.
>> Durch Glaskugelmodus zu ermitteln?

"Geeignet" hört sich halt meist so juristisch-schwammig an. :-)

> Man kann sich ja die Anzahl der zurückgelieferten Datensätze ausgeben
> lassen. Für meine Zwecke reicht es aus, die Page Size an diesem Wert zu
> orientieren, natürlich mit genügend Luft nach oben. Falls jemals der
> Fall eintreten sollte, daß die Anzahl der zurückgelieferten Datensätze
> gleich der Page Size ist, gebe ich eine Meldung aus, die darauf
> hinweist.
> Um das universeller zu gestalten, könnte man natürlich auch eine
> Schleife basteln, die die Anzahl der Datensätze prüft und die Page Size
> in jedem Durchlauf solange verdoppelt bis die Anzahl der DS kleiner als
> die PS ist. Die Lösung kostet aber vermutliche einiges an Performance.

Danke für die Rückmeldung.

mfg,
Michel

0 new messages