• 締切済み

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

みんなの回答

noname#22222
noname#22222
回答No.2

素人ですので直接的な回答をする能力はありませんが・・・。 .RecordCount を求めたい訳ではないようですね。 例えば、次のような Select文でないと RecordCount と欲する値は一致しないと思います。 Select Count(*) AS X From Test Group By Test Having Count(*)>0;

G3MEN
質問者

補足

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; で、いけそうですね。試してみます。 ありがとうございました。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.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 を加えることで取得できるかと思います。

関連するQ&A