【问题标题】:RecordSet methods generates conversion error and SQL results have no BOF And EOFRecordSet方法产生转换错误,SQL结果没有BOF和EOF
【发布时间】:2012-03-03 01:35:33
【问题描述】:

我有一个通过 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

结果显示“No Begin or End”MsgBox 出现了。

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

我的sql语句是

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

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

关于如何解决这个问题的建议?

谢谢。

【问题讨论】:

  • 您好,您找到解决方案了吗?如果是,请将其发布或将当前答案标记为正确答案。谢谢!

标签: sql vbscript recordset


【解决方案1】:

我认为一个空记录集与 BOF 和 EOF 一起显示 - 这意味着您的测试是错误的(即您说 If Not Empty Then Msgbox "Empty" )

一些连接/锁定/编组方法不支持 RecordCount 属性,因为记录不会一次性全部传输到客户端。但是,遍历记录集应该可以解决问题。

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

【讨论】:

  • 我的sql语句是"SELECT id + '|' + 名称 + '|DogBreed' FROM 品种 WHERE c_id = 9",其中 MsgBox 记录stObject.Fields("") 说“1|Scottish Terr|DogBreed”
猜你喜欢
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多