
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)
-
MS.Access でサブフォーム付のフォームのレコードの複数コピーについて
Access(アクセス)
-
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
-
4
Accessでレコードの複製
Access(アクセス)
-
5
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
8
初心者です。accessで請求書を作りたいと思っています。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
アクセスで営業日を計算させる...
-
作番ってどういう意味でしょうか?
-
特定の文字をキーとしてVBAで日...
-
ACCESS 受注数の集計について
-
2シートの必要なデータの抽出
-
データシート形式のサブフォー...
-
accsessで顧客コードで氏名を呼...
-
【Access】フォームで自動計算...
-
変数が選択リストにありません
-
再計算って出来ますか?
-
カウントが出来ません
-
Countと受付状態の表示に...
-
下記の事を行うSQLがわかりませ...
-
【続続】Access2002で連番のつ...
-
Access クロス集計クエリについて
-
Access2000 更新のタイミング?
-
Excel 2019 のピボットテーブル...
-
ACCESS検索★ある文字を複数のフ...
-
ACCESSで400以上のフィールドが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
「失注」の意味を教えてくださ...
-
アクセスのクエリで、前回に入...
-
受注受付期間とはなんですか?...
-
Access:サブフォームのレコー...
-
ACCESSで、DMax関数の条件の書き方
-
データシート形式のサブフォー...
-
ACCESS 選択した値を別...
-
アクセスで営業日を計算させる...
-
ACCESS2000の帳票フォーム詳細...
-
マクロ転記で指定した列の最終...
-
Accessの受注発注について
-
フォームにレコード数を表示したい
-
ACCESS 受注数の集計について
-
エクセルのフィルタオプション...
-
フォーム入力、更新後処理で指...
-
VBA でvlookup エラーなどは削...
-
大量の受注メールをデータベー...
-
excelの積上げグラフについて
おすすめ情報