掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TADOQueryのCursorLocationについて (ID:44677)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
解決のご様子ですが・・・。 何故なんでしょうか? DBによって違うのでしょうか? ADOではSQLServer,MDBを使っていますが、RecordCountが取得できない なんて事はありませんでした。 ADOは前方向カーソルなどRecordCountが取得できない場合は-1を返します。 私はRecordCountを知りたい場合はclUseClient、ctStaticに設定します。 静的カーソルで無いとデータセットの正しいレコード数がわからないし、 取得後も静的なので不変だからです。 clUseClientにctStatic以外を設定しても意味がありません。 逆にclUseServerにctStaticを設定しても意味はありません。 クライアントにカーソルがある場合は、静的以外には無く サーバーにカーソルがある場合は静的にできないからです。 設定してもADOは実行時にプロパティ値を変えてしまいます。 サーバーカーソルで例えRecordCountが取得できたとしても、それは その後のデータセットの正確なレコード数では無くなる事もありえます。 これはCount(*)で事前にレコード数を取得した場合と全く同じ事と言え ます。 なので、余計なお世話ですがCount(*)でレコード数を取得した後に 再度抽出文を発行したデータ操作にその値は使わない方が良いと思い ます。 そんなことは絶対に無い仕様なら構いませんが、Count(*)と次点の SELECT文の間にデータが変更される事もあるからです。 危険性があるなら参考程度になるコードを書くべきだと思います。 これは仮にclUseServerでRecorCountが取得できたとしても同様なのは 同じ事が言えるからです。 と持論を展開してみました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.