清除表单(1个对象除外)(访问VBA)

时间:2014-11-29 19:37:52

标签: vba ms-access

我在Access中有一个表单,我尝试制作一个清除整个表单的按钮。 它可以工作但不适用于1个字段,因为在数据库中该字段给出了NOT NULL。

这是我的表格:http://i.stack.imgur.com/j7EOI.png

当我按下按钮时[Leeg Velden] 然后这个vba代码将运行:

Private Sub btnLeegVelden_Click()
    Dim object As Object

    For Each object In Screen.ActiveForm
        If Name(object) = "ibvoorraad" Then
            Me.ibvoorraad.Value = "0"
        Else

            If TypeName(object) = "TextBox" Then object.Value = ""
        End If
    Next object

    btnArtikelToevoegen.Enabled = True
End Sub

我如何添加一些清除所有字段但在字段中的代码" Voorraad"它需要将其设置为0而不是空。

3 个答案:

答案 0 :(得分:0)

您需要在if语句中访问对象的.Name属性,而不是使用函数Name()

请改为尝试:

Private Sub btnLeegVelden_Click()

    Dim object As Object

    For Each object In Screen.ActiveForm
        If object.Name = "ibvoorraad" Then
            Me.ibvoorraad.Value = "0"
        Else
            If TypeName(object) = "TextBox" Then object.Value = ""
        End If
    Next object

    btnArtikelToevoegen.Enabled = True

End Sub

答案 1 :(得分:0)

以下是我要做的事:参考作为控件:

    Dim ctl As Control
    For Each ctl In Me.Controls
        If ctl.Name = "ibvoorraad" Then
            Me.ibvoorraad.Value = "0"
        Else
            If ctl.ControlType = acTextBox Then
                ctl = ""
            End If
        End If
    Next ctl

    btnArtikelToevoegen.Enabled = True

答案 2 :(得分:0)

我会为任何不能为null的控件设置默认值,然后使用以下代码

Dim ctL As Access.Control
For Each ctL In Me.Controls
    If ctL.ControlType = acTextBox Then
        ctL= ctL.DefaultValue
    End If
Next