我有一个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或EOFIf 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
有关如何解决此问题的建议?
感谢。
答案 0 :(得分:1)
我认为一个空的记录集一起显示BOF和EOF - 这意味着你的测试是错误的方式(即你说如果不清空然后Msgbox“空” )
某些连接/锁定/编组方法不支持RecordCount属性,因为这些记录并非一次全部传输到客户端。但是,遍历记录集应该已经完成了这个技巧。
不确定为什么会出现类型转换错误,除非驱动程序根据它看到的第一行猜测一个Integer数据类型,然后在后续行中跳闸。对于SQL Server来说这很奇怪 - 它在Excel文本ODBC驱动程序上更为典型 你可以发布你的SQL吗?