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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
-
4
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
DAOでSQLServerに接続し、LeftJoinで別DBのテーブル
Visual Basic(VBA)
-
7
Access VBA の BeforeUpdate と AfterUpdate に違い
Access(アクセス)
-
8
AccessのDAO.ExecuteとDoCmd.RunSqlの違いについて
その他(データベース)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
11
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
12
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
13
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
14
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
15
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
16
ACCESSのクエリー抽出条件にIIFを使用して
Access(アクセス)
-
17
パラメータが少なすぎます。1を指定して下さい。""
Excel(エクセル)
-
18
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
19
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
20
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2010 accdbのエラー「ODB...
-
SQL ServerにTCP/IPで接続出来ない
-
ASP経由でのODBCの接続について
-
SQLServerへのOpen命令でのエラー
-
「最高気温が35度以上の日を猛...
-
SQLサーバー接続 特定のPCがWin...
-
Oracle 8i コンマ(,)を含むデ...
-
サーバーと実行端末が違う場合...
-
sqlcmdでクエリの実行結果をバ...
-
GROUP BYでエラーが発生
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
PostgreSqlでFunctionの作成に...
-
IPアドレスによるクライアント...
-
SQL Loaderを使いたい
-
ストアドプロシージャでcsvファ...
-
SQLServerでViewの参照・・・
-
何も表示されない実行時エラー...
-
DB接続ができなくなって困って...
-
SQLサーバ ユーザー削除について
-
SqlDataReaderでの0件判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access2010 accdbのエラー「ODB...
-
SQL ServerにTCP/IPで接続出来ない
-
DAOでのOpenRecordsetの方法
-
SQL Server 2005 Expressでbcp...
-
SQLServerへのOpen命令でのエラー
-
ASP.NET、SQLServerを使用してW...
-
SQLサーバー接続について
-
SQLネットワークエラー時の再接続
-
SQL Server 2008のsqlcmdコマン...
-
ODBCによるエラー
-
ASP経由でのODBCの接続について
-
一般的なネットワークエラーに...
-
DBへの登録エラー?
-
Sybaseのエラー
-
SQLServer2005のODBC接続・更新...
-
osqlでデータベースにアクセス...
-
PostgreSQLと、AccessをODBC接続
-
SQLサーバに接続できません
-
ODBC 一般ネットワークエラー
-
PHPのODBC関数
おすすめ情報