2010-03-25 70 views
1

我在窗体上有一个选项卡控件,并且几个不同的选项卡上都有保存按钮。一旦用户保存数据(通过VBA中的SQL语句),我将.enabled = false设置为使其不能再次使用该按钮,直到移至全新记录(这是整个表单上的按钮单击)。当窗体打开时在不同的选项卡上启用“保存”按钮

因此,当我的表单打开时,我要引用启用所有这些保存按钮的子,因为打开的事件将意味着新的记录。虽然我得到一个错误,说它不存在或关闭。

有什么想法?

感谢

编辑:

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

你可以在这里添加子吗?您可能无法访问Form.Open事件中的非活动选项卡的属性... – Zoltan 2010-03-25 23:15:59

+0

为什么编程Access默认提供的功能,而无需编程? – 2010-03-29 01:34:41

回答

2

您不能使用表单打开事件来操纵控件,它们尚未在该阶段启动。使用表单加载事件。

不应该有必要将焦点设置为选项卡,或者甚至在使用控件时引用它。您会注意到控件必须具有对表单唯一的名称,并且添加选项卡不会更改此选项。

0

我建议你设置一些表单级变量:booBtn_1_enabled作为布尔值,booBtn_2_enabled作为布尔值。根据需要将它们设置为T或F;显然,所有的T当表单被打开。挑选回顾这些变量并相应地设置所述控件的窗体事件(可能是当前事件,但优选一个,则触发较少):

Me.btnBtn_1.Enabled = booBtn_1_enabled 
Me.Repaint 

类似的东西,但显然Me.btnBtn_1可能需要更复杂的参考。

+0

这不应该是必需的,OP正在经历的问题是由于使用了错误的事件。 – Fionnuala 2010-08-03 08:28:58

相关问题