
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も見ています
-
accessでレコード更新直後の反映について
その他(データベース)
-
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
-
-
4
「RunSQL」と「Execute」の違い
Access(アクセス)
-
5
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
6
どこにもフォーカスを当てたくない
Access(アクセス)
-
7
[VBA] ADOの Clone と AddNew
その他(プログラミング・Web制作)
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
10
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
11
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
12
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
13
access ADODB でテーブルを更新しない場合
その他(データベース)
-
14
ADODBのRecordset.Deleteのエラーについて誰か助けてください!!
その他(プログラミング・Web制作)
-
15
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
16
「#エラー」の回避
Access(アクセス)
-
17
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
18
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
19
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
20
Access2010 「演算子がありません」エラー
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
ACCESS ADOでupdateが効かない
-
Access2000環境に対応するMid関...
-
バッチファイルからのBCP起動に...
-
エクセルマクロで指定範囲内の...
-
VBAでXMLインポートエラーを無...
-
¥を含む文字列を挿入するとエ...
-
sqlで文字列を最後に追加したい
-
GROUP BYでエラーが発生
-
PostgreSqlでFunctionの作成に...
-
ストアドの戻り値(配列)について
-
BCPコマンドのリダイレクト値が...
-
SQLServerのエラー1069について
-
クエリの存在チェック
-
レポートが開けない。
-
データベースの復旧
-
何も表示されない実行時エラー...
-
SQLSeverの新規登録で一般的な...
-
Excel-VBAの「しばらくお待ちく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
何も表示されない実行時エラー...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
オブジェクト名 '<table>' が無...
-
エクセルのグループボックス枠...
-
エクセルマクロで指定範囲内の...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
SQLServer・ストアドプロシージ...
-
クエリの存在チェック
-
分散トランザクションを開始で...
おすすめ情報