• ベストアンサー

Access_VBA_記述方法

AccessVBAの記述方法で悩んでいます。 複数のテーブルを順読みして、レコードの更新/追加/削除のプログラムを作成していますが、順読みなので何も入っていないテーブルのレコードも読みに行ってしまいデバックとして出てしまいます。 EOFやNULLをどうにかして判断条件として記述してみましたが、やはり上手くいきませんでした。 レコードでの判断条件では無く、テーブル内にレコードが存在するかどうかという判断文と条件文の記述方法がありましたら、どうか教えて下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • angband
  • ベストアンサー率51% (86/168)
回答No.5

○案1 Dim cnt cnt = Dcount("*", "[テーブル名]") If cnt > 0 Then ' レコードがあるテーブルになにかする End If とDcount関数を使えばどうでしょうか。 ○案2 また複数のテーブルが同じフィールドを含むならば ユニオンクエリで1つのテーブルにしてから扱うことも 簡単だと思います。

HCR
質問者

お礼

誠に有難うございました。 Dcount関数を使うのですねっ!! 実際にやりまして現象を確認したところ出来ました。 有難うございました。

その他の回答 (5)

  • keikan
  • ベストアンサー率42% (75/176)
回答No.6

On error goto nanigasi: で、例外処理したらいかが?^^

HCR
質問者

お礼

早急な対応ありがとうございました。

noname#182251
noname#182251
回答No.4

AccessVBAは長いこと使っていないので全部忘れました(^^; で、「判断文」ではありませんが、そもそも 「何も入っていないテーブル」を読みに行かないようにすれば良いと考えます。つまりクエリーで「当該箇所にデータがある」ものだけをより分けて、それに対して順にやりたい処理をして行けば。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.3

If rs.EOF Then Exit Sub とかでは?

HCR
質問者

お礼

Subプロシージャ内でExitSubを使う?・・・のかちょっと調べてみます。参考にさせて頂きます。 ありがとうございます。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

レコード件数を取得するには SQLステートメントを定義してカレントデータベースを変数に代入する。SQLステートメントを実行してレコードセットを開く。 Dim myDB As Database Dim myRS As DAO.Recordset Dim mySQL1 As String mySQL1 = "SELECT COUNT(*) FROM テーブル名 ;" Set myDB = CurrentDb Set myRS = myDB.OpenRecordset(mySQL1, dbOpenDynaset) これでmyRSにレコード件数がカウントされるのでmyRSを使ってレコード件数が0なら処理しない。1より大きければ処理する。 これでどうでしょう。

HCR
質問者

お礼

とても適切な説明で初心者の私でも分かる内容でした。 補足でも記載させて頂きましたが、補足のアドバイスがあればお願いします。 ありがとうございます。

HCR
質問者

補足

ご親切な回答感謝致します。 実際に試しに記述してみましたが、myRSの型が一致しないとデバックが出てしまいました。 Msgboxでレコード件数を確認しようと考えていたのですが、それもエラーとして出力されます。 `>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Function *****() Dim myDB As Database Dim myRS As DAO.Recordset Dim mySQL1 As String mySQL1 = "SELECT COUNT(*) FROM 1000;" Set myDB = CurrentDb Set myRS = CurrentDb.OpenRecordset(mySQL1, dbOpenDynaset) MsgBox myRS End Function `>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> FUNCTIONプロシージャがいけないのでしょうか? 手が空いている時にでも構いませんので、上記の件で補足のアドバイスがあれば宜しくお願い致します。

回答No.1

こんにちは。 SELECT COUNT(*) を使えばいいのでは? 全体がわからないので、こんな事しか書けなくてすみません・・・。 (^^ゞ

HCR
質問者

お礼

早急な対応ありがとうございます。 COUNT関数を使う事が分かりましたので、参考にさせて頂きます。

関連するQ&A