質問: access+sql serverで主キーを自動採番する access+sql serverで主キーを自動採番する accessを独学で勉強を開始しているものです。 顧客管理のようなものを作りたいと思っているのですが、 オートナンバーではない主キー(顧客コード)を設定しているテーブルがあります。 顧客コードの構成はアルファベット1文字+数字8桁です。 そのうち、数字は西暦2桁+月2桁+日2桁+下2桁は連番です。 access2007プロジェクトで、sql server 2005 express editionへ接続しテーブルは作ってあり、既に顧客データが10件ほど入っています。 新規に顧客データを追加する際に、必要事項を入力し、登録ボタンを押した段階で顧客コードを自動生成し、重複チェックし、採番したいと考えています。 アルファベットは必要事項入力時に入力済み、日付もその日の日付を6桁設定し、とりあえず「01」と下2桁を採番して、現在のデータに同じものがないかチェックします。 そして、同じものがあれば「01」+1を繰り返しながらチェックしていくというようなコードはどのようにすればいいでしょうか? わかりづらいとは思いますが、よろしくお願いします。
回答: select max(mid([顧客コード], 8, 2)) as [連番最大値] from 顧客テーブル where [顧客コード] like アルファベット1文字 & 西暦2桁 & 月2桁 & 日2桁 group by mid([顧客コード], 1, 8) <--- left([顧客コード], 8)でも可 ; これで[連番最大値]が取得できたなら1加算。取得できなければ1を代入。 formar([次の連番], "00")で整形して連結。 select投げる前に、連番までのキー情報を作成して変数に入れとくほうがよさそうですね。