
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSのサブフォームコピーについて
その他(Microsoft Office)
-
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
MS.Access でサブフォーム付のフォームのレコードの複数コピーについて
Access(アクセス)
-
-
4
Accessでレコードの複製
Access(アクセス)
-
5
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
6
アクセスのレポートのヘッダーを2ページ以降にもつけるには?
Access(アクセス)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
9
初心者です。accessで請求書を作りたいと思っています。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
ACCESS 受注数の集計について
-
受注受付期間とはなんですか?...
-
アクセスのクエリで、前回に入...
-
エクセルVBAで5行目からオート...
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
スティックパリティの役割
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
ACCESSで400以上のフィールドが...
-
Accessでコードを入れると名前...
-
【マクロ】列を折りたたみ非表...
-
Accessレコードの追加や変更が...
-
FROM の中で CASE を使えるでし...
-
Accessフォームにクロス集計ク...
-
DB2でREPLACEによる文字列の置換
-
時間の足し算
-
ACCESS 集計クエリの列見出し名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
「失注」の意味を教えてくださ...
-
作番ってどういう意味でしょうか?
-
マクロ転記で指定した列の最終...
-
受注受付期間とはなんですか?...
-
アクセスのクエリで、前回に入...
-
access 更新?追加? クエリ
-
Access 製品情報を他のテーブ...
-
ACCESSで、DMax関数の条件の書き方
-
AccessVBAでSQL文を書いています
-
エクセルのフィルタオプション...
-
エクセルマクロVBA初心者です。...
-
データシート形式のサブフォー...
-
大量の受注メールをデータベー...
-
クエリにSQL文を書き込みたい
-
excelの積上げグラフについて
-
エクセルで困ってます
-
ACCESSの同時にデータ入力★初心...
-
エクセル抽出・コード番号から...
-
Excelで在庫管理表を作ってます...
おすすめ情報