解决 Ms Access 连续表格?

Posted

技术标签:

【中文标题】解决 Ms Access 连续表格?【英文标题】:Work around Ms Access continuous form? 【发布时间】:2014-03-14 01:41:52 【问题描述】:

问题

下面的表格我想完成两件事

勾选后复选框即,当post = true时,查询应仅运行仅针对当前记录并将其与客户表中的余额字段中的金额进行减去。

UPDATE Customer INNER JOIN [Loan Payment] ON Customer.CUSID = [Loan Payment].CUSID SET Customer.CUSBalance = [Customer]![CUSBalance]-[Forms]![Loan Payment]![Amount] WHERE (((Customer.CUSID)=[Forms]![Loan Payment]![CUSID]));

但是,当查询在 LP6 上执行而不是 [BALANCE]-20 时,它执行 BALANCE-110,即查询在所有字段上运行

当查询已运行且 post 已更改为 true 时,应禁用当前记录的 post 复选框,以便查询不会运行两次或更多次

我发现条件格式不能应用于文本框

要求

    我想知道我是否可以实现我想要的以及如何实现? 我目前尝试实现的任何解决方法或替代解决方案。

【问题讨论】:

是的,我使用的是连续形式! 您是否使用了未绑定的复选框?如果是这样,这可能会有所帮助Collection for unbound checkboxes 不,这些是绑定复选框,将 Post 字段存储在名为 load payment 的表中 【参考方案1】:

首先,我使用了错误的 SQL。

UPDATE Customer SET Customer.CUSBalance = [Customer]![CUSBalance]-[Forms]![Loan Payment]![Amount]
WHERE (((Customer.CUSID)=[Forms]![Loan Payment]![CUSID]));

其次,我发现条件格式不能应用于复选框,所以我不得不找到一种解决方法,我找到了三个。

解决 1

我锁定了Post 复选框并引入了一个按钮,如果Post = false 将运行查询并生成Post = True

我现在的表格

代码我在帖子按钮上使用[点击过程]

Private Sub Command19_Click()

If Me.Post = False Then
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "updateCustomerLoan"
    DoCmd.SetWarnings True
    Me.Post = True
    MsgBox ("Record has been Posted")
ElseIf Me.Post = True Then
    MsgBox ("Record has already been posted")
End If

End Sub

解决方法 2

我在post_update() 上应用了以下代码,其中我编写了两个查询,一个执行查询(更新)和一个撤消查询(更新)

Private Sub Post_AfterUpdate()
    If Me.Post = True Then
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "payLoanONpost"
        DoCmd.SetWarnings True
        MsgBox ("The record has been posted")
    ElseIf Me.Post = False Then
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "unpayLoanONunpost"
        DoCmd.SetWarnings True
        MsgBox ("Record has been unposted")
    End If
End Sub

在 3 左右工作(目前为止最好的,并且完成了我最初打算做的事情

这里我只使用了一个更新查询

Private Sub Post_AfterUpdate()
    If Me.Post = True Then
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "payLoanONpost"
        DoCmd.SetWarnings True
        MsgBox ("The record has been posted")
    ElseIf Me.Post = False Then
        MsgBox ("The record cannot unposted")
        Me.Post = True
    End If
End Sub

【讨论】:

以上是关于解决 Ms Access 连续表格?的主要内容,如果未能解决你的问题,请参考以下文章

比较 Ms Access 中的“连续”行

如何根据每条记录的连续表单中 ms-access 中的其他值填充文本框上的值

MS-Access - 从超链接数据单击打开表单

表格中的 MS Access 下划线文本

循环访问 MS Access 中的连续记录

MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格