DBに条件のデータがあるかどうかを調べる場合


XXX  2005-11-10 16:10:45  No: 127514  IP: [192.*.*.*]

DBに条件のデータがあるかどうかを調べる場合は
どのようにしたらよいでしょうか?
rs.Openで、条件のデータを取得して、そのデータが何件あるかを調べる
A=Recordset.recordcount
をつかうのでしょうか。
どなたかご教授ねがいます。

編集 削除
M's  2005-11-10 16:32:53  No: 127515  IP: [192.*.*.*]

SQL文のWHEREで条件指定するなど。

編集 削除
特攻隊長まるるう  2005-11-10 17:09:03  No: 127516  IP: [192.*.*.*]

データベースの種類や使うオブジェクトにによって独自の方法が
存在する場合もあるけど Recordset を使うのなら RecordCount
を調べるのは1つの方法だね。ただし条件によっては RecordCount
が有効にならない(-1 になる)場合がありますので過去ログ検索『RecordCount』でどうぞ。

>SQL文のWHEREで条件指定するなど。
して SQL 文の集計関数 Count で数えるとかね。

編集 削除
EOF  2005-11-10 17:24:34  No: 127517  IP: [192.*.*.*]

EOF

編集 削除
ひろ  2005-11-10 17:28:05  No: 127518  IP: [192.*.*.*]

数を数えるよりは

・最初の1行が早く取得できるように調整したSELECT文を投げる
  (可能なら1行だけ取得する事を明示したSQLにする)
・RecordSetの先頭に行く
・(先頭に行ったのに)既に終端に達していたらデータ無しと判定できる

のように選択結果の最初の1行目が存在するかどうかを確認する方が早い場合もあります。

編集 削除
XXX  2005-11-10 18:28:14  No: 127519  IP: [192.*.*.*]

分かりにくい説明で申し訳ございません。

DBに2種類のテーブルがあり、例えば、「商店名」の”aaa店”を削除したい場合
もう1つのテーブルで削除対象のaaa店を使用していたら、削除できないように
したいのです。

編集 削除
とおりすがり  2005-11-10 18:44:27  No: 127520  IP: [192.*.*.*]

SELECT 商店名 FROM テーブル2(もう一つのテーブル) WHERE "aaa店"
ってSQLを投げたのでは駄目?
使用していないときの条件によってSQLが変わると思いますが、
とりあえず、
「もう一つのテーブルで削除対象のaaa店を使用していない」=「もう一つのテーブルにaaa店のデータがない」
という条件下であれば、これで確認できると思います。

編集 削除
ひろ  2005-11-11 09:07:08  No: 127521  IP: [192.*.*.*]

NOT EXISTSを使えませんか?

編集 削除
なな  2005-11-11 10:43:05  No: 127522  IP: [192.*.*.*]

ごくごくふつ〜に、
NOT EXISTSの使い方、そのままですね。(Oracleでは)

ただ、未だにデータベースが何かが記述されていないのは
なぜなんだろうな〜、

編集 削除
XXX  2005-11-11 11:39:53  No: 127523  IP: [192.*.*.*]

すみません。
Accessです。
NOT EXISTSの使い方でやってみます。
ありがとうございます。

編集 削除