某些字段已完成,使字段在MS Access窗体中可见

时间:2013-12-18 22:33:03

标签: vba ms-access access-vba ms-access-2010

我正在MS Access中构建一个表单,供用户输入数据但是有太多可能的字段。大多数时候只会使用大约一半的字段。

因此,我希望某些字段仅取决于用户在先前给定字段上输入的内容。

Ex:用户输入项目编号,标题,然后他检查“是/否”工程。因为他检查了这意味着工程受到影响所以会出现用户必须填写的十几个字段。

这可能吗:

1)没有VBA

2)使用VBA

4 个答案:

答案 0 :(得分:3)

如果没有VBA,可能就不可能。

以VBA为例:

  1. 确保您的表单处于设计视图
  2. 右键单击您的组合框,构建事件,代码生成器
  3. 这将打开表单背后的代码。它会将您置于BeforeUpdate事件的默认代码中。我们需要Change事件,因此在右上角将下拉列表从BeforeUpdate更改为Change。这会给你一些像这样的代码:

    Private Sub Field1_Change()
    
    End Sub
    

    在此处,您需要检查组合框的值并根据需要隐藏字段:

    假设您的组合框的名称是Field1(当然您的名称会有所不同),您可以添加一些代码,以便隐藏Field2:

    Private Sub Field1_Change()
      If Field1.Value = "Yes" Then
          Me.Field2.Visible = False
      End If
    End Sub
    

    请注意,您需要知道所有字段的名称 - 这位于“属性”框中的“其他”选项卡“名称”字段中(F4)。您应该为所有字段提供合理的名称,以便了解代码中的内容。

    对于复选框,请按照完全相同的步骤操作,但您可能需要使用Click事件。试试吧。

    示例复选框代码:

    Private Sub Check5_Click()
      ' Note: vbTrue = -1
      If Me.Check5 = vbTrue Then
        MsgBox ("Ticked")
      Else
    MsgBox ("Not Ticked")
      End If
    End Sub
    

答案 1 :(得分:1)

如果没有VBA,有一种方法可以做到这一点。我肯定会推荐VBA,因为你可以用它做更多的事情。

不要隐藏,而是尝试通过表达式禁用带有条件格式的不必要字段。

右键单击要禁用的控件。 下载并点击“条件格式” 添加新规则 选择“表达式”

例如: [FLD1] = “是”

点击禁用的框 点击确定 点击确定

现在,如果字段1选择了“是”,则您选择的控件将禁用。

答案 2 :(得分:1)

我有一个表单,在选择列表框值后会显示某些字段。我使用AfterUpdate函数。到目前为止它已经奏效了。我的代码如下。如果选择“工程”,则ProjectName和ProjectNumber是您只想显示的字段。 OtherName和OtherNumber是您只想显示的字段,如果它是" NotEngineering"项目

通过单击选择项目类型的字段来插入此代码,转到属性表上的“事件”选项卡,然后单击“#34;更新后”#34;并选择代码生成器并粘贴到VBA中。

Private Sub ProjectType_AfterUpdate()
If ProjectType.Value = "Engineering" Then
      Me.ProjectName.Visible = True
      Me.ProjectNumber.Visible = True
 Else
      Me.ProjectName.Visible = False
      Me.ProjectNumber.Visible = False
 End If

If ProjectType.Value = "NotEngineering" Then
      Me.OtherName.Visible = True
      Me.OtherNumber.Visible = True
 Else
      Me.OtherName.Visible = False
      Me.OtherNumber.Visible = False
 End If

End Sub

答案 3 :(得分:0)

我有同样的问题,我做了以下事情:

Private Sub Field1_Click()
If Field1 = "Yes" Then
Me.Field2.Visible = True
Else: Me.Field2.Visible = False
End If
End Sub

但现在我还有其他问题,当我更改记录时,我选择在最后一条记录中显示的字段现在在当前记录中可见,但我没有选择任何选项。

谢谢,