• ベストアンサー

ACCESS ADO Whereで取得したデータのナンバーを取得する方法

お世話になります。 ACCESSで管理ソフトウェアを作成しているのですが、 ある配列変数 data(1 to 40)があり、 ADOでデータベースから Where句を使い、必要なデータを引き出し変数へ入れています。 引き出しているレコードの、レコードカウント数を変数に入れたいのですが、どうすればいいのでしょうか? RecordCountでは引き出したレコードの最大数をとってしまうためできませんでした。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • agricap
  • ベストアンサー率40% (79/195)
回答No.3

単純に、カウンタ用の変数を用意すればよいのでは? 以下のような感じです。 Dim lngRecordCount as Long lngRecordCount = 0 Do Until rs.EOF   (必要なデータかどうか判定)   If (必要なデータなら) Then     lngRecordCount = lngRecordCount + 1     data(lngRecordCount) = rs!XXXX   End If   rs.moveNext Loop

teas
質問者

お礼

ご返答ありがとうございます。 やはり、変数を用いてカウントを取らないといけないのでしょうか?

その他の回答 (4)

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.5

行番号はレコード数と同じと考えてください。 例では新規にレコードを作成する際、行番号が順番にふられます。 VBA側でカウントすることもできますが、できればサーバー側 でできるようにしたほうが処理は早いと思います。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>RecordCountでは条件に見合うデータ数をとってしまっていてレコードセットのカウント数が取得できなかったため レコードセットにしてしまった後はループさせてカウントするしかないと思いますが。 もう一つレコードカウントを取りたい条件にあったSQLを発行して先にカウントさせておくとか。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>引き出しているレコードのレコードカウント数を変数に入れたい 変数名 = Me.Recordset.RecordCount で変数に代入できませんか。 >RecordCountでは引き出したレコードの最大数をとってしまうためできませんでした この辺が良く理解できていませんが・・。 引き出しているレコードのレコードカウント数とRecordCountで取得できるレコード数は一緒ではないですか? 開いているレコードセットからさらに絞り込んでレコード数をカウントするという事なのでしょうか。 別の抽出条件を付けてレコードセットを取得してカウントすれば良いのでは?

teas
質問者

お礼

ご返答ありがとうございます。 Do Untilを使用し、条件に見合うデータを抽出しているのですが、RecordCountでは条件に見合うデータ数をとってしまっていてレコードセットのカウント数が取得できなかったためです。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

ADO ということは 接続先は MSDEとかOracle あるいはSQL Server とかいろいろあります。 また、ACCESS のバージョンは何を使用しているかによりかなり違ってきます。 仮にMSDE(SQL SERVER2000)  とすれば IDENTITY用いた方法があります。 例:  SELECT (IDENTITY(int, 1, 1) AS 行番号, ユーザーTBL.* INTO #WKユーザーTBL.* FROM ユーザーTBL Where あなたが書いた 条件 ORDEr BY あなたが書いた順番 あとは 作成された#WKユーザーTBL を接続して 読み込めば 行番号がわかります。 最新の MS SQL Server 2005 では 新しく SQL の関数で row_number が追加されました。 詳細は マイクロソフトの公式ページ MSDN ライブラリ あるいは BooksOnline などを閲覧してください。 SQL SERVER 2005 Expressは無料でダウンロードできます。 例:  SELECT ROW_NUMBER() OVER (ORDER BY あなたが指定するレコードKey)  AS 行番号, FROM ユーザーTBL Where あなたが書いた 条件 ORDEr BY あなたが指定するレコードKey 参考程度ですががんばって勉強してください。

teas
質問者

お礼

ご返答ありがとうございます。 環境はACCESS + SQL Serverです。 行番号ではなく、読み込んだレコード数をループ中にいくつか?が知りたいです。(><)

関連するQ&A

専門家に質問してみよう