Microsoft Access 掲示板

SQL内でDcountがうまく作動しません。

1 コメント
views
4 フォロー

Access で以下のようなテーブルがあります。

★tblfood

codename
A0001Apple
A0001orange
A0001melon
A0002grape
A0002peach

このテーブルからクエリーで、「code」ごとに連番を振りたいのです。
想定する結果は以下です。

codenname
A00011Apple
A00012orange
A00013melon
A00021grape
A00022peach

以下のクエリを組んでみました。

select code,DCount("*","tblfood","code <=" & [code]) AS n,name
from tblfood;

しかしながら、結果は n列に「#エラー」と表示されるばかりで、
それをクリックすると以下のようなメッセージがでます。

クエリ パラメーターとして指定した式でエラー 'このオブジェクトには、オートメーションオブジェクト 'A0001'は含まれません。'が発生しました。

どのようにすれば解決するでしょうか、お知恵をお借りできれば幸いです。

けい
作成: 2020/04/22 (水) 19:04:42
最終更新: 2020/04/22 (水) 19:08:44
通報 ...
1

codeフィールドはテキスト型ですので、SQLは下記のようにしてください。

select code,DCount("*","tblfood","code <='" & [code] & "'") AS n,name
from tblfood;

これでエラーに出なくなると思います。
ただし、これだけでは連番になりません。一意に決まるフィールドが必要になります。

下記を参照してください。
DCountでする方法、
サブクエリを使う方法、
VBAで入力する方法、
汎用関数を使う方法
を紹介しています。

グループ毎連番を自動入力する関数 - hatena chips

汎用関数を使う方法がコピーするだけで簡単に使用できますのでお勧めです。処理も高速です。