【问题标题】:Event procedure working when subform is open directly but not when in parent form事件过程在子窗体直接打开但在父窗体中不起作用时起作用
【发布时间】:2023-02-26 04:46:51
【问题描述】:

我有一个包含带有查询结果的子表单的表单。我将一个过程关联到子表单中的 on Click 事件。 如果我直接打开子窗体,当我点击一条记录时,程序运行正常。但是,当主窗体加载子窗体时,当我单击子窗体上的记录时,不会触发任何内容。 那是正常的吗?

【问题讨论】:

  • 不,不是。所以调试你的秘密代码。

标签: vba ms-access


【解决方案1】:

在大多数情况下,这意味着按钮代码具有“硬编码”表单名称或其他名称。

因此,您可能在表单中包含此代码(正如您所注意到的,它将成为一个子表单)。

' user clicked on a row or button , do somthing
 
dim lngPK as as long
lngPK = forms!frmInvoices!ID

或者也许是这样的:

lngPK = [forms]![frmInvoices].[ID]

但是,当您使用子窗体时,该窗体并不是真正打开的,而是子窗体的子窗体。

所以,在大多数情况下,你可以(并且应该)删除任何硬编码的表单引用,上面的代码将变成

    lngPK = Me!ID

因此,在大多数情况下,要“表示”和“引用”当前表单(甚至作为子表单),则不要对表单引用表达式进行硬编码。

尽可能使用“我”,因为:

the code will work if you re-name the form
the code will work if you re-use, copy, past to other forms
the code will work if your code is "now" to run as sub form code.

我们看不到您的代码有问题,但在 99% 的情况下,代码在表单中有效,但当您使用相同的表单作为子表单时却不起作用?

然后是使用的表单引用路径。

请记住,当您将表单用作子表单时,该表单不再像常规表单那样真正“开放”。

  in code, then this:

  somevar = [forms]![frmInvoice].[InvoiceNumber]

  becomes:

  somevar = [forms]![Name of Parent Form].[frmInvoice].[form]![invoiceNumber]

你可以很快看到这变得多么混乱。

因此,对于现有子表单中值或控件的任何引用,删除包含表单名称的硬编码引用,并使用“Me”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2013-12-15
    • 2017-11-10
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多