![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Accessにて販売管理システムを構築しています。
以下の構成にてテーブルがあります。
------------------------------
T_見積伝票(メイン)
・見積ID(主キー)
・顧客名
・見積日
------------------------------
T_見積明細(サブ)
・明細ID(主キー)
・見積ID
・商品名
・数量
・単価
------------------------------
T_受注伝票(メイン)
・受注ID(主キー)
・顧客名
・受注日
------------------------------
T_受注明細(サブ)
・明細ID(主キー)
・受注ID
・商品名
・数量
・単価
------------------------------
*主キーはすべてオートナンバーにて採番されるようにしています。
T_見積伝票とT_見積明細がリレーション
T_受注伝票とT_受注明細がリレーション
実現したいことは、T_見積伝票&T_見積明細に入力された内容が
実際に受注となった場合、「受注に転記」のようなボタンを設置し
クリックすることで、T_受注伝票&T_受注明細に複製できればと思っています。
T_見積伝票とT_受注伝票にはいくつか異なるフィールドがあるので、(見積日と受注日)
対応するフィールドの内容のみコピーしたいです。
逆にT_見積明細とT_受注明細は主キーとなってるIDのみ違うだけで
それ以外は全て同じフィールドにて構成されていますので
全部コピーしたいです。
色々と調べた結果、追加クエリを使うといいみたいですが
追加クエリ自体がよく分からず質問させて頂きました。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
>この記述で複数の明細をコピーできるのでしょうか?
出来ますよ。条件を満たすレコードを自動的に全て追加できます。
例えば、見積伝票(見積ID=1)に複数の明細がある場合、
SELECT * FROM T_見積明細 WHERE T_見積明細.見積ID = 1;
上記の【選択】クエリで、複数のレコードが【選択】できますよね。これと同様に【追加】クエリなら、複数のレコードが【追加】されます。SQL(クエリ)の便利なところです。こういう言語を非手続き型言語と言います。
今回のプログラムでは、受注IDの問題があったので、前半はDAOのRecordsetを使って、手続き型の処理をしています。後半はSQLを使って非手続き型の処理をしています。
有り難うございます!
SELECTの例、すごくよく分かりました。
ネットで調べていても、同じように記述するとは書いていましたが
なぜ、これだけで複数のレコードが追加されるのか、までは
書いておらず、四苦八苦していたところでした。
このレスを頂いたことで、悩んでいた問題が一気に解決しました。
で、本題のメインフォームとサブフォーム内の複数レコードのコピーですが
先のレスと合わせて試したところ、希望した動作になりました!
(受注IDはMAXで取得できました。)
本当に有り難うございますm(_ _)m
No.1
- 回答日時:
>逆にT_見積明細とT_受注明細は主キーとなってるIDのみ違うだけで
見積IDと受注IDも異なりますよね。
追加クエリでは、T_受注伝票に追加した時に振られるオートナンバーが取得できないので、追加したレコードの受注IDが分からなくなります。
スタンドアロンで使用すると言う前提なら、Max(受注ID)で取得可能かな。
----------------------------------------
VBAを使ってよいなら。
見積伝票の入力フォームに、「受注に転記」ボタンを追加して、クリック時のイベントプロシージャに下記を記述。
Private Sub コマンド0_Click()
Dim rs As DAO.Recordset
Dim SQL As String
Dim ID As Long
'受注伝票に追加(DAOを利用)
Set rs = CurrentDb.OpenRecordset("T_受注伝票", dbOpenDynaset)
rs.AddNew
ID = rs![受注ID] '受注IDを取得
rs![顧客名] = Me![顧客名]
rs![受注日] = Date '受注日には今日の日付を入れてます。
rs.Update
rs.Close
Set rs = Nothing
'受注明細に追加(追加クエリを利用)
SQL = "INSERT INTO T_受注明細 ( 受注ID, 商品名, 数量, 単価 ) "
SQL = SQL & "SELECT " & ID & " as 受注ID, T_見積明細.商品名, T_見積明細.数量, T_見積明細.単価 "
SQL = SQL & "FROM T_見積明細 "
SQL = SQL & "WHERE T_見積明細.見積ID=" & Me![見積ID] & ";"
CurrentDb.Execute SQL
DoCmd.OpenForm "受注伝票フォーム", , , "[受注ID]=" & ID
End Sub
これで、受注伝票、受注明細に追加して、ついでに受注伝票フォームを開きます。
この回答への補足
コードを含めた詳しい説明有り難うございます!
>>逆にT_見積明細とT_受注明細は主キーとなってるIDのみ違うだけで
>見積IDと受注IDも異なりますよね。
すみません、主キーは同じで、仰る通り見積IDと受注IDが異なります。
--------------------------------------------------------------
'受注明細に追加(追加クエリを利用)
SQL = "INSERT INTO T_受注明細 ( 受注ID, 商品名, 数量, 単価 ) "
SQL = SQL & "SELECT " & ID & " as 受注ID, T_見積明細.商品名, T_見積明細.数量, T_見積明細.単価 "
SQL = SQL & "FROM T_見積明細 "
SQL = SQL & "WHERE T_見積明細.見積ID=" & Me![見積ID] & ";"
CurrentDb.Execute SQL
--------------------------------------------------------------
すみません、この記述で複数の明細をコピーできるのでしょうか?
(疑っているとかいうわけではなく、While等の繰り返し処理って
必要なくとも可能なのでしょうか?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
MS.Access でサブフォーム付のフォームのレコードの複数コピーについて
Access(アクセス)
-
ACCESSのサブフォームコピーについて
その他(Microsoft Office)
-
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
6
Accessでレコードの複製
Access(アクセス)
-
7
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
8
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
-
9
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
10
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
11
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
12
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
13
Accessでレコードの複製
Access(アクセス)
-
14
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
17
Accessでテーブルからテーブルにデータをコピーしたい
その他(データベース)
-
18
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
19
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
20
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
「失注」の意味を教えてくださ...
-
作番ってどういう意味でしょうか?
-
通販サイトの運用の問題点は?
-
ちょっとしたことばの問題ですが、
-
ACCESS2000の帳票フォーム詳細...
-
Excelで在庫管理表を作ってます...
-
ACCESSで、DMax関数の条件の書き方
-
Excelにて複数の受注残を計算す...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでコードを入れると名前...
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルの値をテキス...
-
変数が選択リストにありません
-
Access テキスト型に対する指定...
-
異なるサーバのDBデータ同士を...
-
3つの表を1つに縦に連結する
-
エクセルグラフの凡例スペース
-
ACCESSのクエリで集計で、先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
「失注」の意味を教えてくださ...
-
受注受付期間とはなんですか?...
-
ACCESSで、DMax関数の条件の書き方
-
アクセスで営業日を計算させる...
-
VBA でvlookup エラーなどは削...
-
Access:サブフォームのレコー...
-
アクセスのクエリで、前回に入...
-
マクロ転記で指定した列の最終...
-
Accessの受注発注について
-
ACCESSの同時にデータ入力★初心...
-
Excelで在庫管理表を作ってます...
-
データシート形式のサブフォー...
-
access 1対1と1対多のテーブ...
-
Excelにて複数の受注残を計算す...
-
製造業向け受注生産型生産管理...
-
フォームにレコード数を表示したい
-
エクセル抽出・コード番号から...
-
ACCESS 受注数の集計について
おすすめ情報