- ベストアンサー
Accessメインフォーム上へ計算結果を表示する方法
- Access2003にて、台帳を作成しています。メインフォーム上にサブフォームを配置し、販売価格を入力すると原価の合計額から粗利益が自動計算される方法を教えてください。
- サブフォームには受付番号、品名、原価の情報があり、メインフォームには販売価格と粗利益のテキストボックスがあります。
- プロシージャを作成して、販売価格が変更されるたびに原価の合計額から粗利益を計算するように設定する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です #1で、販売価格を入力した後のサブフォーム修正時について触れましたが、 レコードを削除する操作があるのなら、以下の記述も必要です。 Private Sub Form_AfterDelConfirm(Status As Integer) If (Status = acDeleteOK) Then Me.Recalc Call Me.Parent.txt1_AfterUpdate End If End Sub なお、#1でのフォーム構成は以下のものと大差はありません。 Access2003 メインフォーム上でサブフォームの合計値の求め方について http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1181932236 (理解できていれば・・・・理解されていたのか判断できませんが) この方法にチョッと手を加えるだけです。
その他の回答 (1)
- 30246kiku
- ベストアンサー率73% (370/504)
access2010のフォーム上で計算したいです http://okwave.jp/qa/q7079470.html 上記でのメイン/サブ構成をベースに考えてみます。 サブフォームには、総合計用のテキストボックス「txts1」があるものとします。 (非表示でも) メインフォームは テキストボックス名「txt1」コントロールソースは販売価格 テキストボックス名「txt3」コントロールソースは粗利益 サブフォームコントロール名は「FSUB」と仮定します。 テキストボックス「txt1」の更新後処理で粗利益を設定します。 Private Sub txt1_AfterUpdate() Me.txt3 = Me.txt1 - Me.FSUB.Form.txts1 End Sub (「txt1」「txts1」が Null の場合があるのなら Nz() を使います) この場合、 ・販売価格の入力時には、サブフォーム内の入力が終了している事 の条件があります。 販売価格を入力した後でもサブフォームを修正したいのなら 上記の Private を Public に変更し Public Sub txt1_AfterUpdate() Me.txt3 = Me.txt1 - Me.FSUB.Form.txts1 End Sub サブフォームの更新後処理に以下を記述します Private Sub Form_AfterUpdate() Me.Recalc Call Me.Parent.txt1_AfterUpdate End Sub 総合計を再計算させるために Recalc し、 メイン(親)フォームのテキストボックス「txt1」の更新後処理を実行します。 多分これで近い動きはできると思いますが、 参考にする/しない等々、自己責任でお願いします。