gpt4 book ai didi

ms-access - 当所有复选框切换时填写字段 Access 2010

转载 作者:行者123 更新时间:2023-12-03 06:59:12 25 4
gpt4 key购买 nike

我在 Access 2010 中有一个支出子表单,其中列出了每年与该项目相关的预测成本。大多数项目只有一年,但有些项目不止一年。每个成本旁边都有一个“最终”复选框,应在确认金额时选中该复选框,即。每年年底。

它基本上看起来像这样:

Year    |   Cost    |   Final
--------+-----------+--------------------
2017 | $100 | [checked box]
2018 | $200 | [unchecked box]
| | [unchecked box]

表外还有另一个字段 FinalCost,它将“成本”字段中的所有内容相加。现在,它会填写任何选中“最终”框的年份的金额。 应在选中所有最终复选框时填写。

例如。现在,即使选中了 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

执行此操作的最佳方法是什么?

编辑:选中最后一个框时,会自动添加一个新行,其中带有未切换的复选框,但没有信息。

最佳答案

将以 sql = ... 开头的语句替换为:

sql = "SELECT SUM(e1.Amount) AS Final " & _
" FROM Expenditures AS e1 " & _
" WHERE NOT EXISTS (SELECT 'x' FROM Expenditures e2 WHERE e2.Final=0 AND e1.ProjNo = e2.ProjNo) " & _
" AND e1.ProjNo = '" & Me.ProjNo & "'"

仅当项目的所有探险都标记为最终时,此查询才会返回数据。当您检查 rs1.RecordCount > 0 时,如果此查询未返回任何记录,则不会有任何更新。

关于ms-access - 当所有复选框切换时填写字段 Access 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30197000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com