• ベストアンサー

アクションクエリ DoCmd.RunSQL 0件なら

UPDATE~のSQL文をVBAの「DoCmd.RunSQL」で実行すると 「○件のレコードが更新されます。」 と表示されます。 この時 0件なら違う動作をしたいのですが 件数を取得することは可能でしょうか? 「IF O件 Then~」 と言うのは可能でしょうか。 ご教授よろしくお願いします。

  • 5tgbhy
  • お礼率96% (363/378)

質問者が選んだベストアンサー

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

普通に考えれば、逆だと思いますよ If DCount("*","テーブル","更新条件") = 0 Then ' 0件の時の処理 Else DoCmd.RunSQL "UpDate ~" End If って、感じでね 先に、更新するレコード数を検証して、検証した結果、更新するレコードがある場合に、「DoCmd.RunSQL」を動作させる

5tgbhy
質問者

お礼

そういう作戦でやってみます。ありがとうございます。

関連するQ&A

  • エクセルからアクセスの更新クエリをVBAで実行することは可能ですか?

    SQL = "UPDATE ~WHERE ;" DoCmd.RunSQL SQL をエクセルのコマンドボタンから実行させたいのですが どのような処理が必要でしょうか? よろしくお願いします。

  • 更新クエリー

    ACCESS2000です。 Aというテーブル(レコード件数500件くらい)のValue1というフィールドをBというテーブル(レコード件数1件)のValue1というフィールドの値で全件更新したいのですが、どのようなSQLを書けばよいのでしょうか。 基本的なことだと思いますがよろしくお願いいたします。

  • Delete の実行件数を取得したいが0件になる

    Delete の実行件数を取得したいが0件になる 正しい件数を取得するにはどうしたら良いでしょうか? Dim recent As Long cn.Open [ConnectionString] cn.Execute updateSQL, recnt If recent= 0 Then MsgBox "更新されませんでした。" cn.Close:Set cn = Nothing

  • oo4o。executeSQLにてupdate実行後、実行件数取得は?

    今まであまり使ったことの無かったAccess97のVBAを使用しています。単純な質問なんですが、教えてください。 oo4oにてオラクルDBに接続し、executeSQLメソッドにより単純なupdate処理を実行しました。 -----(細かいところは省略) sql= "update TABLE_A set CODE='AAA' where NAME='HOGE'" OraDB.ExecuteSQL sql ----- このExecuteSQLメソッドの、実行結果が0件なのか、1件なのかを知りたいのですが、方法はありますでしょうか?つまり、直前のSQLの実行結果を取得するメソッドはありますか?という質問です。Javaとかなら、戻り値として実行結果の件数が帰ってきますよね。この場合はそれをどうやって取ればいいのでしょうか? where NAME='HOGE'に当てはまるレコードが無くても、0件の処理が成功として、エラーは出ないんですよねぇ・・・ もし不足の情報がありましたら、補足いたします。 よろしくお願いします。

  • 「実行時エラー 3035メモリ不足です」

    アクセスのテーブルを開いてレコードを並び替えようとすると 「メモリ不足です」と表示されます。 VBAで、 DoCmd.RunSQL SQL のコードでも同じように 「実行時エラー 3035メモリ不足です」と言うエラーが発生します。 VBAでエラーになった場合は、 一度エラーでとまりますが、そのままF5を押すと問題なく実行できます。 メモリは4G積んでいます。win7です。 そんなにメモリが低いでしょうか? アクセスのレコード数は40000くらいです。

  • 更新時エラー番号5

    言語:VB5.0 DB:Access で既存プログラムを修正しています。 データの更新時、SQLを記述後に If RunSQL(SQL) <> R_OK Then '実行 Call ErrMsg(1) 'エラーメッセージ Exit Sub 'サブルーチン終了 End If としています。 RunSQLのなかでは、 Function RunSQL(SQL) As Integer On Error Resume Next Dim ErrorCnter As Integer 'エラーカウンター RunSQL = R_OK 'リターンコード(OK) For ErrorCnter = 1 To 5 'エラーカウンター5までループ DB.Execute SQL, dbFailOnError 'エグゼキュート実効 If Err <> 0 Then '失敗時 If ErrorCnter = 5 Then 'エラーカウンター5のとき RunSQL = Err 'リターンコード(エラー) End If Else '成功時 Exit For 'ループぬける End If Next End Function このようになっています。 ある更新をかけたとき、 このエラーにかかってしまいます。 SQLがおかしいのかな?とおもい、 AccessのクエリーにSQLをうつして 実行すると、実行できます。 。。。プロシージャが不正に使われている、 というエラーのようなんですが、 これはどういうことなんでしょうか? データでは,実行できるのに、コーディング上で 実行エラーになる、ということなのですが。。

  • accessでcommitができますか?

    accessで複数のテーブルから1つのテーブルに書き込みをしています。VBAでSQL文を作成しDoCmd.RunSQLでinsertを実行しています。データが多いと遅くなるようです。Commitとか実行できるのでしょうか?そうすれば早くなりますか?ご指導のほどお願いいたします。

  • VBでSQL文のUPDATE文を使った時のエラー

    access VBA初心者ですが回答、ご指摘のほうよろしければお願いします。 フォームにて更新ボタン押下時、テーブルの更新日付を現在の日付で更新したいと考えております。 下記のようにVBを組み込んだのですが、実行すると「UPDATE ステートメントの構文エラーです」というエラーがでてしまいます。 構文のどこが悪いか御指南いただけないでしょうか。 test_TBLの更新日付のフィールドを現在日付で更新 Dim sql As String Dim newdate As Date newdate = Now() sql = "UPDATE test_TBL SET 更新日付 =#" & newdate & "#" DoCmd.RunSQL sql

  • Access VBA 全クエリ 繰り返し

    Access VBAについてお尋ねさせていただきます。 Access VBAを利用して、以下の繰り返し処理を実行したいです。 (1):レコードの有無にかかわらず、すべてのクエリの名称だけを配列に取得する繰り返し処理 (2):レコードの有無にかかわらず、すべてのクエリを開き、各クエリのレコード件数を配列に取得する処理 どのように記述すればよろしいでしょうか?

  • ACCESS 『DoCmd.OutputTo』について

    [OSのVER]:WindowsXP or Windows2000 [AccessのVER]:Office2003 or OfficeXP or Office2000 こんにちは。 過去ログを一通り見てみましたが 該当する記事がないため質問させていただきます。 レコード件数13000件ほどの結果が返るストアドの結果をExcelに出力するために、 『DoCmd.OutputTo』を用いているのですが、Excelに出力される件数が なぜか10000件ぴったりになってしまいます。 どこかの設定で直るものなのでしょうか? 下記のようなコードで呼び出しています。 --------------------------------------------- DoCmd.OutputTo acOutputStoredProcedure, "EXEC [ストアド名] '" & パラメータ1 & "', '" & パラメータ2 & "'", acSpreadsheetTypeExcel9 --------------------------------------------- よろしくお願いいたします。

専門家に質問してみよう