ACCESSでグループ毎に連番を振る方法【Dcount】は結構難しい?

スポンサーリンク
050-VBA

へっぽこヘタレシステム管理者の管理人です。

さて、今回はACCESSで簡単なシステムを内製しているのですが、

グループ毎に連番を振る必要があり、

イロイロと試してなんとかできたので忘備録として掲載しておきます。

Oracleなら簡単

OracleでSQLを使う場合は・・・

下の【row_number】か【rank】構文を使えば簡単にできます。

row_number() over(order by カラムA,カラムB,カラムC,・・・・・) as 連番
rank()over(partition by カラムX order by カラムA,カラムB,カラムC,・・・・・) as 連番

しかしACCESSでは、これの構文は使えないので【Dcount】を使うのですが・・・

これが結構ややこしい

Dcount

DlookupとDcountは似たような使い方をするのですが、

いずれの関数も【シングルクォーテーションとダブルクォーテーション】の使い方がややこしくて毎回苦戦します。

やりたいことは次の通りです。

ID 店舗 コード
10 あああ店 AAA
11 あああ店 BBB
12 かかか店 AAA
13 かかか店 BBB
14 かかか店 CCC
15 さささ店 AAA
16 さささ店 BBB
17 ううう店 BBB

上の表をカラムでグルーピングしれ連番を付けたいわけです。

スポンサーリンク

連番をつけると

連番をつけると下図のようになります。

店舗 コード ID 式1 式2 式3 式4 式5
あああ店 AAA 10 2 1 1 1 1
あああ店 BBB 11 2 2 2 1 2
かかか店 AAA 12 3 1 1 1 3
かかか店 BBB 13 3 2 2 1 4
かかか店 CCC 14 3 3 3 1 5
さささ店 AAA 15 2 1 1 1 6
さささ店 BBB 16 2 2 2 1 7
ううう店 BBB 17 1 1 1 1 8

式1は、店舗でグルーピングして番号を振っています。

式1: DCount("*","table_A","[店舗] = '" & [table_A]![店舗] & "'")

式2は、店舗でグルーピングし、コード毎に連番を振っています。

式2: DCount("*","table_A","[店舗] = '" & [table_A]![店舗] & "' And [コード] <= '" & [table_A]![コード] & "'")

式3は、店舗でグルーピングし、ID毎に連番を振っています。

結果は式2と同じですが、数字を使うかテキストを使うかでシングルクォーテーションの有無が異なっています。

式3: DCount("*","table_A","[店舗] = '" & [table_A]![店舗] & "' And [ID] <= " & [table_A]![ID])

式4は、店舗とコードでグルーピングし、ID毎に連番を振っています。

式4: DCount("*","table_A","[店舗] = '" & [table_A]![店舗] & "' And [コード] = '" & [table_A]![コード] & "' And [ID] <= " & [table_A]![ID])

式5は、グルーピングせずにID毎に連番を振っています。

式5: DCount("*","table_A","[ID] <= " & [table_A]![ID])

=と<=・>=の使い方

【=】はグルーピング

【<=・>=】は連番を振る際の昇順か降順

となります。

スポンサーリンク

とにかく条件が複数になってくると【シングルクォーテーションとダブルクォーテーション】の使い方で管理人はよく失敗してイライラします。

ACCESSファイルはgoogleドライブ共有しておきます。

ググれば結構ヒットするのですが、イマイチうまく行かないので、

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

最終的に自分デテストファイルを作成してイロイロと実際に試して、

ようやく出来るようになりました。

最近、WEBネイティブでローコードツールが流行っていますが・・・

まだまだオフラインで使えるACCESSは管理人的には重宝しております。

ただ、時代の流れ的にはどうなるのでしょうか?

今のところマイクロソフトもまだ【ACCESS】は販売してくれていますが・・・

そのうち【Power Apps】に取って代わられ、ACCSESSが無くなるという噂もありますので・・・

考えるだけで恐ろしい・・・

管理人はもはやモダン化できないので、

せめて定年を迎えるまでは【ACCSESS】には続投して貰いたいです。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました