- 締切済み
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/1 10件 8/2 0件 8/3 3件 となれば2が欲しく 8/1 0件 8/2 0件 8/3 0件 となれば0が欲しいわけです。 どうすれば取得できるでしょうか? よろしくお願い致します。 ちなみに・・・ SQLServerの環境においては、 StrSQL = "select * from table" Open.StrSQL, conn xRecount = StrSQL.RecordCount で取得できるのですが、ACCESSだとダメのようです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
素人ですので直接的な回答をする能力はありませんが・・・。 .RecordCount を求めたい訳ではないようですね。 例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。 Select Count(*) AS X From Test Group By Test Having Count(*)>0;
- bonaron
- ベストアンサー率64% (482/745)
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 を加えることで取得できるかと思います。
補足
noname#22222様 bonaron様 大変レス遅くなり申し訳ありません。 いろいろと調べた結果、大体以下のようなことがわかりました。 【前提として・・・】 環境 DB DataConnectionの方式 ASP Access2003 ADODB となっています。 【結論としては・・・】 この組み合わせにおいて、レコードセットのRecordCountプロパティというものが、うまく働かないということが分かりました。 (正確には、ASP+SQLServerの環境ではできるが、アクセスだとダメということです・・・ネットでいろいろ書かれていました) ということで、違う方法を考えることになりました。 でやはりSQLを発行するわけですが、 例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。 Select Count(*) AS X From Test Group By Test Having Count(*)>0; で、いけそうですね。試してみます。 ありがとうございました。