• ベストアンサー
  • すぐに回答を!

★Access★2つのサブフォームの計算

受注管理として、注文書の作成入力をしています。 『メインフォーム』で、顧客先などを入力し、『サブフォームA』で受注明細を入力しています。そして受注種類が2つあるので、フィールドの違う受注明細の『サブフォームB』もあるんです。各サブフォームには数量・単価・金額が入っています。 『サブフォームA』『サブフォームB』の両方に注文がある場合は、各サブフォームの合計(=[Form]!サブフォームA!金額合計)を出し、その合計同士を足して総合計金額(A+B)が『メインフォーム』にちゃんと表示されます。しかし、『サブフォームA』にだけ注文がある場合、『A』合計は表示されますが、『B』合計が空欄になってしまって、A+Bの合計が計算されないのです。さらにレポート印刷もできないのです。 どうすればいいのでしょうか?合計プロパティの既定値を0にしてもだめなんです。誰か教えて下さい。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数827
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • O_cyan
  • ベストアンサー率59% (745/1260)

>、『B』合計が空欄になってしまって 空白のフィールドがあると計算できません。 Nz関数で計算すれば大丈夫です。 =Nz([Form]!サブフォームA!金額合計)+Nz([Form]!サブフォームB!金額合計) のようにすればどちらかが空白でも計算できます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

できました!!ありがとうございます。 でも、フォーム上にみえるだけで、テーブルには保存されていないからか、どちらかが空欄の注文書自体がレポートに表示されないのに困っています。 レポートにはサブフォームA・Bをフォームごと載せているのですが、合計テキストボックスの式は『メインフォーム』と同じ=Nz([Form]!サブフォームA!金額合計)+Nz([Form]!サブフォームB!金額合計) じゃだめなんでしょうか?エラーになってしまうんです。

関連するQ&A

  • Accessでサブフォームの合計をメインフォームに

    Access2007で開発しています。 メインフォームにサブフォームを貼り付けており、 サブフォームに入力した「数量」「単価」から「金額」を計算して表示し、 その合計金額をメインフォームのテキストボックス(非連結)に表示しようと しています。 サブフォームは行単位で追加、削除が可能です。 サブフォームの更新結果が正しくメインフォームに表示されずに困っています。 おわかりの方、おられましたらお教え頂きたく、よろしくお願い致します。 【サブフォーム】   ・レコードソース:T_明細   ・[詳細]項目:数量・・・レコードソース=T_明細・数量        単価・・・    〃    =T_明細・単価        金額・・・数量および単価のAfterUpdateで計算して表示。    [フォームフッター]項目:金額計・・・コントロールソース=Sum([金額])   ・Vbaコード:   Private Sub Form_AfterUpdate()   Forms![メインフォーム].合計計算   End Sub   Private Sub Form_Delete(Cancel As Integer)   Forms![メインフォーム].合計計算   End Sub 【メインフォーム】  ・テキストボックス:「合計金額」(非連結) Public Sub 合計計算()    Me.サブフォーム.Requery   方法1: Me!合計金額 =DSum("金額", "T_明細", (キー項目指定 記述省略))   方法2: Me!合計金額 = Me![サブフォーム].[Form].[金額計] End Sub ここで、 方法1の場合:数量、単価の変更入力及び行追加は正しく動作するが、          行削除の後、メインフォームの「合計金額」が再計算されず、変更前のまま。 方法2の場合:数量、単価の変更入力及び行追加すると、「合計金額」が”0”になる。          行削除しても「合計金額」は変わらず、変更前のまま。 どちらも、サブフォオームの「金額計」は正しく表示されています。 以上、よろしくお願い致します。

  • access2010のフォーム上で計算したいです

    access2010 初心者です。 メインフォーム上に総合計を計算したいのですがどうしたらいいのか困ってます。 ***サブフォーム(テーブル1から表示しました)*** ・商品名(テーブル1から表示) ・金額(dlookupを使って「商品一覧表」から金額を表示しました) ・数量(テーブル1から表示) ・合計金額(コントロールリボンでテキストボックスを作り「金額」*「数量」で表示してあります) *********************** メインフォームに、サブフォームの「合計金額」の様にテキストボックスで、サブフォームの「合計金額」の『総合計』を表示したいです。 総合計がある一定の金額になるように、サブフォームの「数量」を決めて行きたいのです。だから、一定金額から『総合計』を引いて残金も表示したいのですが、『総合計』の求め方がわからなくて困っています。 総合計や合計金額はデータとしてテーブルには残らなくてもOKです。 初心者なので、できればわかりやすく簡単な方法がうれしいです うまく伝えれなくて不明な点があるかと思いますが、なにとぞお願いします

  • ACCESSのメインフォームとサブフォームについて

    ACCESSで、受注伝票のようなものを作成したいと思っています。受注伝票フォームに受注明細のサブフォームを埋め込んだようなフォームを作ろうとしています。その際、受注伝票と明細に受注コードのフィールドを設け関連づけたいのですが、メインフォームに受注コードを入力したらサブにも同じコードが自動的に振られるようなことはできるのでしょうか。 出来ないのであれば、どのように作ればよいのでしょうか。

その他の回答 (2)

  • 回答No.3
  • enopi
  • ベストアンサー率66% (4/6)

レポートはテーブル上のデータを表示しますので、無いものは出せないはずです。 どのようなエラーされているか、明確ではないので、なんとも言えませんが、データ入力の時点で、AまたはBに入力されていないレコードに関しては、無理やりテーブルにレコードを作ってやるか、もしくは作らないようにしないと、表示することは難しいと思われます

共感・感謝の気持ちを伝えよう!

質問者からのお礼

そうですよね‥。補足の質問を見つけて解答下さってありがとうございます。

  • 回答No.1
  • ryohei
  • ベストアンサー率16% (1/6)

IIF関数で判断しては? IIF(サブフォームB!合計="",IIF(ブフォームA!合計="",0,サブフォームA!合計),IIF(サブフォームA!合計="",サブフォームB!合計,サブフォームA!合計+サブフォームB!合計)) ※ちょっと書き方を省略しています([FORM]!をつけてください。)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 ちょっと付け足したらできました。助かりましたm(__)m

関連するQ&A

  • Access2003 サブフォームについて

    サブフォームを持つ画面で 親子テーブルを共に更新しようとしていて挫折しかかっています。 そこで皆様の知恵を借りれれば幸いです。 <<画面表示>> メインフォーム…受注  ┗サブフォーム…受注明細 <<更新条件>> ・メインフォームは変更可能 ・サブフォームは追加、変更、削除可能 ・サブフォームのデータ変更時  →受注明細テーブルを更新しない ・メインフォームのデータ更新時  →受注テーブルを更新しない ・メインフォームの更新ボタン押下時  →受注テーブル、受注明細テーブルを更新 <<質問>> 1.サブフォームの値をテーブルへ  自動更新(項目変更時に付随更新)せずに  任意更新(ボタン押下時など)出来ますか?  [サブフォームに主キー項目を設置せず行追加すると Not Null制約で怒られます。] 2.VBで言うところのFlexGridの様にサブフォームを  制御出来ますか?  RecordSourceを使うのではなく、  VBA内で持っている値を各セルに設定する 3.そもそも同一画面内で親子テーブル共に更新することは  有り得ないことなんでしょうか?

  • サブフォームの金額合計をメインフォームに表示させたい

    OS:XP ACCESS2003 フォームに金額の明細があるサブフォームを3つ貼り付けています。各サブフォームの金額の合計は、フッターに=Sum([金額])で表示されます。(金額入力毎に足されます) メインフォームの金額欄に、この3つの合計を金額が追加されたごとに出したいのですが、よくわかりません。 よろしくお願いします。

  • サブフォームに同一の納品日を自動的に入力したい

    XP&ACCESS2003: メインフォーム/サブフォーム形式のフォームで、受注番号で連結しています。 メインフォームが受注、サブフォームが受注明細です。(1対多) メインフォームには「次のレコード」に進むボタンをつけ、クリックにより次のレコードが表示されます。(従って、サブフォームも次の受注の明細に移動します) 複数のレコードを持つサブフォームの納品日(受注明細の納品日フィールドに連結)の最初の一件に日付を入力し、メインフォームの「次のレコード」に進むボタンをクリックした時、1件前の受注明細の納品日を入力していない他の(2件目以降)のレコードにも同一の納品日を自動的に入力できる方法がわかりません。よろしくお願いします。

  • アクセスのサブフォーム

    アクセス2000を使っているのですが、サブフォーム内に表示されている金額の合計をメインフォームに表示させる事は出来るでしょうか? またサブフォームを透明にして、メインフォームが透けて見えるようにはならないでしょうか? よろしくお願いします。

  • アクセス★非課税、課税の合計金額計算の仕方

    見積書の入力をしています。 メインフォームとサブフォームがあり、サブフォームでは受注明細を入力できるようになっています。 サブフォームの合計金額計算で、単純に【小計】【消費税】【総計】は計算できるのですが、非課税の受注が混ざっている場合、うまくいきません。 非課税項目にチェックを入れて区別などをし、そのチェックが入っていないものだけの消費税を計算できるようにしたいのですが、具体的にどのようにしたら良いのでしょうか? サブフォームのフィールドは、品名・数量・単価・金額です。 過去の質問は探しましたが見つけられませんでした。 過去にあったら申し訳ないのですが、どうか宜しくお願いします。

  • サブフォームでのデータ集計

    メインフォームの顧客CDとリンクしたサブフォームがあります。 コンボボックスにて担当営業を選択すると、サブフォームに その担当の顧客別の受注残明細が表示される様になって います。 サブフォーム内で抽出した明細を、顧客毎に集計し、 受注残数と受注残高をサブフォーム内に表示させるには どの様な方法があるのでしょうか? お分かりになられる方がいらっしゃいましたら ご指導頂きたいと思っております。 よろしくお願い致します。

  • accessフォームでサブフォームの合計値が出てこない

    注文書を作っています。 サブフォーム中で各項目の金額を表示させます。 これらの金額を名前"金額計"で=Sum([金額])で計算しました。 この値は,サブフォーム単独で開いた時には間違い無く表示されます。 しかし,このサブフォームを使ったフォームで,この"金額計"が#Name?となり,なんとも表示できませんでした。 金額計表示の為のコントロールソースは,=[Forms]![サブフォーム]![金額計]としたり,=[サブフォーム].[Forms]![金額計]としたりしているのですが。 何かケアレスミスでもしているのでしょうか。 データの型等は双方で合せて間違いは無いと思うのですが。 些細な事でも結構なのでよろしくお願いします。

  • サブフォーム帳票形式上での2つのコンボボックスの連携

    サブフォーム帳票形式上での2つのコンボボックスの連携 テーブルとして以下4つ tbl01_受注   受注ID(主キー) 受注日      名前 電話番号 tbl02_明細   明細ID 受注ID(tbl01_受注IDとリレーション)   カテゴリ   商品名  tbl03_カテゴリ   カテゴリID カテゴリ tbl04_商品名   商品ID カテゴリID 商品名   フォームとして以下メインとサブで構成   f01_受注フォーム(メインフォーム)   レコードソース→tbl01_受注     f02_明細フォーム(サブフォーム)    レコードソース→tbl02_明細 添付画像のように 1件ごとの受注につき受注フォームが増えていきます 1件の受注にたいしてサブフォームに商品を入力して行きます、  商品名が多数ありますので コンボ1でtbl03のカテゴリを選び tbl04からそのカテゴリIDとマッチした商品名を抽出して コンボ2に表示したいと考えています。 色々参考にしましたがどれもうまく行かない状況です。 たとえばコンボボックスに反映されず空白になったり コンボボックスの内容を変更すると全ての行の値が 同じになった なかなかうまく行きません。 サブフォームでコンボボックス1でカテゴリ選択すると コンボボックス2にカテゴリで絞り込んだ内容が選択できるように したいのです。 そして次の行も同じように商品を入力したいのです。 どなたか助けて下さい、お願いします。

  • Accessメインサブフォームにて・・・

    Accessのサブフォームで、入力するためのフォームと、 実際にメインフォームの中で表示させる時のサブフォームの表示を 変えたいのですが・・・。 (1)ボタンをクリックして、入力するためのサブフォームを表示させる。  これは帳票形式で、テキストボックスの罫線が表示されているよう  にします。 (2)入力し終わったら、メインフォームに戻る。  こちらで表示されるサブフォームは、テキストボックスの罫線が表示  されていないようにする。 上記のようなことはできるでしょうか?よろしくお願いします。  

  • Accessのサブフォームについて

    メインフォームとサブフォームのあるフォームを作成しました。メインフォームを入力してから、サブフォームを入力し、次のレコードへ移動するのにメインフォームの移動ボタンを押すと、次のレコードのカーソルがサブフォームのフィールドへ移動します。メインフォームに移動する方法はありませんか?