返回值后格式化报表文本框

时间:2018-12-03 19:49:24

标签: ms-access access-vba access

这是我在TextBox Control Source with Nested IIF Statement is Returning Same Column Regardless上的原始帖子的后续帖子

Lee Mac能够帮助我获取适当​​的语法,以基于另一个文本框的值返回3个潜在值中的1个。现在,我正在努力以适当的格式获取返回的值。

这些值可以是Currency或Percent,它们将位于同一文本框中,因此我一直在尝试使用Event过程来格式化该值,但是没有发生变化。

我最近一次尝试,导致值始终为#。####:

Private Sub Detail_Format()

If Me.Allowance_Type = "% Off Invoice" Then
    Me.txtbox4.Value = Format(Me.txtbox4.Value, "0.00%")
End If
If Me.Allowance_Type = "Per Pound" Then
    Me.txtbox4.Value = Format(Me.txtbox4.Value, "$###,###.##")
End If
If Me.Allowance_Type = "Per Case" Then
    Me.txtbox4.Value = Format(Me.txtbox4.Value, "$###,###.##")
End If

End Sub

我还尝试了其他各种活动,例如Report_Load等,并且尝试更改该行: If Me.Allowance_Type =If Me.Allowance_Type.Value =,但结果为#Name?

是否有1个文本框可以有条件地设置为“货币”或“百分比”?预先感谢!

3 个答案:

答案 0 :(得分:1)

可以在ControlSource中执行表达式并消除VBA。

=Format([fieldname], IIf([Allowance_Type] LIKE "Per*", "Currency", "Percent"))

或在返回值的过程中包括此格式。

=Format(Switch([Allowance Type]="% Off Invoice",[Freight Paid % OI], ([Allowance Type]="Per Pound",[Freight Paid / LB], [Allowance Type]="Per Case",[Freight Paid/_Case]), IIf([Allowance_Type] LIKE "Per*", "Currency", "Percent"))

格式事件仅在PrintPreview中触发或直接触发到打印机,而不在报表视图中触发。

建议在命名约定中不要使用空格或标点符号/特殊字符(仅下划线除外)。

答案 1 :(得分:0)

尝试使用.Format属性,如下所示:

If Me.Allowance_Type = "Per Case" Then
    Me.txtbox4.Format = "$###,###.##"
End If

答案 2 :(得分:0)

在另一个问题中,按my comment,如果您允许自己将数据转换为字符串,而不是保留原始数据类型(并因此保留原始精度),则可以使用{{1} }直接在您的Format表达式中起作用,例如:

Switch

否则,我建议使用事件处理程序来更改文本框的=Switch ( [Allowance Type] = "% Off Invoice", Format([Freight Paid % OI], "0.00%"), [Allowance Type] = "Per Pound", Format([Freight Paid / LB], "$###,###.##"), [Allowance Type] = "Per Case", Format([Freight Paid/_Case], "$###,###.##"), True, "" ) 属性,该属性是在绑定到.Format字段的表单控件的AfterUpdate事件上触发的。