【问题标题】:Input box in MS Access 2016 ReportsMS Access 2016 报告中的输入框
【发布时间】:2017-01-26 23:12:21
【问题描述】:

我是 MS Access 的新手。我创建了一个报告,它从 excel 中提取数据并显示在 MS Access 表单输出中。我添加了一个文本框,在 Properties->Control Source 我添加了“PO#”,如图 1 所示。

因此,当用户尝试打开如下图 2 中的报表时,在对话框中输入值。我需要在对话框中添加一个默认值,格式为“LDXXXX”,其中 XXXX 是财政年度。我有如下生成财政年度的逻辑:

If month <= 8 then
  Current year
else
  current year + 1

我不知道在哪里实现它。当用户尝试打开表单时,对话框应该具有上述格式作为默认值,它应该填充在图 1 中的文本框中。我知道当我们单击文本并开始时可以访问三个事件“构建事件”——宏、代码或表达式构建器,但是如何为对话框实现呢?

【问题讨论】:

    标签: excel vba ms-access ms-access-2016


    【解决方案1】:

    如果源数据中不存在 PO#,则它可能不应被引用为控制源。用户是否需要更改 LDXXXX 默认值,或者您是否执行此操作以确保填充该值?如果是后者,您可能只使用这样的东西作为 texbox 的控制源:

    ="LD" & IIf(Month(Date())<8,Year(Date()),Year(Date())+1)
    

    如果用户需要更改它,请保留名为“PO#”的 txtbox,并将代码添加到报告的加载事件中。

    Private Sub Report_Load()
    Me.[PO#] = InputBox("Fiscal Year:", "Fiscal year", "LD" & IIf(Month(Date) < 8, Year(Date), Year(Date) + 1))
    End Sub
    

    【讨论】:

    • 您提供的是自动化,因此用户无法选择提供输入,这在某种程度上是正确的,但不是 100%。 “LD2017”(考虑当前会计年度)应该默认存在,但用户可以更改为“CP2017”或“TC2017”,所以在上面的图2中,它应该在输入框中默认显示“LD2017”,并且用户可能会改变也可能不会改变,所以如果没有改变,它将填充“LD2017”或类似的反之亦然,有没有办法实现它?对话框很重要。
    • 您可以在报告的加载事件中使用输入框。保持你的文本框标题为“PO#”,然后在报告加载: Private Sub Report_Load() Me.PO_ = InputBox("Fiscal Year:", "Fiscal year", "LD" & IIf(Month(Date)
    • 是的,效果很好。所以现在用户可以使用它了。
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多