【问题标题】:ADO execute againt SQL Server does not report on referential integrity constraintsADO 再次执行 SQL Server 不报告参照完整性约束
【发布时间】:2020-06-04 17:16:17
【问题描述】:

有证据表明,当使用 ADO 删除 SQL Server 中的记录时,它不会报告引用完整性约束。

  • 主表:tblMasterChecklist
  • 子表:tblMasterTopic(参考tblmasterchecklist.checklistid

代码:

Dim ado As New adodb.Connection
Dim sConnectionString As String

ON error goto eh

sConnectionString = "Provider=SQLOLEDB;Data Source=hillhead-100;Initial Catalog=XXXXXXXX;UID=XXXXXXXXXXXXX;PWD=XXXXXXXXXXXX;"
ado.Open (sConnectionString)
ado.execute "DELETE FROM tblMasterChecklist  WHERE ChecklistID = 'DE'"

我收到此错误:

错误 = 3001,应用程序错误 3001,参数类型错误、超出可接受范围或相互冲突。

只要不存在子记录,同样的命令就可以正常工作

这似乎是驱动程序的限制。

任何人都可以就此提出建议吗?

【问题讨论】:

    标签: sql-server ms-access odbc ado


    【解决方案1】:

    首先,不要使用SQLOLEDB。该驱动程序是 MDAC 的一部分,它可以方便地安装在自 Windows XP SP2 以来的所有 Windows 机器上,但也可以追溯到 Windows XP SP2,并且非常过时。它已被弃用,并且没有实现许多基本功能,例如支持“现代”数据类型,例如 DateTime2

    改为使用MSOLEDBSQL,这是目前唯一支持 SQL Server 的 OLEDB 提供程序。

    您应该可以下载最新版本here

    或者,使用 ODBC 驱动程序,因为 ADO 支持 ODBC 和 OLEDB。

    【讨论】:

    • 感谢 Erik A 的澄清。您的回答是对要做什么的简要总结:)
    【解决方案2】:

    sConnectionString = "Provider=MSOLEDBSQL;Data Source=xxxxxxxxxxxx;Initial Catalog=xxxxxxxxxxxxx;UID=xxxxxxxxxxx;PWD=xxxxxxxxxxxx;"

    捕获的错误: 2020-04-04 22:18:57; 4.19; xxx;错误; 4.19;删除 MasterChecklist 信息时出现问题,clsMasterChecklist,mbDelete,错误 = -2147217873,应用程序错误 -2147217873,DELETE 语句与 REFERENCE 约束“FK_tblMasterTopic_tblMasterChecklist”冲突。冲突发生在数据库“xxxxxxxxxxxx”、表“dbo.tblMasterTopic”、列“checklistid”中。

    【讨论】:

      猜你喜欢
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多