根据另一个表单

时间:2015-06-09 14:13:56

标签: ms-access access-vba ms-access-2007 ms-access-2013

非常新手的问题,但我的报告有几列,包括用户名。我还有一个表单,用户可以在组合框中选择用户名,报表将打开,只显示与该用户相关的记录。有没有办法我可以在报表上放置一个文本框,该文本框是根据用于打开报表的表单的COMbox框中选择的内容填充的?注意我打开报告后立即关闭表单。

2 个答案:

答案 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为列号)