我在表单上有一个选项卡控件,并且有几个不同的选项卡上有保存按钮。一旦用户保存数据(通过VBA中的SQL语句),我设置.enabled = false,这样他们就不能再使用此按钮,直到移动到一个全新的记录(这是一个按钮点击整个表单)。
所以当我的表单打开时,我将引用一个启用所有这些保存按钮的子按钮,因为open事件意味着新的记录。虽然我得到一个错误,说它要么不存在,要么关闭。
任何想法?
感谢
编辑:
Sub Example()
error handling
Dim db as dao.database
dim rs as dao.recordset
dim sql as string
SQL = "INSERT INTO tblMain (Name, Address, CITY) VALUES ("
if not isnull (me.name) then
sql = sql & """" & me.name & ""","
else
sql = sql & " NULL,"
end if
if not insull(me.adress) then
sql = sql & " """ & me.address & ""","
else
sql = sql & " NULL,"
end if
if not isnull(me.city) then
sql = sql & " """ & me.city & ""","
else
sql = sql & " NULL,"
end if
'debug.print(sql)
set db = currentdb
db.execute (sql)
MsgBox "Changes were successfully saved"
me.MyTabCtl.Pages.Item("SecondPage").setfocus
me.cmdSaveInfo.enabled = false
然后再开启cmdSave需要在新记录上重新启用(顺便说一下,这个表单是未绑定的),所以当重新打开表单时都会发生这种情况。我试过这个:
Sub Form_Open()
me.cmdSaveInfo.enabled = true
End Sub
这是我得到上述错误的地方。因此,这也不是表单打开时具有焦点的选项卡。这就是我收到此错误的原因吗?当标签未显示时,我无法启用或禁用控件?
答案 0 :(得分:2)
您不能使用表单打开事件来操纵控件,它们尚未在该阶段启动。使用表单加载事件。
永远不需要将焦点设置到选项卡,甚至在使用控件时引用它。您会注意到控件必须具有表单唯一的名称,添加选项卡不会改变它。
答案 1 :(得分:0)
我建议你设置一些表单级变量:booBtn_1_enabled作为布尔值,booBtn_2_enabled作为布尔值。根据需要将它们设置为T或F;显然,表格打开时都是T。选择一个表单事件(可能是Current事件,但最好是一个不常触发的事件),它会检查这些变量并相应地设置控件:
Me.btnBtn_1.Enabled = booBtn_1_enabled
Me.Repaint
类似的东西,但显然Me.btnBtn_1可能需要更复杂的参考。