我想要做的就是在打开报表时单击另一个表单中的按钮,将文本框或标签的文本设置为动态文本。除了实际更改文本外,我已经解决了所有问题。
此代码在SetFocus上提供运行时错误2478:
Me.tFilial.SetFocus
Me.tFilial.Text = filialen
如果没有SetFocus,我会收到运行时错误,指出如果不将控制权切换到相关控件,则无法更改文本。
似乎在Access中始终存在的问题是什么。我该如何解决这个问题?我可以使用
在其他表单中设置按钮上的值Reports![rptPressSchema]![tFilial].text="Hello"?
我很乐意使用标签,如果能解决的话。但最重要的是我可以尝试以这种方式做到这一点,但我想我会请求你就最佳实践提出建议,因为这确实是一项非常普遍的任务。
答案 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用于解释加载和打开事件)...