【问题标题】:Set a static field value in ADODB.RecordSet in VB6在 VB6 的 ADODB.RecordSet 中设置静态字段值
【发布时间】:2016-01-15 02:28:59
【问题描述】:

是否可以在 VB6 的 ADODB Recordset 中从查询中设置静态字段的值?

例如,假设我有一个记录集,其来源是:

SELECT col1, col2, '' AS staticCol
FROM myTable
WHERE 1 = 2

然后我通过调用myRS.AddNew 添加一条新记录。

在新记录中,所有三个字段均为 NULL。我可以毫无问题地设置 col1 和 col2:

myRS.Fields("col1").Value = "one"
myRS.Fields("col2").Value = "two"

但是当我尝试设置 staticCol 时,我得到一个错误。

myRS.Fields("staticCol").Value = "three"
-->Run-time error '-2147217887 (80040e21)':
-->Multiple-step operation generated errors. Check each status value.
myRS.Fields("staticCol").Value = ""
-->Run-time error '-2147217887 (80040e21)':
-->Multiple-step operation generated errors. Check each status value.

有什么办法可以做到这一点吗?如果可能,我希望保持活动连接打开。

提前致谢!

【问题讨论】:

  • 如果您想实际查看错误,您可以在 Connection 对象的 Errors 集合中找到它们。

标签: sql vb6 adodb recordset


【解决方案1】:

前两个字段映射到数据库中的字段。您有一个名为 myTable 的表,字段映射到 col1 和 col2。但是,第三个值被指定为空字符串。将其视为 SQL 中的常量。您不能为 const 分配新值:它始终与之前的值相同。

即使您可以这样做:它会映射到哪个字段?数据库不知道你想要它去哪里。它认为您正在尝试插入字段并报告它无法为您执行该操作。

我的 VB6 生锈了,我不再拥有副本,但我想知道您为什么要尝试以这种方式添加记录。最好编写一个 INSERT 存储过程,然后像调用任何其他过程一样调用它。

【讨论】:

  • 标记为已回答,因为我从您的回答中删除了不,无法完成。之所以要这样做,原因比较复杂,这里就不赘述了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多