【问题标题】:Enable Save button on different tabs when a form opens表单打开时在不同选项卡上启用保存按钮
【发布时间】:2011-01-31 23:25:11
【问题描述】:

我在表单上有一个选项卡控件,几个不同的选项卡上有保存按钮。用户保存数据后(通过 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

这就是我得到上述错误的地方。因此,这也不是表单打开时具有焦点的选项卡。这就是我收到此错误的原因吗? I cannot enable or disable a control when the tab is not showing?

【问题讨论】:

  • 你可以在这里添加子吗?您可能无法在 Form.Open 事件中访问非活动选项卡的属性...
  • 你为什么要编写 Access 默认提供的功能,而无需编程?

标签: forms ms-access controls vba


【解决方案1】:

您不能使用表单打开事件来操作控件,它们在那个阶段还没有被启动。使用表单加载事件。

永远不需要将焦点设置到选项卡上,甚至在使用控件时也不需要引用它。您会注意到控件必须具有表单唯一的名称,并且添加选项卡不会改变这一点。

【讨论】:

    【解决方案2】:

    我建议你设置一些表单级变量:booBtn_1_enabled 为布尔值,booBtn_2_enabled 为布尔值。根据需要将这些设置为 T 或 F;显然,打开表单时都是 T。选择一个表单事件(可能是 Current 事件,但最好是触发频率较低的事件)审查这些变量并相应地设置控件:

    Me.btnBtn_1.Enabled = booBtn_1_enabled 
    Me.Repaint
    

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

    【讨论】:

    • 这应该不是必需的,OP遇到的问题是由于使用了错误的事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 2016-03-11
    • 2019-09-20
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多