- ベストアンサー
ACCESSでの関数について
EXCELではROW()関数で行数を付けることが出来ますが、ACCESSで同様の方法はあるのでしょうか。クエリでROW関数を入れると未定義と出ますし、テーブルにオートナンバーの行を付けて、データを一度クエリで削除した後追加クエリを実行しても1からの連番にならないので困っています。 クエリでROW()関数と同じ方法、またはテーブルでオートナンバーを1からふり直す方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>DCount("*","[テーブル名]") AS 順番 ではcriteriaがありませんのでテーブルのレコード件数が返ってしまいますのでレコード件数しか取得できません。 criteriaは省略可能ですが演算対象となるデータの範囲を指定する文字列式です criteriaの部分でユニークなフィールドをつかって自分より同じか小さいレコード件数を求めさせます。 例えばユニークなキーがIDであり場合は "ID<=" & [ID] のように指定しレコード件数を出します。 順番 ID 構成比 累計 1 A1 3.9 3.9 2 A2 3.0 6.9 3 B1 2.5 9.4 であればDCount(*,テーブル名,"ID<=" & [ID]) AS 順番 とするとID:A1は自分より同じか小さいキーがA1しかないため1レコードとなり順番は1になりID:A2は同様にA2と自分より小さいA1があるため順番は2となります。ID:B1も同様で3になるという事です。 質問の中にオートナンバー型のフィールドとあるのでユニークなフィールドはオートナンバーのフィールドでもかまいません。主キーのように他と重複しないフィールドを指定してください。
その他の回答 (1)
- O_cyan
- ベストアンサー率59% (745/1260)
DCount(*,テーブル名,criteria) AS 連番 でクエリ上で連番を振れます。 >テーブルでオートナンバーを1からふり直す方法があれば教えてください >データを一度クエリで削除した後追加クエリを実行しても1からの連番にならない テーブルのレコードを削除して新たにレコードを追加しても続きから採番されるだけなので出来ません。 テーブルのオートナンバー型のフィールドを1度削除して新たにオートナンバー型のフィールドを作れば出来ます。
補足
早速の回答ありがとうございます。 DCount("*","[テーブル名]") AS 順番 という風に作ったのですが、全てレコードの総数 がかえってくるのですがこの構文では間違っている のでしょうか? 順番 構成比 累計 1 3.9 3.9 2 3.0 6.9 3 2.5 9.4 ・ ・ ・ ※構成比の降順でソート という感じにしたいのですが。
お礼
ありがとうございました。 おかげで完成しました。 実は新たな質問が出来ましたのでよろしかったらそちらでもよろしくお願いします。