正在设置连续表单上的文本框属性



我正在开发Access 2010表单,用户可以通过组合框在表单标题中选择一条记录,然后在表单的详细信息部分构建与所选记录相关的元素。表单的默认视图设置为连续表单。

表单详细信息部分中的一个控件是组合框控件。我想做的是根据组合框中的选择,将表单同一行的文本框的enabled属性设置为false。我运行的代码是:

If Me.cboElementType = "Contract Shrink" Then
Me.txtElementID = ""
Me.txtElementID.Enabled = False
EndIf

这是有效的,但它将文本框(txtElementID)的所有实例设置为enabled=false。我希望实现的是,根据组合框cboElementType的选择,txtElementID在详细信息部分的每一行都有一个不同的启用设置。因此,如果滚动详细信息部分的第1行的cboElementType="Contract Shrink",则txtElementID。对于该行,Enabled将设置为false。如果滚动详细信息部分第2行的cboElementType="Cost Group",那么我想要txtElementID。在详细信息部分的第1行和txtElementID上启用为False。在第2行启用为True。

有人能证实或否认这是可以做到的吗?如果可以做到,你会建议如何做到?不管是哪种情况,都要感谢你的帮助。

您不能像以前那样通过VBA执行此操作,您需要使用条件格式,您可以选择设置Enabled属性。

尝试类似的Form_Current()事件

Private Sub Form_Current()
If Me.cboElementType = "Contract Shrink" Then
Me.txtElementID = ""
Me.txtElementID.Enabled = False
EndIf
end sub

我已经搜索了好几天如何访问连续表单上的单个记录,我愿意说这是不可能的,但我有一个技巧,我将在这里分享。我有一个投资数据库,用户进入并写下一份提案,然后召开会议,要么批准项目(给钱),要么取消项目。然而,项目可以处于更多的状态,提案、执行等,但在这个阶段只能发生批准/取消。我在Project表中创建了一个MockBool字段。我把它放在连续表单上,当表单关闭时,我运行这个:

rs_frm=me.recordset
rs_frm.movefirst
while not(rs_frm.eof)
if rs_frm("MockBool") then
rs_frm.edit
rs_frm("ProcessStatus")="Cancelled"
rs_frm("MockBool")=false
rs_frm.update
end if
rs_frm.movenext
wend

我花了好几天的时间寻找并顿悟了,所以我想我会分享。

最新更新