1

我有一个包含一系列问题的访问表格。每个问题都有一个带有三个单选按钮的框架,每个单选按钮指定一个不同的选择(方便 1、2、3)。我已在此表单中添加了一个问题,并希望通过某种方式指定更改之前的所有记录免于此字段。我想我可以将之前记录中该字段的值设置为 -1 以表示它们是豁免的。但是现在我不知道如何在以前的记录中基本上禁用这个问题。

4

2 回答 2

1

不确定我对您的描述的理解程度,根据我的直觉,表单的当前事件可能在这里有用。

Private Sub Form_Current()
    Me.ControlName.Enabled = Not Me.indicator_field = -1
End Sub

如果ControlName应该Enabled用于新记录,可以使用 Nz()函数来处理初始 Null。

Me.ControlName.Enabled = Not Nz(Me.indicator_field, 0) = -1

您还可以管理ControlName' 的Locked财产,而不是Enabled. 这些组合以不同的方式改变控件的外观。看你喜欢哪个。

我可能忽略了其他细节,但希望这能给你一个有用的起点。

如果您的表单包含按顺序排列的文本框,例如 Text1、Text2、... Textn,您可以使用For循环对它们中的每一个执行某些操作...启用/禁用或其他...我将使用Debug.Print它,因为它很简单为了我。

Dim i As Long
Dim strCtl As String
For i = 1 To 10
    strCtl = "Text" & CStr(i)
    Debug.Print Me.Controls(strCtl).Name
Next i

关键是您可以使用字符串变量来引用表单Controls集合的特定成员。然后用它做你需要的,而不是打印它的.Name属性。

于 2012-07-12T18:40:06.107 回答
0

您可以参考 NewRecord 属性:

Private Sub Form_Current()
     If Me.NewRecord = True
        Then Me.MyControl.Enabled = True
     Else
        Then Me.MyControl.Enabled = False
     End If
End Sub

或者使用你的新领域,你可以说:

If Me.MyField = -1
    Then Me.MyControl.Enabled = False
 Else
    Then Me.MyControl.Enabled = True
 End If

在 MS Access 表中包含创建日期时间几乎总是一个好主意。

于 2012-07-12T17:27:27.753 回答