三个选项-根据输入和记录值启用/禁用

时间:2019-06-17 13:51:05

标签: ms-access

我有一个表格,其中(除其他事项外)有三个专用的选项。

  • optDealerPay
  • optCustomerPay
  • optNoTradeIn

我一次只能选择一个,但是在最初设计时,我将它们分成三个单独的表列而不是一个,并使用一个选项组。主要是因为我也想要一份正在处理的报告的输出。无论如何,当选择一个时,其他两个都进入Enabled = False。我遇到的问题是,在加载表单时(实际上使用Form_Current()以确保在“检查”之前加载记录),表单将禁用两个未选择的选项之一,但不会禁用另一个。这是一张图片:

example1

这是我正在使用的代码:

Private Sub Form_Current()

    If Me.optDealerPay Then
        Me.optCustomerPay.Enabled = False
        Me.optNoTradeIn.Enabled = False
    Else
        Me.optCustomerPay.Enabled = True
        Me.optNoTradeIn.Enabled = True
    End If
    If Me.optCustomerPay Then
        Me.optDealerPay.Enabled = False
        Me.optNoTradeIn.Enabled = False
    Else
        Me.optDealerPay.Enabled = True
        Me.optNoTradeIn.Enabled = True
    End If

    If Me.optNoTradeIn Then
        Me.optDealerPay.Enabled = False
        Me.optCustomerPay.Enabled = False
    Else
        Me.optDealerPay.Enabled = True
        Me.optCustomerPay.Enabled = True
    End If
End Sub

在重新设计表结构之外,还有什么更好的方法可以做到这一点,如果可能的话,我真的在尝试避免这种方法。在三个选项中的每个选项上,AfterUpdate()过程都使用了类似的代码。

2 个答案:

答案 0 :(得分:2)

您的代码将逐个执行每个if语句-有点混乱。在设计模式下启用所有单选按钮,然后尝试以下代码:

Private Sub Form_Current()
    If Me.optDealerPay Then
        Me.optCustomerPay.Enabled = False
        Me.optNoTradeIn.Enabled = False
    ElseIf Me.optCustomerPay Then
        Me.optDealerPay.Enabled = False
        Me.optNoTradeIn.Enabled = False
    ElseIf Me.optNoTradeIn Then
        Me.optDealerPay.Enabled = False
        Me.optCustomerPay.Enabled = False
    Else
        ' Maybe you should do something if none of the options is true
    End If
End Sub

答案 1 :(得分:1)

您当前的代码实质上可以简化为:

data_foo %>%
  mutate(irr = isTRUE(all.equal(A, B)))

也就是说,如果单选按钮为未选中,则该按钮被禁用;否则它已启用。

但是,尽管这是您所要求的行为,但是我不确定这是否可取,因为一旦用户选择了一个选项,便无法更改它。