- 締切済み
ACCESSで計算結果を格納する方法
いつもお世話になっております。以前 http://oshiete1.goo.ne.jp/qa4305590.html で質問させていただいたものです。 恥ずかしながら、いまだここで蹴躓いています。 いろいろ試して見たのですがどうもうまくいきません。 何かアドバイスはございませんでしょうか?よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Pakkun10
- ベストアンサー率44% (22/50)
申し訳ないのですが、今わからないことと知りたいことを一度まとめてみたらいかがでしょうか? 私も前の質問を自分なりに解釈したつもりですが、話がかみ合っていないような気がします。 何をしたいのか どこまでは出来るのか どこからが出来ないのか
- Pakkun10
- ベストアンサー率44% (22/50)
まずはテーブルにデータを保存するコード ※画面上の[txt_受注名]に表示しているとします。 Dim Gok as Currency Gok = DSum("見積金額","サブテーブル","受注名='" & me.txt_受注名 & "'") DoCmd.RunSQL "update メインテーブル set 見積金額=" & Gok & " where 受注名='" & me.txt_受注名 & "'" これでメインテーブルの見積金額のところに見積金額合計を保存できると思います。 保存する項目を増やすときはカンマで区切って、 set 見積金額=" & Gok & ",請求金額=・・・ でいけます。 余談ですが・・・ 一覧表にする際にクエリを使えばいいのかと思います。 SELECT メインフォーム.受注名, Sum(サブテーブル.見積金額) AS 見積金額の合計 FROM メインフォーム INNER JOIN サブテーブル ON メインフォーム.受注名 = サブテーブル.受注名 GROUP BY メインフォーム.受注名; このようなクエリを作れば常に最新の合計金額を取得出来ます。 このクエリをレポートなどのソースにすればメインテーブルにデータを持つまでもなく合計を表示できます。
補足
何度もご回答ありがとうございます。 >※画面上の[txt_受注名]に表示しているとします。 と仮定されていますが、これはどういう言う意味でしょう? >Dim Gok as Currency >Gok = DSum("見積金額","サブテーブル","受注名='" & me.txt_受注名 & "'") この『受注名='" & me.txt_受注名』ここに何をいれたらいいのかわかりません。計算式をいれたテキストボックスの名前ですか? >DoCmd.RunSQL "update メインテーブル set 見積金額=" & Gok & " where 受注名='" & me.txt_受注名 & "'" ここでわざわざ受注名で仮定されるとピンとこないのですが…? クエリは作りたかったけれども、私の力じゃフォームのただの計算結果だけだとクエリとして選択することができなかったのでできないものだとおもっていました。
- Pakkun10
- ベストアンサー率44% (22/50)
>>メインテーブルの単票フォーム内のサブフォームに、サブテーブルを帳票形式で表示して、個別案件を入力するようにしました。サブフォーム内のレコードの各案件の希望金額の合計や支払金額、粗利などを計算して(Sumや足し算引き算)、サブフォーム内のテキストボックスに表示させています。これが、メインテーブルの()の中身にあたります。 >>これをなんとかして(サブフォーム内のコマンドボタンを押すなど?して)計算結果をメインフォームのフィールドに転送したいのですが、方法はないでしょうか? ということで、サブフォームに表示しているデータをメインフォームに表示したいという風に受け取りました。 ですので、メインフォーム上でDSumを使って集計すればいいのではないでしょうか? で、集計したデータを保存したいならその数字をSQL文を書くなりして保存すると。 ちなみに、データベース的考え方からすれば、特別理由が無ければ合計の数字をテーブルに格納するよりは 印刷なり表示なりするたびに計算するべきだと思います。 印刷であればレポートに一覧表示してフッターのテキストボックスに =sum([計算したいフィールド名]) と書くことで計算できます。
補足
ご回答ありがとうございます。 私の書き方がまずかったわけですね。タイトルに格納といれたのでそれで理解してもらえるかなぁというか、私自身転送させれば自動的に格納してくれるんじゃないかとおもっていました。 語弊のある書き方をしてしまいもうしわけありません。 そのSQLの書き方がわかりません。 100人に質問したら100の答えが返ってきたような錯覚がします。 メインフォームはメインフォームだけで一覧表にしたいので格納させたいのです。というかメインフォームの元となっているテーブルだけを並べたいのです。今のままだとサブフォームがぶら下がったままでないと演算結果がわかりません。前回質問した時も、特別な理由がないならば無理に格納するのはアクセスの根本からは逸脱をしているという指摘もうけています。その上でアドバイスをうけて、やはり格納させたいとおもったのですが… 今のままだと一ページのメインフォームの金額しかみえません。 印刷の場合の式はかなり初期に書いて見ましたがそれではいちいちサブフォームをぶら下げた状態でないとメインフォームの見積金額や粗利などを表示させることができませんでした。 メインテーブルだけを並べて、各案件の最終的な諸経費や利益などをだしたいのですが、その方法でできますか?
- Pakkun10
- ベストアンサー率44% (22/50)
必死なのはわかりますが、訂正が多すぎる気がします。 もう少し自分自身でまとめてから投稿したほうがいいのではないでしょうか? サブフォームの合計をメインフォームに表示するということですよね? dsumを使うのはどうなんでしょうか? dsum("合計するフィールド","サブフォームのテーブル名","受注名='" & [フォーム上の受注名] & "'") ちなみに、前の質問を締め切った方がいいと思いますよ。
補足
ご回答ありがとうございます。 訂正も何も私はメインフォームにサブフォームを入れ込んで、それを計算できる計算式を組み込んだところまでで、ここでよくわからなくなってしまっています。 これを訂正しろというのでしょうか? サブフォームの合計をメインフォームに表示させたいわけではありません。メインフォームの元となったテーブルに保存させたいのです。表示はされようがされまいがテーブルに保存さえできていれば問いません。 画面上ではサブフォームの結果の欄を見ても金額などはわかりますから…
お礼
ご回答ありがとうございました。 もうちょっと考えてから質問し直します。 ありがとうございました。