2012-04-18 66 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將您的數據處理限制到客戶端速度很慢,並且擁有專用服務器的全部要點是儘可能多地運行服務器以顯着提高性能。