【问题标题】:Using vbscript and setting an ADO recordset to a variable使用 vbscript 并将 ADO 记录集设置为变量
【发布时间】:2013-03-19 21:16:52
【问题描述】:

我有很多 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

谢谢。

【问题讨论】:

    标签: vbscript adodb


    【解决方案1】:

    如果

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

    输出“包含文件名的记录集部分”(您感兴趣的)AND

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

    您是否尝试“将 [那个值] 保存为变量”然后

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

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

    Set var = non-object 是造成您麻烦的原因 - 正如我所假设的那样 - 被您使用 EVIL 全局 On Error Resume Next 所隐藏。

    【讨论】:

    • 我实际上尝试过设置和不设置,但我认为阻碍我的主要事情是由于邪恶的错误检查而看不见。我已经禁用了那部分,所以我实际上可以看到发生了什么。它实际上在 objRecordset.Open 查询上停止。它正在输出“(null) (32, 1) : (null)”。
    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多