Accessで自前の自動採番処理で採番テーブルを作り、その採番テーブルに格納してある最後の主キーのNO.を取得して、それに1加算したものを、新規レコードの主キーの自動採番処理結果として設定するやり方を考えていますが、その場合に
1) 複数レコードにエクセルなどから複数行データをコピーして貼り付けた場合には、採番がうまくいくのでしょうか?行かない場合には、その対処策はありますでしょうか。
2) 一行、または、複数行を削除した場合には、採番は既に登録済みの最後のNo.から自動採番するようになると思いますが、通常のアクセスのシステムでは、このような挙動で宜しいのでしょうか?
ご回答のほうよろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1 の回答は番号フィールドにNull がある複数のレコードが存在する場合の
サンプルです。
※最後に採番テーブルの番号の値を変更するのが抜けてました。
rs.close:set rs =nothing の前に
currentdb.execute("update 採番テーブル set 番号 =" & maxnum)
を追加してください。
1レコードずつ手入力で行っている場合はまた別の話になります。
フォームのレコード移動時イベントに
if me.newrecord then
me!フォームの番号コントロール名 = Nz(DMax("番号", "採番テーブル"), 0) +1
・・・とかになりますが
採番テーブルの方の番号を更新するタイミングは更新前処理に行えば
良いでしょう。
が、もしかしてマルチユーザー環境で・・・と考えているのなら
全部忘れてください。ハードルがぐっと上がりますので確かな回答は出来ません。
こちらが参考になるかと思いますけど。。。
[VB] DAO でユーザー定義カウンターを実装する方法
http://support2.microsoft.com/default.aspx?scid= …
私からは以上です。
ご回答ありがとうございます。マルチタスクなら忘れてと言われましても、なかなか忘れられませんのですが・・・
このリンクの先のソースを見ましたけど
>' テーブルを排他オープン (テーブルが使用中の場合はここでエラーが発生)
> Set rs = db.OpenRecordset(TableName, dbOpenTable, _
> dbDenyRead Or dbDenyWrite)
このOptionのおまじないで、レコードセットを閉じるまでは他のユーザがそのテーブルを開く事は出来ないようですが、これを使えば、例えば、採番テーブルの更新を、例えば、単票Form(非連結)のもので、新規レコードの登録をスル場合に、行えば、邪魔されずに+1した番号を採番テーブルにセットできるということでしょうか?でも、同じデータの新規レコードを他のユーザも登録しようとした場合に、問題が起きるということでしょうか。これを考えだすと、混乱してしまいます。
例えば、単票Formにレコードを読み込む時、そのレコードの最終更新時間を取得しておき、登録処理で、再度、同じレコードの最終更新時間を取得して、その2つの時間を比較して、同じであれば、保存、違う場合、ユーザに知らせ、保存するか、キャンセルするか決めてもらうような処理を普通するのでしょうか?
なんとかならないものでしょうか。
忘れて下さいというのは、つまり、オートナンバーを使えということでしょうか。困りました。
No.1
- 回答日時:
とりあえず取り込んでおいてから
dim db as database
dim rs as dao.recordset
dim MaxNum as long
set db=currentdb
set rs=db.openrecordset("select 番号 from 採番テーブル where 番号 is null",dbopendynaset)
maxnum=dmax("番号","採番テーブル")
do until rs.eof
rs.edit
maxnum=maxnum+1
rs!番号 = maxnum
rs.update
rs.movenext
loop
rs.close:set rs =nothing
set db=nothing
のようなのを走らせればよろしいかと。
>エクセルなどから複数行データをコピーして貼り付け
ということはめったに行いませんけど。
一意の番号であれば問題ないので欠番があっても問題ありません。
ご回答ありがとうございます。
採番テーブルから主キーの値を取得して、それに+1したものを、例えば単票フォームの新規レコードの主キーにセットスル場合、単票フォームのロード時にこの処理をやればよいでしょうか?
そして、そこで入力したデータを「登録」ボタンを押して、テーブルAに登録する処理の時に、採番テーブルの主キーを更新する処理をやる・・・このような感じで宜しいのでしょうか?→取消ボタンを押した場合には、採番テーブルは処理しない
あと、帳票フォームの場合には
Form_BeforeUpdateの処理でこの採番テーブルから値を取得する処理を実行すれば良いのでしょうか?
帳票のAフォームにて、レコードを修正した場合、登録ボタンにて、採番テーブルを更新し、Aテーブルに変更内容を登録する・・・という感じで考えていますが、これで宜しいでしょうか?
次々に質問してしまい申し訳ありませんが、
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- ラジオ 同じラジオネームの人が複数のラジオ番組に何度も投稿が採用されるのは何故でしょうか? 乃木坂46や櫻坂 3 2022/09/25 07:01
- 妊活 体外受精 採卵前の夫の禁欲期間について 6月から体外受精の前準備でピルを服用し、 只今自己注射を打っ 2 2023/07/10 15:49
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
前回の年越しの瞬間、何してた?
いよいよ2025年がやってきますね。 年越しのスタイルは人それぞれ。 2024年を迎える瞬間は何をしていましたか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
accessでオートナンバーを使わずに「文字+数字」の自動採番する方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
最新の日付とその金額をクエリ...
-
ACCESSでVBAを用いて自動的に番...
-
Access 文字+年ごとの自動採番
-
ACCESSでの行番号の自動採番
-
access 請求番号の自動採番
-
Accessでのレコード存在チェック
-
access 自動採番 「10-AA-000...
-
条件をつけて日付の古い行を抜...
-
【アクセスVBA】テーブルにフィ...
-
access 自動採番 年が変わる...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
SELECTで1件のみ取得するには?
-
Excelで、改行がある場合の条件...
-
Access終了時の最適化が失敗?
-
select句副問い合わせ 値の個...
-
レコードが存在しなかった場合
-
カレントレコードが無い事を判...
-
実績累計の求め方と意味を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
最新の日付とその金額をクエリ...
-
Accessで日付が変わると番号が...
-
access 自動採番 年が変わる...
-
Accessでのレコード存在チェック
-
【アクセスVBA】テーブルにフィ...
-
条件をつけて日付の古い行を抜...
-
access 自動採番 「10-AA-000...
-
vba 直前の操作はキャンセルさ...
-
アクセスで「空き番」の確認
-
Access:抽出して、色をつけたい。
-
[Access]異なるレコード間の文...
-
Access 文字+年ごとの自動採番
-
質問です。 下記のテーブルとデ...
-
【Access】選択クエリのグルー...
-
Recordset.FindFirstについて
-
access 請求番号の自動採番
-
Accessで自前の自動採番処理で...
-
〜のような結果を出すためのSQL...
-
ACCESSでの行番号の自動採番
おすすめ情報