使用vbscript并将ADO记录集设置为变量

时间:2013-03-19 21:16:52

标签: vbscript adodb

我有很多PDF文件,我试图根据excel电子表格中的条件重命名。电子表格列出了ID,姓氏,名字。

| 123456 | Smith | Joe |

我可以打开并从excel中读取,并且可以创建ado连接并获得对我的查询的响应,但是无法找到一种方法来获取包含文件名的记录集的一部分并保存为变量。

我正在使用的代码:(更新为当前代码集)

'On Error Resume Next

LetterDirectory = InputBox("What letter are we scanning?")

DirectoryLocation = "C:\CLNotes\"
LetterDirectory = UCase(LetterDirectory)
SubDirectory = DirectoryLocation & LetterDirectory
FullDirectory = DirectoryLocation & LetterDirectory & "\*.pdf"

'Creating Excel objects
Set xl = CreateObject("Excel.Application")
Set xlBook = xl.Workbooks.Open("c:\CLnotes\dbo_Patient.xlsx")
Set xlSheet = xlBook.Worksheets(LetterDirectory)
xl.Visible = True

'Set Variables
xlRow = 1
totalRows = xl.WorksheetFunction.CountA(xlSheet.Range("A:A"))
oldFilename = 0

For xlRow = 1 to totalRows

LastName = xlSheet.Cells.Item(xlRow, 2).text
FirstName = xlSheet.Cells.Item(xlRow, 3).text
FullName = LastName & " " & Firstname
newFilename = xlSheet.Cells.Item(xlRow, 1).Text
'FullName = "b lorraine"

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open ("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
objRecordSet.Open ("SELECT System.FileName FROM SYSTEMINDEX WHERE Contains('" & FullName & "')"), objConnection
objRecordSet.MoveFirst
oldFilename = objRecordset.Fields.Item("System.FileName")
Do Until objRecordset.EOF
    Wscript.Echo objRecordset.Fields.Item("System.FileName")
    objRecordset.MoveNext
Loop
Next

感谢。

1 个答案:

答案 0 :(得分:1)

如果

Wscript.Echo objRecordset.Fields.Item("System.FileName")

输出'记录集中包含文件名'(您感兴趣)AND

的部分
Set oldFilename = objRecordset.Fields.Item("System.FileName")

是您尝试将[该值]保存为变量'THEN

oldFilename = objRecordset.Fields.Item("System.FileName")

将解决您的问题,因为Set仅用于分配对象(不是像字符串那样的“普通”数据类型)。

Set var = non-object导致您的麻烦 - 正如我所假设的 - 被您使用EVIL全局On Error Resume Next隐藏。