我在access中有一个表单,其中包含一系列问题。每个问题都有一个带有三个单选按钮的框架,每个单选按钮指定一个不同的选择(为了方便1、2、3)。我已经在此表单中添加了一个问题,并希望以某种方式指定更改之前的所有记录都不在此字段中。我想我可以在前面的记录中将这个字段的值设置为-1,以表示它们是例外的。但是现在我不知道如何在以前的记录中禁用这个问题。
发布于 2012-07-13 02:40:06
不知道我是否能很好地理解你的描述,根据我的直觉,表单的当前事件在这里可能会有用。
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关键是您可以使用string变量来引用表单的Controls集合中的特定成员。然后根据需要对其执行操作,而不是打印其.Name属性。
发布于 2012-07-13 01:27:28
您可以参考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表中包含创建日期时间几乎总是一个好主意。
https://stackoverflow.com/questions/11457258
复制相似问题