我在Access 2010中有一个支出子表单,列出了每年与项目相关的预计成本。大多数项目只有一年,但有些项目有多年。每个成本旁边都有一个“完成”复选框,当金额确认时即在每年结束时应该勾选。
基本上看起来像这样:
Year | Cost | Final
--------+-----------+--------------------
2017 | $100 | [checked box]
2018 | $200 | [unchecked box]
| | [unchecked box]
我有一个位于表格外的字段FinalCost,它会将Cost字段中的所有内容相加。目前,它会填写任何年份中已选中Final框的金额。只有当所有Final框都被选中时,才应该填写。
例如,现在,即使2017年的Final被选中,它也不应该显示任何内容。当2018年被选中时,它应该显示300美元。但是,实际上,即使仍有一个空复选框,它仍然显示100美元。
这是此表单的代码。
Private Sub Form_AfterUpdate()
Dim rs1, rs2 As Recordset
Dim sql, sql2 As String
sql = "SELECT Sum(Amount) as Final From Expenditures " & _
"Where ProjNo = '" + Me.ProjNo + "' And Final = True Group by ProjNo"
sql2 = "SELECT FinalExpenditure From ActivityCash " & _
"Where ProjNo = '" + Me.ProjNo + "'"
Set rs1 = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dpinconsistent)
Set rs2 = CurrentDb.OpenRecordset(sql2, dbOpenDynaset, dpinconsistent)
If rs1.RecordCount > 0 Then
If rs2.RecordCount > 0 Then
Do While Not rs2.EOF
rs2.Edit
rs2!FinalExpenditure = rs1!Final
rs2.Update
rs2.MoveNext
Loop
End If
End If
rs2.Close
rs1.Close
Set rs1 = Nothing
Set rs2 = Nothing
End Sub
如何最好地执行此操作?
编辑:当最后一个框被勾选时,将自动添加一行未选中复选框但没有信息。
Count(*) WHERE Final = False > 0
,那么不要填充它。 - Mark C.Final
值为False
,那么就不要提供值。 - Mark C.sql=
上面吗? - AxxieD