用vbs查询csv

问题描述:

有这样一个csv文件,我可以用下面的代码很容易地阅读它。但正如你所看到的,csv中有多个name1,group1,status1,name2,group2等列。每个用户将有不同数量的列。我在想,如果有使用地方我打电话objRecordset.Fields.Item("Group1")("Group%")外卡的方式,或者如果我可以自动递增数,直到没有记录发现用vbs查询csv

用户名,域名,网站,MCO,NAME1组别1,状态1,名称2,第2组,状态2,名称3,组3,STATUS3 保利纳,AA,雅典,希腊,Adobe公司的Acrobat Pro,ACROBAT009,住,,,,,, 乔治,AA,希腊雅典的Spotfire 2.20,SPOTFIRE220 ,住,,,,,,

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 

你举的例子表明,最大群号码是最后一场,所以也许:

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 

我还没有测试,但一般的想法应该保留。

+0

为什么要使用.recordCount来计算.Fields.Count? – 2012-08-08 11:50:29

+0

你会接受错误吗? :) – Fionnuala 2012-08-08 11:51:53

+0

真棒,这是一种享受。谢了哥们 – chemist 2012-08-08 11:59:01