Форматирование текстового поля отчета после возврата значения - PullRequest
0 голосов
/ 03 декабря 2018

это продолжение моего исходного сообщения на Источник управления TextBox с вложенным IIF-оператором возвращается тот же столбец независимо от того

Ли Мак смог помочь мне получить соответствующий синтаксисвернуть 1 из 3 потенциальных значений на основе значения другого текстового поля.Теперь я изо всех сил пытаюсь получить возвращенное значение в соответствующем формате.

Значения могут быть в валюте или процентах, и они будут в одном и том же текстовом поле, поэтому я пробовал процедуру 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 голосов
/ 04 декабря 2018

Может сделать выражение в 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 или напрямую на принтер, а не в представление отчета.

Не рекомендуется использовать пробелы или знаки препинания / специальные символы (подчеркивают только исключение) в соглашении об именах.

0 голосов
/ 04 декабря 2018

За мой комментарий в вашем другом вопросе, если вы позволите себе преобразовать данные в строку, в отличие от сохранения исходного типа данных (и, следовательно, исходной точности), тогда вы можете использовать *Функция 1003 * непосредственно в вашем выражении 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элемент управления формы привязан к вашему [Allowance Type] полю.

0 голосов
/ 03 декабря 2018

Попробуйте использовать свойство .Format, например:

If Me.Allowance_Type = "Per Case" Then
    Me.txtbox4.Format = "$###,###.##"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...