ms-access - 三个选项 - 根据输入和记录值启用/禁用
问题描述
我有一个表格,其中(除其他外)有三个旨在排他性的选项。
optDealerPay
optCustomerPay
optNoTradeIn
我希望一次只选择一个,但是当我最初设计这个时,我将它们分成三个单独的表列而不是一个,并使用一个选项组。主要是因为我也想要一份我正在处理的报告中的输出。不管怎样,当一个被选中时,另外两个去Enabled = False
。我遇到的问题是当表单加载时(实际上是Form_Current()
用来确保在“检查”之前加载记录),表单将禁用未选中的两个选项之一,但不会禁用另一个。这是一张图片:
这是我正在使用的代码:
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()
三个选项中的每一个的过程都使用了类似的代码。
解决方案
您的代码将一个一个地执行每个 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
推荐阅读
- rtsp - “参见 [H4.3]”在 RFC 中是什么意思?
- performance - 为什么这个睡眠功能比它应该花费的时间长得多?
- apache-spark - 我们可以从 Spark 的 StructType 为 Hive 创建一个 avsc 文件吗?
- python - 导入 Scipy.io 时出错我正在使用 python 3.5.0 这个错误出来了
- python - 如何使用 Python 替换 PE 文件中的指令?
- reactjs - 按类别和关键字过滤数组
- python - 将 json 文件传递给无服务器 lambda
- sql-server - 为 SQL Server 的 ODBC 驱动程序 17 配置字符集
- c# - Unity HingeJoint 在旋转的自动生成问题中有奇怪的行为?
- php - 用于视频嵌入的 php 的 HTTP 范围请求,用于解决视频中的特定时间