无法将重点放在Access中的子窗体上 - 错误2465(找不到字段' | 1'在您的表达式中引用)

时间:2015-12-11 10:39:13

标签: vba ms-access setfocus subform

最近我把焦点放在我的子表单上(很多)。出于某种原因,我无法将焦点设置为我的子表单并且它一直给我错误:可以not find the field '|1' referred to in your expression我尝试了多种方式来设置焦点,但所有这些都无法工作。

到目前为止我尝试了什么:

  • Forms("frmArtikelSubInkoopHistorie").SetFocus (将焦点直接设置为子表单)
  • [Forms]![frmArtikelen].[frmArtikelSubInkoopHistorie].SetFocus (将焦点设置为子窗体,并参考其主要格式)
  • [Forms]![frmArtikelen].[frmArtikelSubInkoopHistorie].SetFocus

    [Forms]![frmArtikelen].[frmArtikelSubInkoopHistorie].[Form].[Tekst33].SetFocus (首先将焦点设置为子窗体本身,然后将焦点设置为子窗体控件)

首先,我尝试将焦点设置在Load event的{​​{1}}上,但这也导致了错误。

然后我尝试将焦点设置在main form本身的load event中,但此事件永远不会被触发。

最后,我尝试(这是我离开的地方)将焦点设置在我subform的{​​{1}}中(子窗体位于其中一个标签中):

change event

我认为聚焦失败是因为子窗体在设置焦点时尚未加载,这只是一个假设,我认为如果我将焦点设置在标签更改中,这将被修复(然后应该加载子表单)。

P.S。发现了这个主题的多个帖子,但没有找到我的问题或者与我的完全不同。

有任何想法可以解决这个问题吗?提前谢谢!

3 个答案:

答案 0 :(得分:1)

我会尝试以下语法:

Forms![frmArtikelen]![frmArtikelSubInkoopHistorie].Form![Tekst33].SetFocus

请注意已添加的感叹号。此外,它可能听起来反直觉,但我相信当表单加载时,子表单在主窗体之前加载。

我不明白你在什么时候想要应用setfocus,以了解事件的去向。

您是否知道您不需要VBA来选择子窗体的选项卡索引为0?然后在子表单中设置选项卡索引,以便tekst33为0?

答案 1 :(得分:0)

创建新记录后,我试图将注意力集中在子窗体日期上。 顺序代码将焦点放在子表单上,然后子表单字段可能对您有用:

  1. 从父表单开始,首先关注子表单

Me.SF_DRL_Scheduling.SetFocus

  1. 然后指向子表单的最后一条记录(即使过滤器处于活动状态)

DoCmd.GoToRecord,acLast'

  1. 最终引用子表单中的字段

Me.SF_DRL_Scheduling.Form.DrScDte.SetFocus

答案 2 :(得分:-1)

错误恢复下一个

'第二次不运行下面的代码并引发错误,因此我们需要上面的On Error Resume Next。但是再等一次再运行一次代码,就可以在下面运行所有代码并进行处理

Me.frmArtikelSubInkoopHistorie.SetFocus

Forms![frmArtikelen]![frmArtikelSubInkoopHistorie].Form![Tekst33].SetFocus