在Do循环中获取错误

时间:2016-10-14 18:32:03

标签: vbscript

这是一小段代码,它有我遇到的错误。 前面的SQL语句是这个

sqlStr = "SELECT Computer, Room_Num, Speed, Num_CPUs, OS_Type, HDD_Size 
FROM Computers WHERE Num_CPUs = 1 OR Speed < 2.1 OR HDD_Size < 300 ORDER BY Room_Num" 


Do Until objRecordSet.EOF
    recordsStr = recordsStr & objRecordSet.Fields.Item("Computer").Value & _ 
    vbTab & pad(objRecordSet.Fields.Item("HostName").Value,12) & _
    vbTab & pad(objRecordSet.Fields.Item("Room_Num").Value,14) & _
    vbTab & objRecordSet.Fields.Item("CPU_Type").Value & _
    vbTab & objRecordSet.Fields.Item("Speed").Value & _
    vbTab & objRecordSet.Fields.Item("Num_CPUs").Value & _
    vbTab & objRecordSet.Fields.Item("Bit_Size").Value & _
    vbTab & pad(objRecordSet.Fields.Item("OS_Type").Value,12) & _ 
    vbTab & objRecordSet.Fields.Item("Memory").Value & _
    vbTab & objRecordSet.Fields.Item("HDD_Size").Value & vbCrLf 
objRecordSet.MoveNext

第二行有错误:

recordsStr = recordsStr & objRecordSet.Fields.Item("Computer").Value & _

错误是:

  

项目无法在与所请求的名称或序号对应的集合中找到。

好的,不知怎的,我修复了这个错误,现在在我甚至没有触摸的代码行上获得一个新的错误...

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open dataSource
Set objRecordSet = CreateObject("ADODB.Recordset")
objRecordSet.Open sqlStr , objConnection
objRecordSet.MoveFirst

在行中出现错误

objRecordSet.Open sqlStr , objConnection

标准表达式中的数据类型不匹配

2 个答案:

答案 0 :(得分:2)

在您的查询中:

sqlStr = "SELECT Computer, Room_Num, Speed, Num_CPUs, OS_Type, HDD_Size 
FROM Computers WHERE Num_CPUs = 1 OR Speed < 2.1 OR HDD_Size < 300 ORDER BY Room_Num"

您通过以下字段computer, room_num, speed, num_cpus, os_type, and hdd_size但是......在您的Do循环中尝试获取Computer, Hostname, Room_Num, Cpu_Type, Speed, Num_CPUs, Bit_Size, OS_Type, Memory, HDD_Size

请注意,您的查询中不存在Hostname, bit_size, and memory。您不能从记录集中请求这些记录集,因为它们不在您的记录集中,因为它们不在您的查询中。尝试:

sqlStr = "SELECT Computer, Room_Num, Speed, Num_CPUs, OS_Type, HDD_Size, Hostname, Bit_size, memory 
FROM Computers WHERE Num_CPUs = 1 OR Speed < 2.1 OR HDD_Size < 300 ORDER BY Room_Num"

假设您的computers表格中有这些内容,它将开始运作。

答案 1 :(得分:-1)

这是为了表明您的错误消息(通常)是由丢失/拼写错误的字段名称引起的:

>> Set cn = CreateObject("ADODB.Connection")
>> cn.Open "DSN=AdvWork"
>> Set r = cn.Execute("SELECT TOP 1 AddressID FROM Person.Address")
>> WScript.Echo r("AddressID").Value
>> WScript.Echo r("AdressID").Value
>>
33
Error Number:       3265
Error Description:  Item cannot be found in the collection corresponding to the requested name or ordinal.

第一个'缺失的链接'是“HostName”;如果仔细观察,你会发现更多。