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

标签 ms-access checkbox vba ms-access-2010

我在 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/

相关文章:

sql - Access 在 SQL View 中给出错误,但查询运行正确

ms-access - 从 Access VBA 中的表中的记录创建查询

database - 更新命令只更新第一行 vb.net

javascript - 触发 onChange 时获取复选框状态

html - 设置 Bootstrap 中复选框所需的属性

database - VBA for Access 2003 - 用于创建 Access 文件 : setting the Autonumber data type 的 DDL

mysql - mysql 的 MS Access 错误

excel - 如何在VBA中查找日期之间的差异

vba - VBA 中可以嵌套函数吗?

javascript - 复选框根据表单 ID 选择全部