
SQLServerのDBをDAOを使って更新しようとしていますが、方法がわからず困っています。
-------------------
private Cn as DAO.Database
private function fnc1() as integer
Dim ws As DAO.Workspace
Dim rcdst1 As DAO.Recordset
dim strCnct As String
dim strSQL As String
strCnct = "ODBC;Driver={SQL Server};SERVER=" & g_strSVName & ";DATABASE=" & g_strDBName & ";UID=" & strpUserID & ";PWD=" & strpPassword & ";"
'DB接続
Set Cn = ws.OpenDatabase("", False, False, strCnct)
strSQL = "SELECT * FROM Table1"
Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbDenyWrite, dbOptimistic)
-------------------------------------
このOpenRecordsetで
ODBC--すべてのレコードをロックできません。(3254)
のエラーが出ます。
また、OpenRecordsetを
Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset)
とすると
rcdst1.Edit
で
データベースまたはオブジェクトは読み取り専用なので、更新できません。
のエラーが出ます。
どうしたらいいでしょうか。
No.1ベストアンサー
- 回答日時:
ぱっと見、問題なさそうなコードなんですが。
よくあるのは、DBそのものを誰かが先に掴んでいるという場合です。
既に業務用か何かのプログラムが、そのDBを排他的に開いてないですか?
また、自分自身のプログラムが「閉じ忘れ」ってのも結構ありますよ。
なんとなく、DB側に問題があるような気がしたもので。
No.2
- 回答日時:
ADOで解決したみたいですが、DAOでODBC接続して更新するにはODBC Directを用いる必要があります。
こんな感じです
Dim Cn As DAO.Connection
Dim ws As DAO.Workspace
Dim rcdst1 As DAO.Recordset
Dim strCnct As String
Dim strSQL As String
strCnct = "ODBC;Driver={SQL Server};SERVER=(local);DATABASE=pubs;UID=xxx;PWD=xxx;"
'DB接続
Set ws = DBEngine.CreateWorkspace("", "", "", dbUseODBC)
Set Cn = ws.OpenConnection("", False, False, strCnct)
strSQL = "SELECT * FROM Table1"
Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbExecDirect, dbOptimistic)
rcdst1.AddNew
rcdst1!ID = 1
rcdst1!Name = "aaa"
rcdst1.Update
http://msyk.net/vb5db/ODBCDirect.html
http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
DAOでSQLServerに接続し、LeftJoinで別DBのテーブル
Visual Basic(VBA)
-
ODBC接続で新しいレコードを追加できない
SQL Server
-
Accessでテーブルをデータシートビューで開けない
その他(データベース)
-
-
4
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
5
ODBCで接続するとDBに変更/追加出来ない。
SQL Server
-
6
テーブルリンク リンク元を知りたい
Access(アクセス)
-
7
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
8
Accessのmdbを開こうとしたときのエラー
Access(アクセス)
-
9
ODBCリンクの際にACCESSでは読み取り専用にしたい!
Oracle
-
10
DAOのTableDefs(TblName").ConnectはADOでは"
その他(データベース)
-
11
Accessのフォーム上でSQLServerのデータを更新・追加する方法
その他(プログラミング・Web制作)
-
12
スクロールバーをVBAで操作したい
Access(アクセス)
-
13
dbOpenTableとdbOpenDynaset
その他(プログラミング・Web制作)
-
14
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
15
VBAでSQLServerへのODBC接続
SQL Server
-
16
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2010 accdbのエラー「ODB...
-
20人程度が一度に使うデータベ...
-
GROUP BYでエラーが発生
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
Webシステムでのライセンスにつ...
-
エクセルのグループボックス枠...
-
ACCESSからのODBC接続のみ応答...
-
エクセルからSQLサーバー ...
-
SqlDataReaderでの0件判定
-
BCPコマンドのリダイレクト値が...
-
99bb.com のライセンスバック...
-
ACCESSをWEB上で使用する
-
ODBCドライバの再インストール方法
-
エクセルマクロで指定範囲内の...
-
Excel-VBAの「しばらくお待ちく...
-
IBM系のDBでIMSに関して
-
再クエリとは
-
Oracle 8i コンマ(,)を含むデ...
-
db2setupでdb2inst1が作成されない
-
RDSデバイスCALを誤って消費し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLServerへのOpen命令でのエラー
-
Access2010 accdbのエラー「ODB...
-
SQLネットワークエラー時の再接続
-
ODBC 一般ネットワークエラー
-
SQL ServerにTCP/IPで接続出来ない
-
SQL Server 2005 Expressでbcp...
-
SQL Server 2008のsqlcmdコマン...
-
DAOでのOpenRecordsetの方法
-
ODBCによるエラー
-
PostgreteSql Ver12で開発した...
-
TNSNAMS.ORAの設定がうまくでき...
-
SQLサーバに接続できません
-
SQLサーバー接続について
-
PostgreSQLと、AccessをODBC接続
-
Sybaseのエラー
-
SQLServer2005のODBC接続・更新...
-
mdfに通信できません
-
バッチ処理でファイルの差分バ...
-
ASP.NET、SQLServerを使用してW...
-
osqlでデータベースにアクセス...
おすすめ情報