2012-01-23 11 views
1

私はアクセスするプロジェクトのシステムまでを作っており、ブロックに達しました。カラムの合計が<= 0の場合、

背景 ボタンには数多くのフォームがあります。ボタンをクリックすると、アイテムの説明と価格を含むテーブル(TblCurSale)にデータが追加されます。各フォームには、支払画面にあなたを送付する「合計」ボタンがあります。これにより、TblCurSaleから別のテーブル(TblCalc)にデータがコピーされます。

TblCalcには、SaleID、Item(商品名)、SalePriceの列があります。レポートは自動的に販売価格欄を追加します

合計フォームには、2つのサブレポートTBLCurSaleとTblCalcがあります。

合計の画面には、ユーザが入力した金額を入力してから支払うプレースメントテキストがあり、その数字をTblCalcに負数として入力してから、新しい合計が表示されるようにページを更新します。サブレポートの下部にあります。ときSalePrice列= 0 <の合計が、私は数行のコードを実行できるように、私はそれを置くことができるように

問題 私はIF VBAコードを必要としています。私がこれまで行ってきたことは以下の通りです。どんな助けでも大歓迎です。

Private Sub Pay_Click() 

Dim SQLPay As String 
Dim SQLToTable As String 
Dim SQLMoney As Variant 

SQLPay = "INSERT INTO TblCalc(SalePriceTotal) VALUES (-'" & TxtPayment & "')" 
SQLToTable = "INSERT INTO TblTotalSale (CurrentSaleID, SalePrice, Item) SELECT CurrentSaleID, SalePrice, Item FROM TblCurrentSale" 
SQLMoney = "IF (SUM(SalePriceTotal) FROM TblCalc) <= 0 SELECT '1' ELSE '0'" 

DoCmd.SetWarnings False 
DoCmd.RunSQL SQLPay 
DoCmd.RunSQL SQLMoney 

If SQLMoney = 1 Then 
DoCmd.RunSQL SQLToTable 
Me.TxtPayment = "" 
Me.Refresh 
DoCmd.OpenReport "rptCalc" 

Else 

Me.TxtPayment = "" 
Me.Refresh 
Me.Refresh 
End If 

DoCmd.SetWarnings True 

End Sub 

答えて

1

私はあなたがトランザクションテーブルのように構造化する方がよいと思います。したがって、別のテーブルに支払いを挿入するのではなく、TblTotalSaleに別の行を「支払」という項目説明と負の数として値を追加します。次に、SalePrice列を合計して残高を未払いにすることができます。また、1回の販売に対して複数の支払いを記録することもできます。負の販売へ

WRTは、私はあなたが

(フォーム上beforeInsertとのBeforeUpdateイベントで)、負のアイテムの価格を入力することからユーザーを防ぐために、フォーム上のいくつかの検証コードを置くべきだと思います
関連する問題