Jump to content
Sign in to follow this  
mojomatt

MoveFirst not working

Recommended Posts

mojomatt

Hi,

For some reason I'm unable to move to the first record in the recordset when using the following code.

Basically I'm querying AD for a list of all computer objects, showing the count of objects (which moves your cursor to the last record), then I'm trying to move back to the first record so that my Do loop will start with the first record. My count of objects in the recordset is 58 but my do loop shows 1 record then exits. If I put the recordcount statement after the Do loop, all is well. Any thoughts?

Const $adUseClient = 3

        $strDomain="mydomain.com"
        $strDistinguishedDomain="dc=mydomain,dc=com"
        $strInstallerUserName="admin"
        $strInstallerUserPassword="mypassword"


        $strBase = "<LDAP://" & $strDomain & "/" & $strDistinguishedDomain & ">"
        ;~ ' Filter on computer objects.
        $strFilter = "(objectClass=computer)"
        ;~ ' Comma delimited list of attribute values to retrieve.
        $strAttributes = "DistinguishedName"
        ;~ ' Construct the LDAP syntax query.
        $strQuery = $strBase & ";" & $strFilter & ";" & $strAttributes & ";subtree"

        $objadoConnection.Open ("Provider=ADsDSOObject;cursorLocation="& $adUseClient&";User ID=" & $strDomain  & "\" & $strInstallerUserName& ";Password=" & $strInstallerUserPassword & ";Encrypt Password=True;")
        $objadoCommand.ActiveConnection = $objadoConnection
        $objadoCommand.CommandText = $strQuery
        $objadoCommand.Properties("Page Size") = 1000
        $objadoCommand.Properties("Timeout") = 30
        $objadoCommand.Properties("Cache Results") = False

        ;~ ' Run the query.
        $rsadoRecordset = $objadoCommand.Execute
        
        
        
        ;~ ' Display number of records.
        ;~ ' This positions the cursor at the end of the recordset.
                msgbox (0,"",$rsadoRecordset.RecordCount)
        ;~ ' Move the cursor back to the beginning.
        $rsadoRecordset.MoveFirst  ;  I couldn't get this working
            
        

        ;~ ' Enumerate the resulting recordset.
        Do
        ;~     ' Retrieve values and display.
            $strTemp = $rsadoRecordset.Fields("DistinguishedName").Value
            MsgBox(0,"",$strtemp)
            $rsadoRecordset.MoveNext
        Until $rsadoRecordset.EOF

Share this post


Link to post
Share on other sites
mojomatt

I figured out my own problem I wasn't caching the results of the query so apparently you only get 1 shot to parse through the data. Once I set the cache results property to TRUE, all was well.

Thanks

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.