« ウェブ関連クイズ出力 | トップページ | Informixでもexplainできた(^^; »

2006.05.25

ADOのRecordCount

AccessのプログラムをフロントエンドはそのままにバックエンドのみInformixに変更というよくわからない作業中(^^;
で、ネイティブ接続はできないのでODBC接続で対応するわけであるが、DAOはかなりいやーんな挙動をするのでADOに書き換え。

元々のプログラムのある分岐条件では rs.RecordCount > 0 というのを使用していた。
これはTOP 1 (これはFIRST 1に変更済み)で特定行があるかどうかを判定し、それによって処理をわけていたのである。
しかしながらInformixのOLEDBは[VB] ADO Recordset で RecordCount プロパティが -1 を返す場合という悪名高い条件に該当するやつで、どんなことをしてもRecordCountが-1になってしまう。
レコードがないときに-1になるのかと思い、rs.RecordCount <> 0 という分岐にしてみたが、どうもどうやっても-1を返すらしい。
rs.MoveLastなどもダメ。カーソルの機能が限定されているんだな。

しばらくうなった後気がついた。
レコードが0のケースというのはrs.EOFとrs.BOFがともにTRUEになっている。
そこで条件として (rs.EOF = FALSE and rs.BOF = FALSE)に変更。
これでようやく事なきを得ることができた、ふうっ(^^;

|

« ウェブ関連クイズ出力 | トップページ | Informixでもexplainできた(^^; »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/10231941

この記事へのトラックバック一覧です: ADOのRecordCount:

« ウェブ関連クイズ出力 | トップページ | Informixでもexplainできた(^^; »