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