|
みほ さん こんばんは
>(かろちんさん、いつもありがとうございます)
お気遣いありがとうございます。
でも、これを書くのは止めた方が良いと思います。
優秀な回答者よりレスが来なくなる原因になるかも
しれません。
これを書くなら、その人からレスがきたときに書く
方が良いですよ。
>実行すると、ケース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("件数")
で件数を調べた方が良いです。
|
|