へっぽこヘタレシステム管理者の管理人です。
さて、今回は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】には続投して貰いたいです。
コメント