Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9012 / 9994 ←次へ | 前へ→

【4134】Re:ADOのレコードセットをフォーム(一覧)に表示
回答  かろちん  - 05/1/13(木) 0:31 -

引用なし
パスワード
   みほ さん こんばんは

>(かろちんさん、いつもありがとうございます)

 お気遣いありがとうございます。
 でも、これを書くのは止めた方が良いと思います。
 優秀な回答者よりレスが来なくなる原因になるかも
 しれません。
 これを書くなら、その人からレスがきたときに書く
 方が良いですよ。

>実行すると、ケース1のRecordCountは1になり、ケース2のRecordCountは10
>になるのですが、フォームに表示されるのは、ケース1も2も10件で
>ケース1の場合は、ID=5がカレントレコードになるだけです。
>RecordCountでチェックするとちゃんと件数が変わっているので
>フィルタできているとは思うのですが、どうしてこうなってしまうのか・・・。

 ADOでRecordCountを使ったことがないので良く
 分かりませんが、私は基本的にRecordCountは
 使わないようにしています。
 以前、DAOで開発を行った時、同じような現象が
 起きました。
 いろいろ調べてみましたが、RecordCountは不定
 であると判断しました。

 例えば10万件位のデータを抽出するとしましょう
 RecordCountで抽出件数を判断させようとした場合
 10万件のデータを抽出しないと分かりませんよね
 そうすると、かなりの時間がかかってしまいます。
 ある程度のデータが抽出された時点で、Open処理
 を終わってくれれば、途中まで抽出したデータを
 先に処理できますよね。
 この方法を取っているのだと思います。
 したがって、RecordCountはレコード件数を判断
 するときには使わない方が良いのだと判断し、
 それ以来は使っていません。

 でも最後のレコードを抽出した後は、RecordCount
 は正しい結果が返ってきていると思います。
 でも、その時点で使えるかどうかは疑問ですが...


>処理を汎用性のあるコード(アクセス以外に移行可能)で
>書きたい。ということです。それにはADOで処理するのがよい、
>と聞きかじったので、チャレンジしてみました。

 これはどうでしょう?
 アクセス以外といっても、VBやExcelなどなど?
 ADOをサポートしている言語?
 言語が変われば若干書き方が変わってきたりするん
 ですよ。そうすると使えるところは、SQLだけって
 いうことになってしまうケースが多々あります。

 移行可能な方法があれは、私も教えてほしいです。

>SQL(Oracle)はわかるのですが、VB等の知識がなく(Accessも初心者)
>悪戦苦闘しています。

 SQLが分かるのであれば、RecordCountを使わずに

 strSQL = ""
 strSQL = strSQL & "SELECT COUNT(*) As 件数 FROM テーブルA"
 strSQL = strSQL & " WHERE ID=5"
 rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic

 MsgBox rs("件数")

 で件数を調べた方が良いです。
2,404 hits

【4131】ADOのレコードセットをフォーム(一覧)に表示 みほ 05/1/12(水) 19:09 質問
【4134】Re:ADOのレコードセットをフォーム(一覧)... かろちん 05/1/13(木) 0:31 回答
【4142】Re:ADOのレコードセットをフォーム(一覧)... みほ 05/1/13(木) 23:17 発言

9012 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free