这是一小段代码,它有我遇到的错误。 前面的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
标准表达式中的数据类型不匹配
答案 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”;如果仔细观察,你会发现更多。