无法在Access中将我的子窗体设置为焦点 - 错误2465(找不到表达式中引用的字段'| 1')

问题描述 投票:0回答:2

最近我把焦点放在我的子表单上(很多)。出于某种原因,我无法将焦点设置为我的子表单并且它一直给我错误:可以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 eventmain form上,但这也导致了错误。

然后我试着将焦点设置在load event本身的subform上,但这个事件永远不会被解雇。

最后,我尝试(这是我离开的地方)将焦点设置在我的change eventtab control中(子窗体位于其中一个选项卡中):

Private Sub TabbestEl91_Change()

On Error GoTo eri

Select Case TabbestEl91
    Case 3  'Inkoop Historie

    'Forms("frmArtikelSubInkoopHistorie").SetFocus
    [Forms]![frmArtikelen].[frmArtikelSubInkoopHistorie].SetFocus
    [Forms]![frmArtikelen].[frmArtikelSubInkoopHistorie].[Form].[Tekst33].SetFocus

  End Select

eri:
MsgBox (Err.Number)
MsgBox (Err.description)

End Sub

我认为聚焦失败是因为子窗体在设置焦点的那一刻还没有加载,这只是一个假设,我认为如果我将焦点设置在标签更改中这将被修复(子窗体应该加载到时)。

附:发现了关于这个主题的多个帖子,但没有找到我的问题或者与我的完全不同。

有什么想法来解决这个问题?提前致谢!

vba ms-access setfocus subform
2个回答
1
投票

我会尝试以下语法:

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

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

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

您是否意识到您不需要VBA来选择子窗体的选项卡索引为0?然后在子窗体中设置制表符索引,使tekst33为0?


0
投票

在创建新记录后,我尝试将注意力设置在我的子表单日期上。顺序代码将焦点设置在子窗体上,然后子窗体字段可能适合您:

  1. 从父表单setfocus首先在子表单上

Me.SF_DRL_Scheduling.SetFocus

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

Dakamadagotorekarda,aklasta“

  1. 最后参考子表单中的字段

Me.SF_DRL_Scheduling.Form.DrScDte.SetFocus

© www.soinside.com 2019 - 2024. All rights reserved.