【问题标题】:How to dynamically position a text box in Access 2003 report?如何在 Access 2003 报表中动态定位文本框?
【发布时间】:2013-05-19 05:49:54
【问题描述】:

我有一个 Access 2003 项目 (.ADP),它是 SQL Server 2005 数据库的前端。

在这个 ADP 中,我有一个报告,它是一组 8 个未绑定的文本框,彼此堆叠在一起,每个都有自己的标签。每个文本框用于指示将处理订单的 8 个不同部门。

此报告会填充适当的数据,并在用户单击表单中的按钮时显示给用户。

很少会同时获得所有 8 个框的值。大多数时候,只有 2 或 3 个框有值。

鉴于此,是否有可能以某种方式实现盒子的流畅布局?即,隐藏没有要显示的值的框,而不是显示空白区域,报告应该向上移动隐藏框下方有说明的框。

是否可以通过一些迂回的 VBA 代码?如果没有,我可以尝试什么其他选择?谢谢你。

EDIT - 报告和文本框仅用于呈现数据。

【问题讨论】:

    标签: ms-access vba ms-access-2003 adp


    【解决方案1】:

    通过将文本框的“Can Shrink”属性设置为“Yes”,然后将以下代码添加到 Detail 带的 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 调整显然在“报告视图”中不起作用,但在打印预览中我得到:

    您会注意到,如果其中一些被“挤出”,其余的框可能不会完全匹配。如果您的报告可以在文本框本身没有边界的情况下进行,那么这种差异几乎不会引起注意。否则,您将不得不调整布局,直到它看起来不错(或至少“足够好”)。这就是数据库报告的方式:花半个小时让这个东西工作,然后再花两个小时摆弄它,让它“看起来不错”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多