こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

RecordCount プロパティ

ASP+Access2003+ADODB接続
という環境で開発をしております。


StrSQL = "select count(*) from table"
Open.StrSQL, conn
xRecount = StrSQL(0)
とすれば、単純に取得することはできますが、

SQL自体がカウント集計の結果の場合、
その集計結果のレコード件数を取得したいと思ったのですが、よく分かりません。

例えば、
select fDate, count(*). from tTable
where fDate >= '2006-08-01'
group by fDate
のようなSQLの結果の件数です。

8月1日以降のデータの件数を返したときに、
その結果
8/110件
8/20件
8/33件
となれば2が欲しく

8/10件
8/20件
8/30件
となれば0が欲しいわけです。

どうすれば取得できるでしょうか?
よろしくお願い致します。


ちなみに・・・
SQLServerの環境においては、
StrSQL = "select * from table"
Open.StrSQL, conn
xRecount = StrSQL.RecordCount
で取得できるのですが、ACCESSだとダメのようです。

投稿日時 - 2006-08-04 22:37:08

QNo.2320058

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

素人ですので直接的な回答をする能力はありませんが・・・。
.RecordCount を求めたい訳ではないようですね。
例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。

Select Count(*) AS X From Test Group By Test Having Count(*)>0;

投稿日時 - 2006-08-05 10:52:33

補足

noname#22222様
bonaron様
大変レス遅くなり申し訳ありません。
いろいろと調べた結果、大体以下のようなことがわかりました。

【前提として・・・】
環境DBDataConnectionの方式
ASPAccess2003ADODB
となっています。

【結論としては・・・】
この組み合わせにおいて、レコードセットのRecordCountプロパティというものが、うまく働かないということが分かりました。
(正確には、ASP+SQLServerの環境ではできるが、アクセスだとダメということです・・・ネットでいろいろ書かれていました)

ということで、違う方法を考えることになりました。

でやはりSQLを発行するわけですが、
例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。

Select Count(*) AS X From Test Group By Test Having Count(*)>0;
で、いけそうですね。試してみます。

ありがとうございました。

投稿日時 - 2007-02-02 18:04:55

ANo.1

ASP は存じませんが。

> 例えば、
> select fDate, count(*). from tTable
> where fDate >= '2006-08-01'
> group by fDate

Select Count(*) FROM (
select fDate, count(*). from tTable
where fDate >= '2006-08-01'
group by fDate
)

で取得できます。
(Provider=Microsoft.Jet.OLEDB.4.0、ExcelVBAにて確認)

> xRecount = StrSQL.RecordCount
> で取得できるのですが、ACCESSだとダメのようです。

接続プロバイダ、CursorLocation、CursorType の組み合わせによって、
RecordCount でも取得できます。

ASP での構文はわかりませんが
Open.StrSQL, conn, 1, 1
としてみるとか、
conn.CursorLocation = 3
を加えることで取得できるかと思います。

投稿日時 - 2006-08-05 09:39:57

あなたにオススメの質問