旧版 VB6 应用程序访问 SQL 数据库迁移

Posted

技术标签:

【中文标题】旧版 VB6 应用程序访问 SQL 数据库迁移【英文标题】:Legacy VB6 Application Access To SQL Database Migration 【发布时间】:2015-06-14 11:11:36 【问题描述】:

我的公司有超过 100 个表格的 vb6 应用程序。应用程序是使用 VB6 和 Access 开发的。 现在我的公司希望我将现有的应用程序从 MS Access 转换为 SQL Server。 应用程序正在使用 DAO 与 Access 连接。我已经将 Access 数据库转换为带有数据的 SQL。 然后我变了

Private db As Database
Set db = OpenDatabase(Access_File_Path, dbDriverComplete, False, ";pwd=access_password;")

Set db = OpenDatabase("", False, False, "odbc;dsn=Database_ODBC_Name")

所有选择、插入、更新、删除查询都可以正常工作。 但我在这条线上遇到了错误

.Recordset.AddNew
.Recordset.Delete
.Recordset.Update
.Recordset.CancelUpdate

得到类似的错误

运行时错误 3027 无法更新,数据库或对象是只读的

ODBC 错误

有任何解决方案或方法可以将现有代码与 SQL 一起使用吗?

【问题讨论】:

Migration from Access to SQL in VB6 with DAO ;). 【参考方案1】:

正如你的错误信息所说:

由于以下原因之一,数据库是只读的:

您使用了 OpenDatabase 方法并以只读方式打开了数据库。 在 Microsoft Visual Basic 中,您使用的是 Data 控件,并将 ReadOnly 属性设置为 True。 数据库文件在操作系统或您的网络中被定义为只读。 数据库文件存储在只读媒体上。 在网络环境中,您没有数据库文件的写入权限。 使用安全数据库时,数据库或其对象之一(例如字段或表)可能被设置为只读。您可能无权使用您的用户名和密码访问这些数据。

关闭数据库,解决只读条件,然后重新打开文件进行读/写访问。

【讨论】:

以上是关于旧版 VB6 应用程序访问 SQL 数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

在新的 Visual Studio Express (C++ prefrred) 项目中使用旧版 (VB6) DLL

从旧版 SQL 迁移:使用标准 SQL 的“WITHIN RECORD”选项

如何使用与 sql server 的 DAO 连接更新 VB6 中的记录集

VB6 ms访问sql查询distinct count两个表

求vb6.0与SQL数据库连接的教程或资料,你行的话也可以直接帮帮我QQ313505846

从 SQL Server 2000 迁移到 2012 不会中断