アクセス2000で販売管理を作成しています。
顧客マスター処理で顧客番号をオートナンバーに設定しているのですが顧客データ入力フォームに中止するボタンを用意して、押されると入力中のデータは保存されないようにしています。(コマンドボタンウイザードでレコードを元に戻す)を使用
これで、中止を押して再度登録するとオートナンバーが
1つ飛んでしまいます。
例 顧客番号3で入力中中止ボタン押下後、再度新規登録すると顧客番号が5になってしまう。
これを無くす方法(4になるように)はありますでしょうか?
それと欲張りで大変申し訳ないのですが、
コンボボックスにキーボードからの入力をさせないようにする方法はありますか?
どうぞよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> 例 顧客番号3で入力中中止ボタン押下後、
> 再度新規登録すると顧客番号が5になってしまう。
> これを無くす方法(4になるように)はありますでしょうか?
基本的にはありませんが、たとえば顧客番号3で中止して、再度新規登録する前に 「最適化」をすると4からはじめられる場合があります。
ただこれもOSやその他の状況(Jetエンジンのバージョン等)によって違うみたいですので、100%の解決策ではありません。また、最適化意外に直接的な解決策はありません。(連番が主キーの場合は。)
一番いいのはオートナンバーを使わずに、プログラムでオートナンバーを作る方法です。
フォームの挿入前イベントなどに、DMAX関数を使ってインクメント(+1ずつふやす)する方法などです。
If DCount("*","フォームのソースとなるテーブル名") = 0 Then
Me!連番フィールドと連結するテキストボックス名 = 1
Else
Me!連番フィールドと連結するテキストボックス名 =DMax("連番フィールド名","フォームのソースとなるテーブル名")
End If
みたいな感じで。
オートナンバー型の値を連番フィールドや主キーなんかにしたりするとあとあと困ることが多いですので、できればオートナンバーは使わないほうが良いかと思います。
メンテの楽なデータベースを作る基本が「オートナンバーを使わない」ということです。マイクロソフトはなんでこんな使えないオートナンバーを放置しておくのか不思議でたまりませんが・・・
そのほか、連番テキストボックスの「既定値」に、
=DMax("連番フィールド名","フォームのソースとなるテーブル名")
などと書いても良いと思います。
ただしこの場合はテーブルにレコードが1つも無い場合に最初の値を入れられないので、最初だけ1を入れておくか、IIF関数なども使うといいかもしれません。
僕は、フォームの挿入前イベントに前述のようなプログラムコードを書くのが一番好きです。
早速のお返事ありがとうございました。
教えていただいた方法で解決いたしました。
ほんとうに助かりました。
これで何とか次に進めそうです。
上手くできたときは本当にうれしかったです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) Excel 指定した固有番号で、複数の行を削除する方法は? 2 2022/03/30 15:18
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Excel(エクセル) 関数の式を教えてください 2 2022/04/04 11:15
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- その他(開発・運用・管理) マイクロソフト製品のライセンス販売で困ってます 1 2022/06/30 19:52
- その他(データベース) accessについて 2 2022/05/31 16:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2013VBA 複数のテーブル...
-
テーブル1 2 3 の結合
-
文字化け、記号の含まれるフィ...
-
Accessで名寄せグループの関係...
-
SQLの結果がNULLならタブを出す...
-
ACCESS で マクロの中でフィ...
-
ADOでレコードを閉じるタイミン...
-
ファイルメーカーの集計につい...
-
アクセスクエリの計算
-
Excel 2019 のピボットテーブル...
-
Accessのリンクテーブルのパス...
-
DBのタイプの指定とサイズにつ...
-
IT用語について質問です。 以前...
-
accessでのフォームの連携について
-
「直需」の意味を教えてください
-
APN設定について教えていただけ...
-
BIOSでAHCIに設定したいが、項...
-
ACCESSでテーブルのフィールド...
-
Excelで空白以外の値がある列の...
-
エクセルVBAで5行目からオート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAでクエリーのレコー...
-
Access IF文でテーブルに存在し...
-
データベースの1要素に複数デー...
-
ワードでの単純作業の効率化に...
-
Access フォームのデータがテー...
-
ACCESS で マクロの中でフィ...
-
Accessデータベースで行と列を...
-
ワードで保存するファイル名の...
-
別のDBからテーブルをコピーす...
-
ADOでレコードを閉じるタイミン...
-
Accessで名寄せグループの関係...
-
シングルクォーテーションとダ...
-
Access 縦(行)のデータを横(列)...
-
顧客IDを入力すると顧客名や住...
-
Access クエリ このレコードセ...
-
(ACCESS)連番取得について
-
Access2000 単票フォーム上の...
-
Access 既に開いているフォー...
-
文字化け、記号の含まれるフィ...
-
Access2013VBA 複数のテーブル...
おすすめ情報