|
会員番号の自動採番を行いたいんですよね。
正規会員コードとありますが、そうでない方も同じテーブルに入力されているのでしょうか?
取り敢えず、コードについて書きますね。
>Private Sub Form_BeforeInsert(Cancel As Integer)
> If DCount("正規会員コード", "会員情報") = 0 Then
> Me![正規会員コード] = "222200000001"
まず、この部分ですが条件分岐させるために、Dcountで件数を拾い、件数が「0」つまり、まだ誰も会員登録されてなければ、めでたく第1号として「22220 00 00001」の初期値が与えられるんですよね。
ここで気づくことは、店番号の選択がされていないことです。
このコードのままでは、すべてのレコードを拾って、1件もなければ店番号「00」(そういう店番号はないと思いますが)の会員を初期化することになります。
ですから、このままでは不都合なのでDcount関数に条件を設定しなければなりません。
If DCount("正規会員コード", "会員情報","店番号=02") = 0 Then
Me![正規会員コード] = "2222 02 000001"
↑↑(スペースを入れたのは強調するためです。実際には連続数字でよいです)
これで店番号「02」の会員のみがDcountで拾われ、誰も登録していなければ、第1号として登録されるはずです。
店が複数ある場合は、コンボボックスなりで選択するようにすればいいかもしれません。
その場合は、
If DCount("正規会員コード", "会員情報","店番号=' & Me.cmb店番号 & "'") = 0 Then
Me![正規会員コード] = "22220" & me.cmb店番号 & "00001"
で、よいかと思われます。(「cmb店番号」こちらが勝手につけたもので、任意の名前でかまいません。「Me」は入力するフォームを指します)
次に、もしすでに同じ店で会員登録されていた場合ですが、ここは、Dcount()ではなくDMax関数を使うべきだと思います。
Else
me![正規会員コード] =Fromat(DMax("正規会員コード","会員情報","店番号=02")+1,"000000000000")
End If
End Sub
これで対象とする店から正規会員の最大コード番号を選ぶことになり、それに「1」を加算することによって、常に新規番号が振られることになります。
店番号を変化させたい場合は、最初のコードを参考にしてください。
考え方を示しただけで、実際にコードは走らせていませんので、不具合があったらご勘弁ください。
定義集域関数は、覚えると便利な関数なのでヘルプ等を参照することをお奨めします。
|
|