在具有不同文本框的报表中显示表记录
Posted
技术标签:
【中文标题】在具有不同文本框的报表中显示表记录【英文标题】:Showing table records in a report with different textboxes 【发布时间】:2021-04-10 22:54:13 【问题描述】:我有一个表名为 Table1,其中包含 2 个字段,即 Name 和 Married_Status。 Name 包括员工姓名,Married_Status 包括 Yes 或 No。 问题是:我可以通过两种方式在报告中显示它们吗?首先当状态为是时出现 2 个文本框,但如果出现第 1 个文本框中的状态? 我使用 Access 2016
【问题讨论】:
可以使用文本框中的表达式根据某些条件显示 Null。或者 VBA 代码可以设置 Visibility 属性。没有足够的信息来提供具体的答案。只有 2 个字段的报告? 您的用户表单旨在显示一个数据集。因此它需要 2 个文本框。您的报告旨在显示一个列表。如果列表包含状态信息,则需要 2 列,除非您生成已婚和未婚人士的单独列表。这两列都不会显示文本框。根据底层数据库中的内容,可以使列显示您想要的任何内容。您的问题表明您可能将“报告”与“数据库”混为一谈。 Excel 更适合这种报告。 感谢您的回复。不,我没有混淆,我以简单的方式问了我的问题。我的项目太大了,我无法显示我所有的工作,但我的问题是我数据库中最小的部分。我的意思是如何在一份报告中制作 2 个不同的视图? 例如在我的报告中有时根据表格记录查看2个文本框有时1个。 编辑问题以提供示例数据和所需的输出作为文本表。您是否尝试过我在第一条评论中的建议? 【参考方案1】:如果我对您的理解正确,您想隐藏 Married_Status 列(如果不是)。但是,如果我有误解,此答案将涵盖隐藏其他列。简而言之,这称为条件格式,通过突出显示控件-单击格式选项卡-然后单击条件格式来完成。但是,访问只能有条件地格式化控件的文本颜色、字体和背景。此外,是/否变量的默认控件是复选框,并且该复选框不允许条件格式。 有两种解决方法。首先,您可以让 Married_Status 文本框在所有情况下都不可见: 报告基于查询并将 Married_Status 替换为计算变量,例如:
Married_Status: IIf([Table1].[Married_Status]=True,"Married",Null)
如果我们使用 Married_Status 的文本框并使其透明,我们会得到:
当 Married_Status 为 Null 并且 Married_Status 文本框是透明的时,什么都不会显示。不幸的是,即使值为空,也会显示一个复选框。
第二种变通方法需要你事先对数据有很多了解,并且只有在老板坚持的情况下才应该这样做。您可以使用 VBA 构建报告。对于我的示例数据,我知道我有 4 个案例的一页,因此我可以避免详细信息部分,该部分将我限制为每个 Married_Status 实例的一个控件,并在标题中放置我需要的尽可能多的控件:
然后在加载事件中使用vba设置控件:
Private Sub Report_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
For i = 1 To 4
Me.Controls("Text" & i) = rs("EmployeeName")
If rs("Married_Status") = True Then
Me.Controls("Check" & i) = True
Else
Me.Controls("Check" & i).Visible = False
End If
rs.MoveNext
Next i
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
【讨论】:
以上是关于在具有不同文本框的报表中显示表记录的主要内容,如果未能解决你的问题,请参考以下文章