
No.3ベストアンサー
- 回答日時:
前回の回答を訂正します。
<ある環境下ではエラーが起きないこともあります!>
さて、本日、Execute での UPDATE 文が実行されないという不具合に遭遇しました。
エラーもなく表面上は「実行しました!」とのメッセージ。
「ウーン!」と考えて、UPDATE 文の発行による更新を断念。
SELECT文で読み込み1レコードづつ更新するようにコードを訂正しました。
結果、この不具合は解消されました。
多分、実行したPCが某社のCAD。
「Windows、Office の更新は誤動作の原因となるのでしていない」とのこと。
こういう場合、非手続き的なコードよりも手続き的なコードの方が信頼が高いと感じました。
質問者も、シコシコと更新手続きを書いてみると解決するかもしれません。
「エラーが出ると思う!」との下りは、このような事情で撤回します。
No.4
- 回答日時:
>レコードを追加する処理を行っている
>この場合、updateコマンドが実行された後
質問の内容より、Recordset オブジェクトのaddnew & updateで手続き的なコードを書かれていると思いますが(^^;>#3さん
Execute メソッドの場合は、第2引数に影響の有ったレコード数が返ってきますので、これをチェックすれば正常に追加されたか判断出来るかも。
Dim RecordsAffected As Long
Connection.Execute SQL, RecordsAffected
Debug.Print RecordsAffected
お答え下さった皆さん、回答ありがとうございます。
他の方へもここでまとめてお礼します。
まだ解決していませんが、皆さんの意見を参考にやってみます。
SQL文に書き直す というのが正解かもしれません。
No.2
- 回答日時:
私も、No1 さんの回答通りにエラーが発生すると思います。
ただ、その場合、Access のエラーが発生するだけかもしれません。
いわゆる ADO エラー情報を取得するには仕掛けが必要です。
質問は、この後段の手法に関してでしょうか?
であれば、次の関数を参考にされて下さい。
カレントプロジェクトであろうが外部アクセスであろうが同じことかと思います。
Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)
MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & CnnErrors.Description & Chr$(13) & _
"・Err.Number=" & CnnErrors.Number & Chr$(13) & _
"・SQL State=" & CnnErrors.SQLState & Chr$(13) & _
"・SQL Text=" & strSQL, _
vbExclamation, " ADO関数エラーメッセージ"
End Sub
Public Function CnnExecute(ByVal strSQL As String) As Boolean
On Error GoTo Err_CnnExecute
Dim isOK As Boolean
Dim cnn As ADODB.Connection
isOK = True
Set cnn = CurrentProject.Connection
With cnn
.Errors.Clear
.BeginTrans
.Execute strSQL
.CommitTrans
End With
Exit_CnnExecute:
On Error Resume Next
cnn.Close
Set cnn = Nothing
CnnExecute = isOK
Exit Function
Err_CnnExecute:
isOK = False
If cnn.Errors.Count > 0 Then
ErrMessage cnn.Errors(0), strSQL
cnn.RollbackTrans
Else
MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _
vbExclamation, " 関数エラーメッセージ"
End If
Resume Exit_CnnExecute
End Function
No.1
- 回答日時:
具体的なソースがないと何とも言えませんが・・・
updateメソッドに戻り値はないと思います。
通常は失敗すればエラーになると思います。
・ On Error Resume Next としてませんか?
・ addnew を忘れてませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
accessでレコード更新直後の反映について
その他(データベース)
-
ADODBのRecordset.Deleteのエラーについて誰か助けてください!!
その他(プログラミング・Web制作)
-
-
4
[VBA] ADOの Clone と AddNew
その他(プログラミング・Web制作)
-
5
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
6
access ADODB でテーブルを更新しない場合
その他(データベース)
-
7
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
8
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
9
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
10
「RunSQL」と「Execute」の違い
Access(アクセス)
-
11
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
12
どこにもフォーカスを当てたくない
Access(アクセス)
-
13
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
14
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
15
Access サブフォームでの選択行の取得
その他(データベース)
-
16
「#エラー」の回避
Access(アクセス)
-
17
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
18
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
19
ADO VBA 実行時エラー3021
Visual Basic(VBA)
-
20
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
ACCESS ADOでupdateが効かない
-
エクセルからSQLサーバー ...
-
SQLServerが存在しないか、アク...
-
ACCESS2000ディスクまたはネッ...
-
vbからストアドプロシージャ内...
-
エクセルのグループボックス枠...
-
複数の表の外部結合について
-
オブジェクト名 '<table>' が無...
-
oo4oのMovePreviousnメソッドに...
-
ACCESSで作成したアプリケーシ...
-
ストアドの戻り値(配列)について
-
BCPコマンドのリダイレクト値が...
-
20人程度が一度に使うデータベ...
-
Webシステムでのライセンスにつ...
-
SQL ServerにTCP/IPで接続出来ない
-
RDSデバイスCALを誤って消費し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
GROUP BYでエラーが発生
-
PostgreSqlでFunctionの作成に...
-
ACCESS ADOでupdateが効かない
-
バッチファイルからのBCP起動に...
-
クエリの存在チェック
-
エクセルマクロで指定範囲内の...
-
何も表示されない実行時エラー...
-
エクセルのグループボックス枠...
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
ACCESS2000ディスクまたはネッ...
-
ACCESSで作成したアプリケーシ...
-
オブジェクト名 '<table>' が無...
-
oo4oのMovePreviousnメソッドに...
-
ストアドの戻り値(配列)について
-
エクセルからSQLサーバー ...
-
SQLserverのIF文について
-
エラー:823 重大度:24 状態...
おすすめ情報