アプリ版:「スタンプのみでお礼する」機能のリリースについて

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だとダメのようです。

A 回答 (2件)

素人ですので直接的な回答をする能力はありませんが・・・。


.RecordCount を求めたい訳ではないようですね。
例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。

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

この回答への補足

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
    • good
    • 0

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
を加えることで取得できるかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!