非常新手的问题,但我的报告有几列,包括用户名。我还有一个表单,用户可以在组合框中选择用户名,报表将打开,只显示与该用户相关的记录。有没有办法我可以在报表上放置一个文本框,该文本框是根据用于打开报表的表单的COMbox框中选择的内容填充的?注意我打开报告后立即关闭表单。
答案 0 :(得分:2)
由于您的Access版本为2007或更高版本,因此您可以使用TempVar
将组合框值传递到报告文本框的控制来源。
例如,将此作为 Username_txt 的控件来源,以下点击事件过程将确保在该文本框中显示正确的值:
=[TempVars]![user_name]
Private Sub reportbyuser_bt_Click()
TempVars("user_name") = Me.Filteruser_cb.Value
DoCmd.OpenReport "Report by user", acViewReport
DoCmd.Close acForm, Me.Name
End Sub
您可以根据Filteruser_cb.Column(n)
代替Filteruser_cb.Value
答案 1 :(得分:1)
经过一些游戏后,我能够通过创建一个名为temp的变量来解决这个问题,该变量存储了组合框的值,并使用存储的值填充报表上的文本框。
Private Sub reportbyuser_bt_Click()
Dim temp As String
temp = Filteruser_cb.Value
DoCmd.OpenReport "Report by user", acViewReport
[Report_Report by user].Username_txt.Value = temp
DoCmd.Close acForm, "Restructuring Report"
End Sub
事实上,我甚至不需要使用临时工具,只需这样做:
[Report_Report by user].Username_txt.Value = Filteruser_cb.Value
此外,只是意识到如果组合框中有几个不同的列,我的解决方案不是很好。我改用了这个:
[Report_Report by user].Username_txt.Value = Filteruser_cb.Column(n)
(n为列号)