プロが教えるわが家の防犯対策術!

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

A 回答 (6件)

○案1


Dim cnt
cnt = Dcount("*", "[テーブル名]")
If cnt > 0 Then
' レコードがあるテーブルになにかする
End If

とDcount関数を使えばどうでしょうか。

○案2
また複数のテーブルが同じフィールドを含むならば
ユニオンクエリで1つのテーブルにしてから扱うことも
簡単だと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/24 09:10

On error goto nanigasi:



で、例外処理したらいかが?^^
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/24 09:11

AccessVBAは長いこと使っていないので全部忘れました(^^;


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

If rs.EOF Then Exit Sub


とかでは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/22 01:48

レコード件数を取得するには


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より大きければ処理する。
これでどうでしょう。

この回答への補足

ご親切な回答感謝致します。
実際に試しに記述してみましたが、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プロシージャがいけないのでしょうか?

手が空いている時にでも構いませんので、上記の件で補足のアドバイスがあれば宜しくお願い致します。

補足日時:2005/01/22 01:33
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/22 01:50

こんにちは。



SELECT COUNT(*)
を使えばいいのでは?

全体がわからないので、こんな事しか書けなくてすみません・・・。
(^^ゞ
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/22 01:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!