こんにちは。
教えてください。
オートナンバー型を利用せずに単票フォームからNOフィールドのデータを入力したいのです。 ↓こんな考え方で
レコード新規作成時 : NO 規定値 総レコード件数+1
です。
オートナンバー型を利用するとたとえばNO10を後での削除をすると
その10は欠番になり利用不可ですよね。
そこらへんは柔軟に必要があればいつでも欠番になっている10という値をNOフィールドに手入力で再利用したいのです。
いろいろ調べてみたのですがいい感じな方法が見つけられませんでした。
お願いします!!
No.2ベストアンサー
- 回答日時:
> レコード新規作成時 : NO 規定値 総レコード件数+1
> 必要があればいつでも欠番になっている10という値をNOフィールドに手入力で再利用したい
連番の途中に生じた欠番は、使っても問題がないかを管理者が確かめて手入力する一方、
通常の連続入力時は、自動で「最大値+1」を入力したい、ということでよろしいでしょうか。
そうであれば、ご質問の『No』フィールドの既定値に、以下のような式を設定すれば、ご要望に
沿うかと思います:
=Nz(DMax("[No]","テーブル1"),0)+1
※上記の式は、テーブル名が「テーブル1」とした場合のものですので、必要に応じて編集してください。
なお、Nz関数は、1個目の引数に指定したものがNullだった場合に、2個目の引数で指定した値に
読み替える関数です。
(詳しくはAccessの「オフライン時のヘルプ」で、「Nz関数」をキーワードに検索して、そちらを参照して
下さい:「Microsoft Office Online」のヘルプだと、たどり着くのに手間がかかります)
ですので、既に入力済みのデータがある状態での「フォームの改変」の場合は、
=DMax("[No]","テーブル1")+1
でも事足ります。
また、「既定値は最初から値が表示されていて気持ち悪い」という場合は、フォームの挿入前イベントで
値を代入してやる手もあります。
VBA:
Private Sub Form_BeforeInsert(Cancel As Integer)
Me!No = Nz(DMax("No","テーブル1"), 0) + 1
End Sub
マクロ:
フォーム・挿入前イベント=マクロ1
マクロ1の内容
アクション : 値の代入
アイテム : Forms!フォーム1!No
式 : Nz(DMax("[No]","テーブル1"),0)+1
※ここの「式」では、先頭の等号は無用です。
・・・以上です。
ありがとうございます。
私が伝えたかった思いがうまく書けなくて×××のまま誤って[送信]ボタンを押しておりました。にもかかわらず的確に私の思いをくみ取っていただき感謝です。
これから出社でまだ教えていただいた操作は確認はしておりませんが
恐らくうまくいきそうなきがします。
あまりにも嬉しくて先にお礼を述べております。
*「既定値は最初から値が表示されていて気持ち悪い」という場合は*
そうなんです!
わかっていただけてうれしいです。
本当にありがとうございます。
ゆるゆるなDBを作りたいのですがなおかつ、自分の実力がないにもかかわらずわがままな欲求ばかりむくむくとおこってしまい困っております。自分で自分の首を絞めております((+_+))
でも嬉しいです。本当に思いをくみ取っていただきありがとうございました。
No.1
- 回答日時:
直接の回答ではありませんが、
> いろいろ調べてみたのですがいい感じな方法が見つけられませんでした。
これは、ある意味当たり前のことで
データベースではID等の「レコードを一意に認識するため」の番号を使い回すのは、「非常に危険な」ことです。
データベースがグチャグチャになるおそれがあります。
従ってこのようなことをすることがないため、情報が少ないのだと思われます。
たとえば、商品マスタなどで「A商品」のIDである「商品番号」を削除して、別の「B商品」の「商品番号」として使い回すと、
既に入力されている「A商品」の売上データも「B商品」の売上として紐付けされてしまいます。
あえてやるなら、欠番のテーブルを作るなどの方法はありますが、
テーブルを総なめにするようなコードになるので、レコードが多くなってくると時間がかかり、実用的とは言えません。
また、もともとAccessにはレコード番号という概念がありません。
行番号を表示したいだけなら、フォームやレポートで一時的に作り出します。
老婆心ながら....
アドバイスありがとうございました。
私もIDフィールドのコンセプト?考え方は知っているつもりです。
だから・・・なかなか融通をつけづらいというのも道理がいきます。
ただ今回管理したいDBはエクセルでもいいような代物です。
にもかかわらずACCESSを利用するのは入力する人間が
不特定多数そして何件顧客がいるのかという状況を知りたいという方も不特定多数おります。
各々欲しい情報や入力する情報が異なる可能性がありましてEXCELでは誰が入力してもとか誰でも欲しい情報を簡単に(なるべくワンクリックで)という事が私ではちっと難しいかな?じゃぁ制限をかけやすいACCESSで・・ということなのです。
きっちりしない方法という方向で考えておりました。
がしかし再確認させていただき感謝です。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Yahoo!メール YahooIDをパスワード形式にしただけなのに、利用規約違反とされて電話番号が使えなくなりました 1 2023/03/15 20:44
- Visual Basic(VBA) マクロで設定時刻の入力がわかりません 2 2022/03/29 02:24
- Yahoo!メール YahooIDをパスワード形式にしただけなのに、利用規約違反とされて電話番号が使えなくなりました 3 2023/03/25 04:08
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
尿検査の前日は自慰控えたほう...
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
1日前の検尿
-
今朝、毎朝の習慣でオナニーし...
-
射精をして1週間以内に尿検査を...
-
変な話しになります。尿検査で...
-
男です。昨日の午後3時くらいに...
-
検便についてです。 便は取れた...
-
EXCELで条件付き書式で空白セル...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
口の中に黒い血の塊
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
2つの数値のうち、数値が小さい...
-
エクセルでエラーが出て困って...
-
舌の裏の痛みのないプツプツの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報