2015-04-21 3 views
1

Я создаю отчет о кросс-таблице, в котором показана история опроса для черепах суслика (if you must know what that is). Не все станции контролируются для данного опроса, и иногда, когда мы контролируем, мы не находим и, таким образом, записываем 0, что является допустимым результатом.Crosstabs Crystal Reports Null value vs zero

В кросс-таблице, когда станция не используется, я хотел бы, чтобы она говорила «N/A» или какой-либо другой эквивалент, но когда она равна нулю, я хочу, чтобы она оставалась равной нулю.

Я так много нашел, как изменить нуль на ноль, но ничего, если вы хотите сохранить нуль и как-то отметить нуль.

Ниже приведена кросс-таблица. Вы увидите, что 0 в Station4 на 1/1/2004 является «реальным» (что означает, что мы не нашли его), но все N/A - это когда мы не использовали станцию.

      Survey Dates 
|   | 1/1/2000 | 1/1/2002 | 1/1/2004 | 1/1/2006 | 
|----------|----------|----------|----------|----------| 
| Station1 | 9  | 5  | N/A  | N/A  | 
| Station2 | 5  | 7  | 2  | 6  | 
| Station3 | N/A  | N/A  | 6  | 9  | 
| Station4 | 10  | 9  | 0  | 11  | 

Это то, что таблица Oracle выглядеть для 1/1/2000 обследования в качестве примера

| SurveyID | StationID | Number | 
|----------|-----------|--------| 
| 1  | 1   | 9  | 
| 1  | 2   | 5  | 
| 1  | 4   | 6  | 

Так, в основном, как я держу нули и поставить какой-нибудь текст в нулях в кросс-таблицы CR?

Спасибо!

+0

Вы суммируете данные опроса в любой точке кросс-таблицы? Иными словами, каждая станция имеет только одно значение в базе данных для каждого столбца в своей кросс-таблице? – Ryan

+0

На самом деле нет ... Я старался, чтобы это было просто, так как я не думал, что это имеет значение. Таблица Oracle на самом деле выглядит как – opuntia

+0

Позвольте мне начать мой комментарий, так как я был прерван, и я передал 5-минутную отметку ... @ ryan Спасибо за ответ. На самом деле нет ... Я пытался сохранить это просто, так как я не думал, что это имеет значение. В таблице Oracle на самом деле имеется два поля «число» (один для активных нор и другой для неактивных норов). Затем я создал поле формулы, которое суммировало эти два поля. Это поле формулы, которое я включил в кросс-таблицу. Однако я также создал еще один отчет, в котором я поместил оба неактивных и активных поля отдельно в кросс-таблицу, и у меня все еще есть та же проблема. – opuntia

ответ

0

Поскольку CR не различает нули и фактические нули в кросс-таблице, вы можете попробовать заменить фактические нулевые значения на заполнитель, чтобы вы могли отличить эту разницу. Обратите внимание, что это решение будет работать только в том случае, если вы пытаетесь отобразить значения и не выполнять никаких обобщенных вычислений.

Сначала создайте формулу, которая заменит нули значением-заполнителем. В этом случае я использую -1, поскольку этот номер никогда не должен появляться в базе данных.

//{@Survey Num} 
    local numbervar totalSurvey; 
    totalSurvey:={Table.ActiveBurrows} + {Table.InactiveBurrows}; 
    if totalSurvey=0 then -1 else totalSurvey 

Используйте эту формулу, чтобы создать свою кросс-таблицу. Теперь вам нужно установить строку отображения, чтобы все отображалось правильно. Щелкните правой кнопкой мыши одну из ваших кросс-таблеток → нажмите «Формат поля» → выберите вкладку «Общие» →, затем создайте формулу «Показать строку». Эта формула должна быть примерно такой:

if currentfieldvalue=-1 then "0" else if currentfieldvalue=0 then "N/A" else totext(currentfieldvalue,0,'') 

Теперь вы в основном просто печатаете реальные значения поверх верхней части заполнителей.