- ベストアンサー
Accessにアクセスしデータを表示する際に
現在Accessで作成したデータベースにアクセスし、検索する簡単なプログラムを作成しています。 データベース先を指定し、接続詞 Do While()で検索し表示しています。 検索はComboBoxでいくつかの条件を選択させ、選択された条件をSQLに埋め込み検索し表示しています。 プログラムを起動し始めの検索は問題なくできます。だた、別な条件で検索しようとしても前の検索結果しか表示されません。 この場合、どの部分をみるべきなのでしょうか? また、SQLで検索した際、どのカラムにも一致しなかった場合エラーを表示させたいのですが、どうすればいいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBのバージョンや現在のSQLコードの組み立てなどをどのようにしているのか投稿してみましょう またデータベースから取得してくるのはどのような形態なのかも DAO、ADO、ADO.NETなど
その他の回答 (3)
- t2hayashi
- ベストアンサー率46% (102/219)
・検索条件が変わっていない→検索条件をリセットするコードを ・画面がリフレッシュされていない→フォームをリフレッシュしましょう エラーの出し方としてはカウントする方法か、レコードセットを呼び出しているなら.EOF をチェックするかですね。 例題的なコードはネット上に沢山あると思いますよ。
- imogasi
- ベストアンサー率27% (4737/17069)
この質問の書き方はひどい。どう質問者はコードを書いているか、明らかにせず、回答者がエラー原因を指摘しろなんてできるはずが無い。1字違えばアウトという、プログラムの恐ろしさを知らない人のやること。またエラー現象も込み入ったものでなく、初期的なエラーですから、すぐ質問となっているようで、自身の突込みが足りない。 WEBなどに関連記事が増えた現在、自分でもっとエラーの原因の箇所を絞る努力をして、絞って質問するべきだ。 参考 http://www.hyuki.com/writing/techask.html ーー また>どのカラムにも一致しなかった場合とはどういう意味か。 フィールド名のことか。 複数列検索をやっているのか。 ーー >SQLで検索した際、該当レコードが無かったときに・・、の意味なら http://www.accessclub.jp/bbs/0034/beginers14692.html のなかの >処理としては、抽出条件でフィルターを掛けたレコードセットを作って、 そのレコードセットのレコード数が0の場合はフィルターを解除して フォームに表示、1以上の場合はそのまま表示という処理になるかと思います。 それや http://okwave.jp/qa619151.html のANo2のCountを使う方法など。
レコードセットを作ってDo-loopで表示させているなら、 一旦レコードセットを閉じ、 SQLを作り直してレコードセットをつくり、 中身を表示させればよいと思います。 レコードセットの中身がカラの場合(最初からEOFの場合) エラーを表示させればよいと思います。