- PR -

ADSIでユーザー表示名の部分一致検索を行うには

1
投稿者投稿内容
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2006-08-21 12:48
【環境】
Windows2003 std (ActiveDirectory)
WindowsXP SP2 (スクリプトを動かすパソコン)

【やりたいこと】
ADSIでユーザー表示名(displayName)の部分一致検索を行いたい。

【やったこと】
次のようなスクリプトを記述しました。
Access2003から行っています。

コード:

    Dim cn As ADODB.Connection
    Dim cm As ADODB.Command
    Dim rs As ADODB.Recordset
    Dim SQL As String
    Dim ret

    Set cn = New ADODB.Connection
    cn.Open "Provider=ADsDSOObject;"

    Set cm = New ADODB.Command
    cm.ActiveConnection = cn
    SQL = "Select * "
    SQL = SQL & " from 'LDAP://ad-server' "
    
    'OK
    SQL = SQL & " where objectClass = 'user' and displayName = 'TestUser'"
    'NG
    'SQL = SQL & " where objectClass = 'user' and displayName like '%est%'"
    
    cm.CommandText = SQL
    cm.Properties("Page Size") = 1000
    cm.Properties("Timeout") = 300
    cm.Properties("Searchscope") = 2
    cm.Properties("Cache Results") = False
    
    Set rs = cm.Execute
    rs.MoveFirst
    
    Do Until rs.EOF
        Debug.Print rs(0).Value
        rs.MoveNext
    Loop




NGのコメントアウトを外すと
『-2147217900:コマンド処理中に1つ以上のエラーが発生しました。』
となります。

【質問】
1.そもそもこの構文でLikeがつかえるのか?
2.Likeが使えない場合部分一致で検索できる術があるのか?

ご助言いただければと思います。よろしくお願いします。
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2006-08-21 13:57

自己レスです。

下記にあるように、ちょっとだまされた気分ですが、
displayName = '*est*'"と記述すればいけました。
お騒がせしました。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/sql_dialect.asp

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-08-25 02:04
LDAP query 覚えたほうがいいとおもいますよ。
1

スキルアップ/キャリアアップ(JOB@IT)