2014-02-17 3 views
0

Мне нужно отправить запрос в LDAP в качестве подстановочного знака. У меня есть следующий код:Запрос VBScript LDAP в Array

Function SearchLDAP(strUsrName) 

Const ADS_SCOPE_SUBTREE = 2 

Set objConnection = CreateObject("ADODB.Connection") 
Set objCommand = CreateObject("ADODB.Command") 
objConnection.Provider = "ADsDSOObject" 
objConnection.Open "Active Directory Provider" 
Set objCommand.ActiveConnection = objConnection 

objCommand.Properties("Page Size") = 1000 
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 

objCommand.CommandText = _ 
    "SELECT cn FROM 'LDAP://DC=SYSTEL,DC=LOCAL' WHERE " _ 
    & "objectCategory='user' AND cn = '" &strUsrName&"*'" 
Set objRecordSet = objCommand.Execute 
objRecordSet.MoveFirst 

Do Until objRecordSet.EOF 
    'Wscript.Echo objRecordSet.Fields("cn").Value 
    Dim strReturnUser : strReturnUser = objRecordSet.Fields("cn").Value 
    objRecordSet.MoveNext 
Loop 

SearchLDAP = strReturnUser 

End Function 

Если я бегу MsgBox SearchLDAP («А»), он будет отображать MessageBox только с последней записи. Если я раскомментирую строку «Wscript.Echo objRecordSet.Fields (« cn »). Значение« будет выводиться для консоли всех записей.

Что мне нужно, чтобы иметь все возвращаемые значения, отображаемые в окне сообщения, например: «Пользователь 1; Пользователь2; Пользователь3;»; и т. д. Не отдельные сообщения, а все записи на одном выходе.

мне нужно сделать это, просто запустив функцию, как «MsgBox SearchLDAP (» А "), не имея„MsgBox“в самой функции. Смысл?

Я не могу показаться, чтобы выяснить если это должно быть в массиве, и если да, то как получить записи в 1 массив, который я могу затем выход.

Спасибо advnace!

ответ

1

Вы почти получили. Переместите переменную strReturnUser снаружи из Do Loop и просто продолжайте строить струну.

Dim strReturnUser 

strReturnUser = "" 

Do Until objRecordSet.EOF 
    'Wscript.Echo objRecordSet.Fields("cn").Value 
    strReturnUser = strReturnUser & objRecordSet.Fields("cn").Value & "; " 
    objRecordSet.MoveNext 
Loop 

SearchLDAP = strReturnUser 
+0

Удивительный! Спасибо за быстрый ответ. Именно то, что мне нужно. – user3320719

Смежные вопросы