RecordSet方法生成转换错误,SQL结果没有BOF和EOF

时间:2011-08-05 17:17:54

标签: sql vbscript recordset

我有一个SQL查询,我已成功通过SQL程序执行。我最终将数据合并到一个具有标题(无列名称)的列中。

我试图通过Visual Basic程序执行同一个语句并执行

MsgBox recordstObject.Fields("")

返回所需的结果。

然而,执行

MsgBox recordstObject.RecordCount

返回

[Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting 
the varchar value 'A01' to data type int.

当我尝试使用while循环和recordstObject.MoveNext的组合时,也会出现此错误。我已经尝试通过

检查是否有BOF或EOF
If Not (recordstObject.BOF And recordstObject.EOF) Then
    MsgBox "No Begin or End"
Else
    MsgBox "There are records"
End If
recordstObject.MoveNext

事实证明,“没有开始或结束”的MsgBox出现了。

应该注意的是,我目前正在处理一个结果,但最终需要补偿多个结果。

我的sql声明是

SELECT id + '|' + name + '|DogBreed' FROM breeds WHERE c_id = 9

哪个MsgBox recordstObject.Fields("")1|Scottish Terr|DogBreed

有关如何解决此问题的建议?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为一个空的记录集一起显示BOF和EOF - 这意味着你的测试是错误的方式(即你说如果清空然后Msgbox“空”

某些连接/锁定/编组方法不支持RecordCount属性,因为这些记录并非一次全部传输到客户端。但是,遍历记录集应该已经完成​​了这个技巧。

不确定为什么会出现类型转换错误,除非驱动程序根据它看到的第一行猜测一个Integer数据类型,然后在后续行中跳闸。对于SQL Server来说这很奇怪 - 它在Excel文本ODBC驱动程序上更为典型 你可以发布你的SQL吗?