启用/禁用具有特定条件MS Access的字段

时间:2015-08-07 12:34:15

标签: vba ms-access ms-access-2013

我在MS Access中有一个表单,我试图创建保险索赔。我有我需要填写的所有字段,但我希望能够做的是根据用户的某些操作启用或禁用这些字段。所以表单的流程是这样的:我在顶部有一个框架,有两个单选按钮,一个用于单一索赔事件,另一个用于多索赔事件。如果用户单击单一声明按钮,一切都继续没有问题。如果用户单击多索赔事件按钮,则会在侧面显示一个组合框,其中包含他们需要选择的MultiClaim_Incident_ID编号的下拉列表。我尝试做的是,如果用户选择“多索引事件”按钮并且未从下拉列表中选择事件ID编号(即将其保留为默认值),则表单的其余部分将被禁用,直到纠正并清除所有字段...

它似乎应该非常简单,但我似乎无法让它发挥作用,我不确定我的逻辑是否有缺陷或什么。这是我的VBA代码的简略版本:

.data("myLogin$myEnableAutoLogin", "on")

2 个答案:

答案 0 :(得分:1)

在“elseif”系列中,一旦条件成立,其余部分将被忽略。

所以,你的

ElseIf SM_Frame.Value = 2 & MultiClaim_Drpdwn.Value = Null Then

永远不会达到

,因为你有

ElseIf SM_Frame.Value = 2 Then

之前。

在同样的想法中,MsgBox之后的“ElseIf SM_Frame.Value = 1 Then”完全没用,因为它是隐藏“如果SM_Frame.Value = 1那么”

尝试使用逐步调试模式来查看。

答案 1 :(得分:1)

我要说的是,正确获取这些序列并不简单!所以,不要在第一次尝试时没有做到这一点感觉不好。我必须每月创建一次这样的东西,并且仍然需要大量的尝试,直到它适用于所有情况。

尝试分开关注:

您已经拥有SM_Frame_AfterUpdate()。在其中处理从值1更改为2必须处理的内容,即使Combobox可见,但在那里停止。您不知道仅使用来自SM_Frame的信息会对字段产生什么影响,您需要等待MultiClaim_Drpdwn。此外,做从2到1的需要,即隐藏Combobox。

接下来,创建一个AfterUpdate-handler MultiClaim_Drpdwn_AfterUpdate()。使用THAT根据其值处理字段(启用/禁用,设置为空)。

一旦你有了这个,你只剩下一些边缘情况。例如,您希望在更改SM_Frame后,字段的行为类似于MultiClaim_Drpdwn_AfterUpdate()状态。一旦你明白你可以在MultiClaim_Drpdwn_AfterUpdate()内快乐地召唤SM_Frame_AfterUpdate(),最好在最后完成,这很容易。这些事件处理程序仍然只是普通功能,已经公开并且可供任何人使用。当你来自无人机时,当你来自Combobox时,这将使事情链好。