Sql server 如何使用sql server的DAO连接更新VB6中的记录集
我使用的是VB6应用程序。它正在使用MSAccess数据库。现在,我将数据库访问权限更改为sql server。要从MSAccess获取/更新数据,应用程序使用的是DAO对象。所以现在我也在尝试用DAO方法连接SQLServer。现在我可以连接数据库,也可以获取数据。但当我试图编辑记录时,它给出了错误运行时错误“3027”无法更新。数据库或对象是只读的。我在这里显示我的代码:Sql server 如何使用sql server的DAO连接更新VB6中的记录集,sql-server,vb6,dao,Sql Server,Vb6,Dao,我使用的是VB6应用程序。它正在使用MSAccess数据库。现在,我将数据库访问权限更改为sql server。要从MSAccess获取/更新数据,应用程序使用的是DAO对象。所以现在我也在尝试用DAO方法连接SQLServer。现在我可以连接数据库,也可以获取数据。但当我试图编辑记录时,它给出了错误运行时错误“3027”无法更新。数据库或对象是只读的。我在这里显示我的代码: Public LSWs As Workspace, LSDb As Database Dim lsConnString
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”无法更新。数据库或对象是只读的
任何帮助!或建议,请回复
提前谢谢 起初,我认为您用于SQL server的用户名和密码可能具有只读权限 如果情况并非如此,并且您希望坚持使用DAO,那么我建议使用Access的内置ODBC链接功能,因为这有助于您成功地连接到SQL server 然而,我的建议是放弃DAO而使用ADO,这主要是因为DAO将您的数据处理限制在客户端,这很慢,而拥有专用服务器的全部目的是尽可能多地在服务器端运行,以显著提高性能。事务LSWs.BeginTrans真的有必要吗?一次只更新一条记录,因此事务在那里不会做任何有用的事情。是否可能您的ODBC连接是只读的?