Cross-Tab. Highlighting. Expression. Не работает условие.
Cross-Tab. Highlighting. Expression. Не работает условие.
Доброе утро, уважаемые!
Сделал очередной отчёт для проекта. В нём cross-tab. Всё работает великолепно, но возникла одна загвоздка - мне нужно раскрасить колонки с сегодняшней датой. Казалось бы, всё просто, ставим у нужной ячейки условие по которому красить и всё, но нет - условие не срабатывает.
Суть в том, в ячейку cross-tab'а (см. отчёт в приложении) CrossTab1_Sum1 я ставлю Expression: qrMain.DOC_DATE.CompareTo(Today) == 0. Это условие почему-то не срабатывает. Пробовал уже и так qrMain.DOC_DATE.ToShortStringDate() == Today.ToShortStringDate(), хотя это маразм, но всё равно не работает.
Самое интересное в том, что в Вашем Demo-примере CrossTab with Highlighting просто по условию Today.CompareTo(System.DateTime.Parse("15.04.2010")) == 0 всё работает, равно как и по маразматическому условию Today.ToShortDateString() == System.DateTime.Parse("15.04.2010").ToShortDateString() так работает велоколепно.
Но почему же в моём отчёте тоже самое не работает?
У меня поле DOC_DATE типа DateTime (тянется из процедуры Oracle) и всё работает, но условие не выполняется, причём именно по этому полю. А, скажем, как в Вашем примере типа value < 20, то да, без проблем всё выполняется.
Странно... Провозился со вчерашнего вечера, и если бы не потратил на это почти 4 часа, то не спрашивал бы, но сил уже нет разбираться, уже всякие варианты перепробовал.
Файл отчёта во вложении.
Сделал очередной отчёт для проекта. В нём cross-tab. Всё работает великолепно, но возникла одна загвоздка - мне нужно раскрасить колонки с сегодняшней датой. Казалось бы, всё просто, ставим у нужной ячейки условие по которому красить и всё, но нет - условие не срабатывает.
Суть в том, в ячейку cross-tab'а (см. отчёт в приложении) CrossTab1_Sum1 я ставлю Expression: qrMain.DOC_DATE.CompareTo(Today) == 0. Это условие почему-то не срабатывает. Пробовал уже и так qrMain.DOC_DATE.ToShortStringDate() == Today.ToShortStringDate(), хотя это маразм, но всё равно не работает.
Самое интересное в том, что в Вашем Demo-примере CrossTab with Highlighting просто по условию Today.CompareTo(System.DateTime.Parse("15.04.2010")) == 0 всё работает, равно как и по маразматическому условию Today.ToShortDateString() == System.DateTime.Parse("15.04.2010").ToShortDateString() так работает велоколепно.
Но почему же в моём отчёте тоже самое не работает?
У меня поле DOC_DATE типа DateTime (тянется из процедуры Oracle) и всё работает, но условие не выполняется, причём именно по этому полю. А, скажем, как в Вашем примере типа value < 20, то да, без проблем всё выполняется.
Странно... Провозился со вчерашнего вечера, и если бы не потратил на это почти 4 часа, то не спрашивал бы, но сил уже нет разбираться, уже всякие варианты перепробовал.
Файл отчёта во вложении.
- Вложения
-
- Отгрузка по менеджерам (детализация по дням).zip
- (7.67 КБ) 190 скачиваний
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Cross-Tab. Highlighting. Expression. Не работает условие.
Здравствуйте,
Вы наверно прислали нам не тот проект. Я не нашел в нем кросс-таблиц. Пожалуйста, пришлите еще раз пример отчета и базу данных к нему.
Спасибо.
Вы наверно прислали нам не тот проект. Я не нашел в нем кросс-таблиц. Пожалуйста, пришлите еще раз пример отчета и базу данных к нему.
Спасибо.
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Cross-Tab. Highlighting. Expression. Не работает условие.
Здравствуйте,
Мы немного изменили Ваш пример. Вы не внимательно посмотрели как работает пример из Demo, сделали почти правильно, но не до конца. Значение {qrMain.DOC_DATE} надо передавать в свойстве Tag компонента CrossTab1_Sum1. Соответственно условие немного изменилось. Т.к. у Вас в базе не было текущей даты, вместо "Today" мы использовали переменную. Обращайтесь, если появятся еще вопросы.
Спасибо.
Мы немного изменили Ваш пример. Вы не внимательно посмотрели как работает пример из Demo, сделали почти правильно, но не до конца. Значение {qrMain.DOC_DATE} надо передавать в свойстве Tag компонента CrossTab1_Sum1. Соответственно условие немного изменилось. Т.к. у Вас в базе не было текущей даты, вместо "Today" мы использовали переменную. Обращайтесь, если появятся еще вопросы.
Спасибо.
- Вложения
-
- Отгрузка по менеджерам (детализация по дням).mrt
- (23.01 КБ) 189 скачиваний
Cross-Tab. Highlighting. Expression. Не работает условие.
Сделал всё, как Вы сказали, всё равно не закрашивает ячейки.
Кроме того, не пойму, как работает это условие. Получается, свойство tag можно привести к необходимому типу данных и сравнить значение, т.е.
в момент прорисовки ячейки свойство tag перебирает все колонки DataTable поочереди, так?
Поставил условие в Expression: System.Convert.ToDateTime(tag).Date.CompareTo(Date_Test.Date) == 0, при этом переменной Date_Test присвоил значение '01.04.2009', для проверки, такое значение там есть (в xml базе).
Вы говорите, что у меня нет в базе значения Today. Это верно, но оно мне там и не нужно, т.к. в нашей базе время берётся с сервера, но иногда это не нужно, поэтому мы просто используем System.DateTime.Today либо встроенную переменную Today, что тоже самое, я полагаю.
Кроме того, не пойму, как работает это условие. Получается, свойство tag можно привести к необходимому типу данных и сравнить значение, т.е.
в момент прорисовки ячейки свойство tag перебирает все колонки DataTable поочереди, так?
Поставил условие в Expression: System.Convert.ToDateTime(tag).Date.CompareTo(Date_Test.Date) == 0, при этом переменной Date_Test присвоил значение '01.04.2009', для проверки, такое значение там есть (в xml базе).
Вы говорите, что у меня нет в базе значения Today. Это верно, но оно мне там и не нужно, т.к. в нашей базе время берётся с сервера, но иногда это не нужно, поэтому мы просто используем System.DateTime.Today либо встроенную переменную Today, что тоже самое, я полагаю.
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Cross-Tab. Highlighting. Expression. Не работает условие.
Здравствуйте,
Попробуйте написать Today.Date вместо Today. Т.к. в Today может быть задано еще и время(т.е. не равно 0:00:00), а тогда условие срабатывать не будет.
>>Кроме того, не пойму, как работает это условие. Получается, свойство tag можно привести к необходимому типу данных и сравнить значение, т.е.
в момент прорисовки ячейки свойство tag перебирает все колонки DataTable поочереди, так?
В свойстве Tag передается текущее значение указанного поля, на момент построения.
Спасибо.
Попробуйте написать Today.Date вместо Today. Т.к. в Today может быть задано еще и время(т.е. не равно 0:00:00), а тогда условие срабатывать не будет.
>>Кроме того, не пойму, как работает это условие. Получается, свойство tag можно привести к необходимому типу данных и сравнить значение, т.е.
в момент прорисовки ячейки свойство tag перебирает все колонки DataTable поочереди, так?
В свойстве Tag передается текущее значение указанного поля, на момент построения.
Спасибо.
Cross-Tab. Highlighting. Expression. Не работает условие.
Это очевидно, т.к. любая дата всегда содержит время, но я же сравниваю две одинаковые даты с временем 00:00:00.Попробуйте написать Today.Date вместо Today. Т.к. в Today может быть задано еще и время(т.е. не равно 0:00:00), а тогда условие срабатывать не будет.
Пробовал - не работает, ни так: System.Convert.ToDateTime(tag).Date.CompareTo(Today.Date) == 0, ни так System.Convert.ToDateTime(tag).Date.CompareTo(System.DateTime.Today.Date) == 0, ни даже так: System.Convert.ToDateTime(tag).Date.CompareTo(System.DateTime.Parse("01.04.2009").Date) == 0, 01.04.2009 - эта дата есть в xml-файле.
Проверил пару маразматических, но 100%-х кодов System.Convert.ToDateTime(tag).Date.ToShortDateString() == "01.04.2009", и tag == "01.04.2009 00:00:00", удивительно, но и они не дают результатов.
Не пойму, что ерунда.:tire:
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Cross-Tab. Highlighting. Expression. Не работает условие.
Здравствуйте,
Пришлите пожалуйста конечную версию вашего отчета, мы проверим у себя. Постараемся разобраться в чем проблема.
Спасибо.
Пришлите пожалуйста конечную версию вашего отчета, мы проверим у себя. Постараемся разобраться в чем проблема.
Спасибо.
Cross-Tab. Highlighting. Expression. Не работает условие.
Конечная версия отчёта во вложении. В принципе, она не поменялась.
Только что попробовал System.DateTime.Parse(tag).Date.CompareTo(System.DateTime.Parse("01.04.2009 00:00:00")) == 0, тоже не хочет закрашивать. Очень странно.
Только что попробовал System.DateTime.Parse(tag).Date.CompareTo(System.DateTime.Parse("01.04.2009 00:00:00")) == 0, тоже не хочет закрашивать. Очень странно.
- Вложения
-
- Отгрузка по менеджерам (детализация по дням).mrt
- (21.19 КБ) 189 скачиваний
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Cross-Tab. Highlighting. Expression. Не работает условие.
Здравствуйте,
1. У Вас не было задано свойство Tag у компонента CrossTab1_Sum1.
2. У Вас установлена старая версия продукта 2009.1.400. На последней версии эта проблема не наблюдает. Обновитесь пожалуйста до последней версии.
Мы немного изменили Ваш отчет. На последней версии он работает 100%.
Спасибо.
1. У Вас не было задано свойство Tag у компонента CrossTab1_Sum1.
2. У Вас установлена старая версия продукта 2009.1.400. На последней версии эта проблема не наблюдает. Обновитесь пожалуйста до последней версии.
Мы немного изменили Ваш отчет. На последней версии он работает 100%.
Спасибо.
- Вложения
-
- Change.mrt
- (22.95 КБ) 327 скачиваний
Cross-Tab. Highlighting. Expression. Не работает условие.
Всё заработало. Ура! :biggrin:
Огромное спасибо!
Огромное спасибо!