- ベストアンサー
サブフォームの値をメインFのテーブルへ&残数計算
- サブフォーム内の要素の合計をメインフォームの特定のフィールドに代入したい場合、値の代入マクロを使用することができます。
- 外注に出した数と仕上がってきた数から残数を計算する場合、色別の発注数と完了数をクエリで取得し、差分を計算することができます。
- 要約文の作成例です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>希望と致しましては、ボタン一つで値の表示・テーブル >への格納が出来ればと思っております。 このままでは、親フォーム以外のどれかの コントロール(たとえばサブフォームの フィールドなど)をクリックしたり、レコードを 移動したりしないとレコードは確定しませんね。 では、以下のように一行追加したものを試してみてください。 Private Sub コマンド5_Click() Me!合計オーダー数 = Me!埋め込み0!tx総計 DoCmd.RunCommand acCmdSaveRecord End Sub DoCmd.RunCommand acCmdSaveRecord によって、現在のレコードを確定させます。 この場合は親フォームのレコードソース が対象になります。 引き続き(2)については確認してみます。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
No1の回答に勘違いがあったので(多分)、 以下を試してみてください。 Private Sub コマンド5_Click() Me!合計オーダー数 = Me!埋め込み0!tx総計 End Sub 「埋め込み0」についての説明はNo1と同じです。
補足
pitoin654様 再度ご返信有難うございます。お蔭様で、合計オーダー数をコマンドボタンで表示することは出来ましたが、次のレコードに行かないと値がテーブルには格納されないようでした。 希望と致しましては、ボタン一つで値の表示・テーブルへの格納が出来ればと思っております。 と申しますのも、値を確定後、印刷ボタンにてフォームに表示中データのレポートを印刷するのですが、テーブルに値が格納されないと、合計オーダー数の部分が空白となってしまいます。次のリコードに進んで、戻れば格納されているのですが、そうせずとも出来るでしょうか? 度々ご面倒をお掛け致しますが、何卒宜しくお願いいたします。
- piroin654
- ベストアンサー率75% (692/917)
たぶん回答がつかないのは、(1)はともかく (2)の部分にわかりにくいところがあるからだと 思いますが。(1)もどちらかというと何となく 不安なところがありますが。 (1) たとえば、メインフォームのレコードソースが、 ID 名前 合計オーダー数 1 スカート 2 手袋 3 ズボン 4 セーター のようになっているものとします。 また、サブフォームにはレイヤー数、パターン数、合計以外にIDという フィールドがあるものとします。このIDはメインフォームのIDと 連動するフィールドです。もし、メインフォームのIDとサブフォームの IDのようにリンクして連動するフィールドがないのであれば、 メインフォームとサブフォームのレコードソースをすべて表示 しないと難しいことにはなりますが。(そのときに回答が可能かは 何とも言えませんが) メインフォームにボタンを一つ設定し、そのボタンのクリックイベントで、 Private Sub コマンド5_Click() Dim strSQL As String strSQL = "UPDATE テーブル1 SET テーブル1.合計オーダー数 =" & Me!埋め込み0!tx総計 & " WHERE ([テーブル1].[ID]=" & Me!ID & ")" DoCmd.RunSQL strSQL Me.Refresh End Sub なお、「埋め込み0」というのはメインフォームのデザインビューのとき、 サブフォームを表示するために設定するコントロールで、サブフォーム そのものではありません。もしサブフォームと同じ名前にしているならば それでも構いませんが、初期値は「埋め込み0」というような名前に なっています。 また、コード中のテーブル名はメインフォームのレコードソースです。 実際に合わせて名前を変更してください。 (2) 問題の(2)についてですが。質問には、 T-色別カッティング詳細 ・ID(オート番号、主キー) ・カッティングID ・カラーID ・枚数 ・パターン数 Q-色別外注発注数 (上記T-色別カッティング詳細を元に) ・カッティングID ・カラーID ・商品名 ・レイヤー数 ・パターン数 ・合計(レイヤー数xパターン数) とありますが、「Q-色別外注発注数」の ・商品名 ・レイヤー数 はどこからきたのでしょうか。もしかしたら T-商品のようなものがあって、そこに登録されている のでしょうか。それならば、「T-色別カッティング詳細」 にリレーションをとる何か、たとえば商品IDのような ものがないと、不必要なデータが「Q-色別外注発注数」 に出てくるのでは、と思います。
補足
piroin 654様 ご返信有難うございます。説明不足でわかりづらいところがあり申し訳ございません。 1. メインフォームとサブフォームは、NoPotonganというIDでリンクされています。アドバイスを元に、コードを貼り付けてみましたが、コンパイルエラーのExpected: End of Statementというのが出てきてしまいました。 T_SuratPotongBaseInfo (メインフォームの元のテーブル名) TotalOrderQtty (メインフォーム元のテーブルのフィールド名、全ての合計数を格納したいフィールド) F_SuratPotongDetail (埋め込みサブフォームのコントロール名、サブフォーム名と同じ名前にしてあります) OrderQtty_Total(サブフォームのフッターに作った合計を全て足した数字を計算するコントロール名) 申し訳ございませんが、ご確認いただけますでしょうか? Private Sub cmd_MasukDataIni_Click() Dim strSQL As String strSQL = "UPDATE T_SuratPotongBaseInfo SET T_SuratPotongBaseInfo.TotalOrderQtty =" & Me!F_SuratPotongDetail!txOrderQtty_Total & " WHERE ([T_SuratPotongBaseInfo].[NoPotongan]=" & Me! NoPotongan & ")" DoCmd.RunSQL strSQL Me.Refresh End Sub 2. こちらも説明不足で申し訳ございません。 T_発注情報 ・カッティングID(主キー) ・裁断日 ・合計オーダー数 ・商品名 ・生地名 ・サイズ T_色別カッティング詳細 ・ID(オート番号、主キー) ・カッティングID ・カラーID ・レイヤー数 ・パターン数 Q_色別外注発注数 ・カッティングID ・カラーID ・商品名 ・レイヤー数 ・パターン数 ・合計(レイヤー数xパターン数) 例) Q_色別外注発注数 合計外注発注数は、(枚数xパターン数) カッティングID 001、 カラーID 1(赤)、合計外注発注数 100 カッティングID 001、 カラーID 2(青)、合計外注発注数 100 カッティングID 001、 カラーID 3(緑)、合計外注発注数 100 カッティングID 002、 カラーID 1(赤)、合計外注発注数 200 カッティングID 002、 カラーID 2(青)、合計外注発注数 200 T_完了詳細には、 カッティングID 001、カラーID 1(赤)、 完了日5/6、 完了数 10 カッティングID 001、カラーID 1(赤)、 完了日5/7、 完了数 20 カッティングID 001、カラーID 2(青)、 完了日5/6、 完了数 10 カッティングID 001、カラーID 2(青)、 完了日5/7、 完了数 20 カッティングID 002、カラーID 1(赤)、 完了日5/6、 完了数 20 カッティングID 002、カラーID 1(赤)、 完了日5/7、 完了数 5 カッティングID 002、カラーID 2(青)、 完了日5/7、 完了数 10 Q_完了数は、 カッティングID 001、 カラーID 1(赤)、合計完了数 30 カッティングID 001、 カラーID 2(青)、合計完了数 30 カッティングID 002、 カラーID 1(赤)、合計完了数 25 カッティングID 002、 カラーID 2(青)、合計完了数 10 今回計算したいと思っているのは、【合計外注発注数】から、色毎の完了数をまとめた【Q-完了数の合計完了数】です。 カッティングID 001、 カラーID 1(赤)、合計外注発注数 100-合計完了数 30=70 カッティングID 001、 カラーID 2(青)、合計外注発注数 100-合計完了数 30=70 カッティングID 001、 カラーID 3(緑)、合計外注発注数 100-合計完了数 0=100 カッティングID 002、 カラーID 1(赤)、合計外注発注数 200-合計完了数 25=175 カッティングID 002、 カラーID 2(青)、合計外注発注数 200-合計完了数 10=190 Q_色別外注発注数 とQ_完了数から選択クエリを作り、カッティングIDとカラーIDを結合し、 [Q_色別外注発注数 ]![合計発注数] - [Q_完了数]![合計完了数]をビルドで作成したところ、 上記の カッティングID 001、 カラーID 3(緑)、合計外注発注数 100-合計完了数 0=100 以外は、 値が出るのですが、完了数が入っていないものはNull値の為か、値が出てきません。 Nz関数にて色々と試みているのですが、何分知識不足のため、どうNz関数を式に当てはめてよいか悩んでおります。 お手数をお掛け致しますが、ご教授頂けますと幸いです。 何卒宜しくお願いいたします。
補足
ご丁寧に誠に有難うございました。 お蔭様で、テーブルにも同時に格納することができました。 (2)につきましても、私も引き続き色々と試しております。 大変お手数ではございますが、お手すきの際に宜しくお願いいたします。