1

There's a csv file like so, I can read it easily enough with the code below. But as you can see there are multiple name1, group1, status1, name2, group2, etc columns in the csv. Each user will have a different number of columns. I was wondering if there is a way to use wild cards where I'm calling objRecordset.Fields.Item("Group1") something like ("Group%") or if I can auto increment the number until no records are found

UserName,Domain,Site,MCO,Name1,Group1,Status1,Name2,Group2,Status2,Name3,Group3,Status3 Paolina,AA,Athens,Greece,Adobe Acrobat Pro,ACROBAT009,Live,,,,,, George,AA,Athens,Greece,SpotFire 2.20,SPOTFIRE220,Live,,,,,,

option explicit

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001

Dim strPathtoTextFile, objConnection, objRecordSet, objNetwork
Dim wshshell, Username

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

Set objNetwork = CreateObject("WScript.Network")
userName = objNetwork.UserName

strPathtoTextFile = "C:\Hunter\vbs\" 'must have a trailing \

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & strPathtoTextFile & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited"""

objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" & UserName & "'", _
          objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    Wscript.Echo "Group: " & objRecordset.Fields.Item("Group1")
    Wscript.echo "Status:" & objRecordset.Fields.Item("Status1")
    objRecordSet.MoveNext
Loop

1 Answer 1

1

Your example suggests that the maximum group number is the last field, so perhaps:

objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" _
      & UserName & "'", _
      objConnection, adOpenStatic, adLockOptimistic, adCmdText
MaxNum = _
      Replace(objRecordset.Fields(objRecordset.Fields.Count-1).Name,"Status","")
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    For i=1 to MaxNum
       Wscript.Echo "Group: " & objRecordset.Fields.Item("Group" & i)
       Wscript.echo "Status:" & objRecordset.Fields.Item("Status" & i)
    Next
    objRecordSet.MoveNext
Loop

I have not tested, but the general idea should hold.

Sign up to request clarification or add additional context in comments.

1 Comment

Why use .recordCount to calculate .Fields.Count?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.