2013-07-04 3 views
0

У меня есть столбец SQL, который вычисляет разницу дат, которая, очевидно, является целым числом. То, что мне нужно, - это, на мой взгляд, довольно просто; но я не могу найти синтаксис, чтобы он работал.Crystal Reports 2011 - Integer to String и обратно в Integer

Цель состоит в том, чтобы принять все значения NULL и заставить их сказать «Отсутствует», оставив остальную часть данных в столбце целым числом.

Я сделал это, чтобы сделать NULLS = 0 (ToNumber() на самом деле не нужно, я просто не изменил его еще нет):

if isnull({Command.DAYS_OUT}) = true then 0 else tonumber({Command.DAYS_OUT})

Но то, что я действительно хочу, чтобы это сказать if isnull({Command.DAYS_OUT}) = true then "Missing" else {Command.DAYS_OUT} , К сожалению, Кристал выплюнул эту глупую «Строка здесь требуется». Ну, я НЕ ХОЧУ СТРОИТЬ!

Я не могу использовать totext() в инструкции ELSE. Мне нужно использовать Highlight Expert, чтобы сказать, если он отсутствует, тогда красный, если < 0, тогда красный/полужирный, и между 1 & 30 желтым/полужирным шрифтом. Когда я использую totext(), то не могу понять, что такое число ... :(

Пожалуйста, помогите ...!

ответ

0

Вы не можете иметь одну формулу, которая выводит несколько типов данных. Вместо этого, вы можете есть ваша формула вывода строку, как вы уже упоминали:

if isnull({Command.DAYS_OUT}) then "Missing" else totext({Command.DAYS_OUT})

Затем, чтобы получить цвет шрифта форматирования, как вы хотите, вы можете использовать исходное целое значение:

if isnull({Command.DAYS_OUT}) or {Command.DAYS_OUT} < 0 then crRed 
else if {Command.DAYS_OUT} in 1 to 30 then crYellow 
else crBlack 

И затем сделайте то же самое для шрифта:

if isnull({Command.DAYS_OUT}) then crRegular 
else if {Command.DAYS_OUT} < 0 or {Command.DAYS_OUT} in 1 to 30 then crBold 
else crRegular