私はVB6アプリケーションを使用しています。どちらがMSAccessデータベースを使用していましたか。今私はSQL Serverへのデータベースアクセスを変更しています。 MSAccessからのデータの取得/更新まで、アプリケーションはDAOオブジェクトを使用していました。だから私はまた、DAOメソッドとSQL Serverを接続しようとしています。今私はデータベースを接続することができ、また、データを取得することができます。しかし、私はレコードを編集しようとしているときに、エラー "実行時エラー '3027'を更新できません。データベースまたはオブジェクトは読み取り専用です。"SQL ServerとのDAO接続を使用して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
を、それはエラーに 「実行時エラー 『3027』を与えて、この行のコード を更新することはできませんl0.Editでエラーを与えているデータベースまたはオブジェクトが読まれるだけ どれヘルプ:私はここに私のコードを示しています。 !またはsuggesion事前に
感謝を返信!
トランザクション「LSWs.BeginTrans」は本当に必要ですか?一度に1つのレコードを更新するだけなので、トランザクションはそこで役に立つものを何もしません。 ODBC接続が読み取り専用である可能性はありますか? – Martin