プロが教える店舗&オフィスのセキュリティ対策術

EXCELではROW()関数で行数を付けることが出来ますが、ACCESSで同様の方法はあるのでしょうか。クエリでROW関数を入れると未定義と出ますし、テーブルにオートナンバーの行を付けて、データを一度クエリで削除した後追加クエリを実行しても1からの連番にならないので困っています。
クエリでROW()関数と同じ方法、またはテーブルでオートナンバーを1からふり直す方法があれば教えてください。

A 回答 (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になるという事です。
質問の中にオートナンバー型のフィールドとあるのでユニークなフィールドはオートナンバーのフィールドでもかまいません。主キーのように他と重複しないフィールドを指定してください。
    • good
    • 2
この回答へのお礼

ありがとうございました。
おかげで完成しました。
実は新たな質問が出来ましたのでよろしかったらそちらでもよろしくお願いします。

お礼日時:2006/01/18 11:35

DCount(*,テーブル名,criteria) AS 連番


でクエリ上で連番を振れます。
>テーブルでオートナンバーを1からふり直す方法があれば教えてください
>データを一度クエリで削除した後追加クエリを実行しても1からの連番にならない
テーブルのレコードを削除して新たにレコードを追加しても続きから採番されるだけなので出来ません。
テーブルのオートナンバー型のフィールドを1度削除して新たにオートナンバー型のフィールドを作れば出来ます。

この回答への補足

早速の回答ありがとうございます。
DCount("*","[テーブル名]") AS 順番
という風に作ったのですが、全てレコードの総数
がかえってくるのですがこの構文では間違っている
のでしょうか?
順番 構成比  累計
1  3.9  3.9
2  3.0  6.9
3  2.5  9.4
・   


※構成比の降順でソート
という感じにしたいのですが。

補足日時:2006/01/16 14:18
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A