0

我正在使用 VB6 应用程序。哪个正在使用 MSAccess 数据库。现在我正在更改对 sql server 的数据库访问。从 MSAccess 获取/更新数据,应用程序正在使用 DAO 对象。所以现在我也在尝试用 DAO 方法连接 SQL Server。现在我能够连接数据库并能够获取数据。但是当我试图编辑记录时,它给出了错误“运行时错误'3027'无法更新。数据库或对象是只读的”。我在这里显示我的代码:

Public LSWs As Workspace, LSDb As Database
Dim lsConnString As String
Dim l0 As Recordset, SQL0 As String
Dim lehReturn As Integer, retrycount As Integer

lsConnString = "ODBC;DRIVER=SQL Server;SERVER=SERVERName;DATABASE=" & DBname & ";APP=Visual Basic;UID=UID;PWD=PWD"
Set LSWs = DBEngine.Workspaces(0)
Set LSDb = LSWs.OpenDatabase(DBname, dbDriverNoPrompt, True, lsConnString) 
retrycount = 0
SQL0 = "select * from schedule_hdr where status = '" & Trim(PCName) & "'"
Set l0 = LSDb.OpenRecordset(SQL0, dbOpenDynaset, dbSeeChanges, adLockPessimistic)
Do While Not (l0.EOF)
    LSWs.BeginTrans
    l0.Edit
    l0!status = "R"
    l0.Update
    LSWs.CommitTrans
    l0.MoveNext
Loop
l0.Close

但它在 l0 处给出错误。编辑此行代码给出错误“运行时错误'3027'无法更新。数据库或对象是只读的任何帮助!或建议请回复

提前致谢!

4

1 回答 1

0

最初我认为您用于 SQL 服务器的用户名和密码可能具有只读权限。

如果不是这种情况,并且您想坚持使用 DAO,那么我建议使用 Access 的内置 ODBC 链接功能,因为这可以帮助您成功连接到 SQL 服务器。

但是,我的建议是放弃 DAO 并使用 ADO,主要是因为 DAO 将您的数据处理限制在缓慢的客户端,而拥有专用服务器的全部意义在于尽可能多地运行服务器端以显着提高表现。

于 2012-04-18T13:08:29.587 回答