我正在使用VB6应用程序。哪个使用MSAccess数据库。现在我正在更改对sql server的数据库访问。要从MSAccess获取/更新数据,应用程序正在使用DAO对象。所以现在我也尝试将SQL Server与DAO方法连接起来。现在我能够连接数据库并且还能够获取数据。但是,当我尝试编辑记录时,它会给出错误"运行时错误' 3027'无法更新。数据库或对象是只读的#34;。我在这里显示我的代码:
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'无法更新。数据库或对象是只读的 任何帮助!或建议请回复
提前致谢!
答案 0 :(得分:0)
最初我认为您用于SQL服务器的用户名和密码可能具有只读权限。
如果不是这种情况并且您想坚持使用DAO,那么我建议使用Access的内置ODBC链接功能,因为这可以帮助您成功连接到SQL服务器。
但是,我的建议是放弃DAO并使用ADO,主要是因为DAO限制你的数据处理到客户端这很慢,并且拥有专用服务器的重点是运行尽可能多的服务器端大幅度提高绩效。