提问人:Pau Serra Sans 提问时间:8/30/2023 更新时间:8/30/2023 访问量:31
ASP 经典字典 [键、数组] 错误
ASP Classic Dictionary [Key, Array] Error
问:
我有一个函数可以将 Excel 文件上传到我的服务器并将此文件保存在字典 [Key, Array] 中。
我循环 Excel 文件的行,使用该行的值创建一个数组,并将该数组添加到字典中,如下所示:
Set excel = Server.CreateObject("ADODB.Recordset")
excel.Open sql, conn
Set newExcel = Server.CreateObject("Scripting.Dictionary")
i = 0
Do Until excel.EOF
newRow = Array(excel(0), excel(1), excel(2), excel(3), excel(4), excel(5), excel(6), excel(7))
newExcel.Add i, newRow
i = i + 1
excel.MoveNext
Loop
然后我尝试访问填充的字典以打印值,但我在 .Response.Write row(j)
For Each k In newExcel.Keys
row = newExcel.Item(k)
For j = LBound(row) To UBound(row)
Response.Write row(j)
Next
Next
错误:
ADODB.Field error '80020009'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
感谢您的帮助!
答:
1赞
user692942
8/30/2023
#1
该错误是因为您复制的是对象,而不是其基础值。这意味着当您访问数组时,它会尝试访问需要活动数据库连接的对象。如果此后关闭了数据库连接,则将收到错误;ADODB.Field
ADODB.Field
ADODB。字段错误“80020009”
BOF 或 EOF 为 True,或者当前记录已被删除。请求的操作需要当前记录。
调整此线
newRow = Array(excel(0), excel(1), excel(2), excel(3), excel(4), excel(5), excel(6), excel(7))
自
newRow = Array(excel(0).Value, excel(1).Value, excel(2).Value, excel(3).Value, excel(4).Value, excel(5).Value, excel(6).Value, excel(7).Value)
将存储基础值,而不是对象本身。
评论
ADODB。数组中的字段
对象,但它连接到需要活动数据库连接的 。相反,只需存储值,即 .ADODB.Recordset
Array(excel(0).Value, etc...