无法在Report_Open中更改TextBox的Text

时间:2011-12-23 09:27:22

标签: ms-access vba textbox label report

我想要做的就是在打开报表时单击另一个表单中的按钮,将文本框或标签的文本设置为动态文本。除了实际更改文本外,我已经解决了所有问题。

此代码在SetFocus上提供运行时错误2478:

Me.tFilial.SetFocus
Me.tFilial.Text = filialen

如果没有SetFocus,我会收到运行时错误,指出如果不将控制权切换到相关控件,则无法更改文本。

似乎在Access中始终存在的问题是什么。我该如何解决这个问题?我可以使用

在其他表单中设置按钮上的值
Reports![rptPressSchema]![tFilial].text="Hello"?

我很乐意使用标签,如果能解决的话。但最重要的是我可以尝试以这种方式做到这一点,但我想我会请求你就最佳实践提出建议,因为这确实是一项非常普遍的任务。

2 个答案:

答案 0 :(得分:3)

来自Access帮助:

  

当控件具有焦点时,Text属性包含当前在控件中的文本数据; Value属性包含控件的最后保存数据。将焦点移动到另一个控件时,控件的数据将更新,并且Value属性将设置为此新值。 文本属性设置随后不可用,直到控件再次获得焦点。如果使用“记录”菜单上的“保存记录”命令将数据保存在控件中而不移动焦点,则Text属性和值属性设置将是相同的。

基本上,.Text属性在报告中没有用处,因为单个控件无法获得焦点。但是,正如@Remou在评论中所述,您只需将.Text替换为.Value,您的代码就可以正常工作(更新值时无需设置焦点)。

答案 1 :(得分:1)

花了很多时间进行搜索和尝试。最后把事情搞清楚了...... 要动态设置TextBox内容,使用起来很方便 tbTest.Value ="你好"

但诀窍是,如果你使用这个On Open,它将遇到麻烦......

Run-time error '2448' You can't assign a value to this object.

因此您需要设置值On Load

Private Sub Report_Load()
Me.tbTest.Value = "hello"
End Sub

Private Sub Report_Open(Cancel As Integer)
'Me.tbTest.Value = "hello"
End Sub

我看不到任何解释,我的猜测是Open事件,对象仍未启动(document用于解释加载和打开事件)...