我有一个Access 2003项目(.ADP),它是SQL Server 2005数据库的前端。
在这个ADP中,我有一个报告,它是一组8个未绑定的文本框,彼此堆叠在一起,每个文本框都有自己的标签。每个文本框都是针对8个不同部门的说明,这些部门将处理订单。
此报告将填充适当的数据,并在单击表单中的按钮时显示给用户。
很少有8个盒子同时获得值。大多数情况下,它有2或3个有价值的盒子。
鉴于此,是否有可能以某种方式实现盒子的流畅布局?即,隐藏没有要显示的值的框,但报告不应显示空白区域,而应向上移动包含隐藏框下方指令的框。
是否可以通过一些迂回的VBA代码?如果没有,我还可以尝试其他选择吗?谢谢。
编辑 - 报告和文本框仅用于显示数据。
答案 0 :(得分:1)
我能够通过将文本框的“Can Shrink”属性设置为“Yes”,然后将以下代码添加到Detail band的On Format
事件中来创建您描述的效果
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Me.lblAccounting.Visible = Not IsNull(Me.txtAccounting.Value)
Me.txtAccounting.Visible = Not IsNull(Me.txtAccounting.Value)
Me.lblFinance.Visible = Not IsNull(Me.txtFinance.Value)
Me.txtFinance.Visible = Not IsNull(Me.txtFinance.Value)
Me.lblMarketing.Visible = Not IsNull(Me.txtMarketing.Value)
Me.txtMarketing.Visible = Not IsNull(Me.txtMarketing.Value)
Me.lblOperations.Visible = Not IsNull(Me.txtOperations.Value)
Me.txtOperations.Visible = Not IsNull(Me.txtOperations.Value)
End Sub
对于测试数据
ID Accounting Finance Marketing Operations
-- ---------- ------- --------- ----------
1 a1 f1 o1
2 f2 m2
我在打印预览中获得以下结果。我正在使用Access 2010,On Format
调整显然不适用于“报表视图”,但在打印预览中,我得到:
如果其中一些框被“挤出”,您会注意到剩下的框可能与完全不匹配。如果您的报告可以在文本框本身上没有边界,则差异几乎不会引起注意。否则,你必须调整布局,直到它看起来很好(或至少“足够好”)。这就是数据库报告的方式:花半个小时让事情发挥作用,再花两个小时摆弄它,使它“看起来不错”。