Ms access Can';t更改报告中文本框的文本\u打开

Ms access Can';t更改报告中文本框的文本\u打开,ms-access,vba,textbox,label,report,Ms Access,Vba,Textbox,Label,Report,我所要做的就是在点击另一个表单中的按钮打开报表时,将文本框或标签的文本设置为动态。我已经解决了所有问题,除了实际修改文本 此代码给出SetFocus上的运行时错误2478: Me.tFilial.SetFocus Me.tFilial.Text = filialen 如果没有SetFocus,我会得到一个运行时错误,说如果不将控件切换到所讨论的控件,文本就无法更改 什么是允许的,在访问中总是有问题,似乎。我如何解决这个问题?我可以设置按钮上的值吗用另一种形式单击 Reports![rptPre

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

此代码给出SetFocus上的运行时错误2478:

Me.tFilial.SetFocus
Me.tFilial.Text = filialen
如果没有SetFocus,我会得到一个运行时错误,说如果不将控件切换到所讨论的控件,文本就无法更改

什么是允许的,在访问中总是有问题,似乎。我如何解决这个问题?我可以设置按钮上的值吗用另一种形式单击

Reports![rptPressSchema]![tFilial].text="Hello"?
如果能解决这个问题的话,我很乐意使用标签。但归根结底,我可以尝试各种方法来实现这一点,但我想我会征求您关于最佳实践的建议,因为这确实是一项非常常见的任务。

来自Access帮助:

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


基本上,
.Text
属性在报表中没有任何作用,因为单个控件无法接收焦点。然而,正如@Remou在他的评论中所说的,您可以简单地将
.Text
替换为
.Value
,您的代码应该可以正常工作(更新值时无需设置焦点)。

花费了大量时间进行搜索和尝试。终于把事情弄清楚了。。。 要动态设置文本框内容,使用起来很方便 tbTest.Value=“你好”

但诀窍是,如果您在Open上使用此
,它将遇到麻烦


运行时错误“2448”
无法为此对象指定值。

因此,您需要设置加载时的值

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

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

对此我看不到任何解释,我的猜测是开放事件,对象仍然没有启动(用于解释加载和开放事件).

请再发布一点代码好吗。您使用哪个事件来更改文本?它位于文章标题-报告打开中。我试着按照第二次代码粘贴将其设置为按钮单击,但收到一条错误消息,“报告未打开”。Access报告确实对事件非常挑剔。Report open可能不适合此操作。不要包含.Text属性,它不是必需的,并且仅适用于具有焦点的控件。如果您必须拥有一个属性,您可以使用.ValueNoWaDay.我考虑通过在报告中的事件中使用VB代码修改报告中的数据“在游戏中太晚了”。在打开之前,我会确保所有源数据都可用,并且格式正确。我推荐这种方法,它可以省去大量的麻烦,而且报告的生成也变得非常简单。@HenrikErlandsson:这绝对是首选的方法。它通常更快,更不容易出错。也就是说,有时您的唯一选择将是更新报告事件中的值。