【发布时间】:2023-02-26 04:46:51
【问题描述】:
我有一个包含带有查询结果的子表单的表单。我将一个过程关联到子表单中的 on Click 事件。 如果我直接打开子窗体,当我点击一条记录时,程序运行正常。但是,当主窗体加载子窗体时,当我单击子窗体上的记录时,不会触发任何内容。 那是正常的吗?
【问题讨论】:
-
不,不是。所以调试你的秘密代码。
我有一个包含带有查询结果的子表单的表单。我将一个过程关联到子表单中的 on Click 事件。 如果我直接打开子窗体,当我点击一条记录时,程序运行正常。但是,当主窗体加载子窗体时,当我单击子窗体上的记录时,不会触发任何内容。 那是正常的吗?
【问题讨论】:
在大多数情况下,这意味着按钮代码具有“硬编码”表单名称或其他名称。
因此,您可能在表单中包含此代码(正如您所注意到的,它将成为一个子表单)。
' 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”。
【讨论】: