2012-04-18 67 views
0

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

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.Edit这行代码 给人错误 “运行时错误‘3027’不能更新数据库或对象是只读 任何帮助。 !或suggesion请回复

提前感谢!

+0

事务'LSWs.BeginTrans'真的有必要吗?您一次只更新一条记录,因此交易不会在那里做任何有用的事情。是否有可能您的ODBC连接是只读的? – Martin 2012-04-18 13:08:11

回答

0

起初我以为你正在使用SQL服务器的用户名和密码可能具有只读权限。

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

但是,我的建议必须放弃DAO和ADO,主要是因为DAO将您的数据处理限制到客户端速度很慢,并且拥有专用服务器的全部要点是尽可能多地运行服务器以显着提高性能。