- ベストアンサー
Access2013の受注テーブルの伝票番号を自動採番する方法
- Access2013のデータベースで受注テーブルの伝票番号を自動採番する方法を教えてください。
- Data部とアプリ部でデータベースを分割していて、アプリ部のデータベースに受注テーブルをリンクしています。伝票番号を自動採番する際にエラーが発生しています。
- 受注テーブルの最大伝票番号に1を加えた結果を受注_tmpの伝票番号にセットして更新したいですが、エラーが出てしまいます。どうすれば解決できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いまいちイメージがつかないのですが。。 なんとなく、アプリ部DBに常に最大伝票番号+1の番号を もっておいて、処理するときにその番号を受注_tmpに セットしてあげればいいような気がします。 クエリ名:最新伝票番号 SELECT Max([伝票番号]+1) AS 最新伝票番号 FROM 受注テーブル; ちなみにアプリ部DBのフォーム上で必要項目を入力し、最終的に 登録ボタンが押されて初めて、最新伝票番号を採番するって 感じなのでしょうか。 であれば、登録ボタンが押されたときに最新伝票番号クエリより 最新伝票番号を取得し、その番号を受注_tmpに入れてやるって 感じでしょうか。 Dim New_No As String Dim MySQL As String Dim MyDB As Database Dim Mytable As Recordset Set MyDB = DBEngine.Workspaces(0).Databases(0) Set Mytable = MyDB.OpenRecordset("最新伝票番号", DB_OPEN_DYNASET, dbSeeChanges) Mytable.MoveFirst New_No = Mytable![最新伝票番号] MySQL = "UPDATE 受注_tmpテーブル SET 受注_tmpテーブル.伝票番号 = " & New_No & ";" DoCmd.SetWarnings False DoCmd.RunSQL MySQL DoCmd.SetWarnings True 試したらとりあえずうまくいきました(最新伝票番号クエリは1レコード しか表示されないはずなので、Mytable.MoveFirstは不要かも)。 あとは受注_tmpを追加クエリで受注テーブルに追加してやればよいかと 思います。 きっともっとよい方法があると思いますが、ご参考まで。
その他の回答 (1)
- panacon
- ベストアンサー率31% (214/679)
utdx019 さんへ 同様のことをフォーム上でマクロで行っています。 (1)レコードの移動、新規レコード (2)値の代入、代入先「伝票番号」、式「=Max("伝票番号","受注テーブル")+1 値の代入は通常は見えない設定になてちるので、すべてのマクロを表示を押すと出現します。
お礼
私のやり方が悪いのだと思います、他で解決しました。 ありがとうございました。
補足
ご回答いただきありがとうございます。 式に同様に指定したのですが、リンク元のテーブルがフォーム上にないためかエラー(テーブルが見つからない)となります。 マクロに「テーブルを開く」を入れても、同じエラーとなります。
お礼
教えていただいた内容でできました、ありがとうございました。
補足
先日に引き続きありがとうございます。 質問内容不備で申し訳ありません。 >> ちなみにアプリ部DBのフォーム上で必要項目を入力し、最終的に >> 登録ボタンが押されて初めて、最新伝票番号を採番するって >> 感じなのでしょうか。」 ⇒ その通りです。 >> であれば、登録ボタンが押されたときに最新伝票番号クエリより >> 最新伝票番号を取得し、その番号を受注_tmpに入れてやるって >> 感じでしょうか。 ⇒ 教えていただいた内容でトライします。