tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: 該当レコードが存在しない場合にRecordcount=1と返される
投稿日: 2014/07/10(Thu) 22:41
投稿者山田
魔界の仮面弁士様、ご回答有難うございます。

> > そもそもRecordcountを判断材料にするのは間違っているのか?
> 基本的には、RecordCount プロパティを使用するべきではありません。

了解です。根本的な間違いをしておりました。

> ここで具体的な理由について言及することは避けますが、ざっくり言えば
> レコードの存在確認なら EOF プロパティを用いるべきですし、
> 総件数を求めるなら、COUNT 集計関数を用いる方が望ましいです。

hogeの中での最大値を取得するのが目的でした。
その為に 0<Recordcount であれば.Fields(0).Valueを覗くつもりでした。
結果、IsNull(.Fields(0).Value)で判定してみました。

> 今回は、『集計関数』を使っているため、集計対象のデータが 0 件であっても、
> 集計結果のレコードは生まれることになります。

言われてみれば仰るとおりですね!結果レコードが格納されるレコードですものね!

> 『 HAVING MAX(hoge) IS NOT NULL 』を加えてみて下さい。
> 今度は .RecordCount が 1 を返さなくなるでしょうし、また、
> .Fields(0).Value から値が返されることも無くなるはずです。

確かに、HAVING〜を加えると、.Recordcount=0となり、
.Fields(0).Valueには格納されなくなりました!

求めるべきはhoge中の最大値。昔の私はMAXすら使わずに恥ずかしいコードを書いております…

「プログラムは思った通りに動かない。書いた通りに動く。」という言葉が思い出されました。
ありがとうございます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。