powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005, выражения и даты
12 сообщений из 12, страница 1 из 1
RS2005, выражения и даты
    #35498251
KingPeas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые
Покопался на форуме поискал ответ на свой вопрос, ничего вразумительного не попалось. Вопрос в следующем: в результирующем наборе данных есть поле с датой. Мне необходимо в колонке анализировать ее и отображать правильное значение (из бд все даты null приходят в виде 01.01.1900: особенности программы).
Во первых я никак не могу понять в каком формате мне нужно указывать дату в условии. Попытка указать 01/01/1900 приводит к ошибке, использование функции DATE недопустимо в условии. Подскажите что я делаю неправильно и как с этим можно бороться?
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35500042
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа случайно не Axapta ? $-)
Универсальный формат даты для MSSQL Server - "YYYYMMDD". Ну или воспользоваться ф-ей convert
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35512186
KingPeas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Она самая) любимая аксапта)
Вопрос все же остался открытым. Поможете коллега как написать expression чтобы отображать в колонке значение даты если оно не равно 01.01.1900. Я пробовал вот так, не получается
Код: plaintext
=IIF(Fields!DateNovelty.Value =  1900 / 01 / 01 , "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
В итоге получаю такую ошибку
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘DateNovelty’ contains an error: Operator '=' is not defined for type 'Date' and type 'Double'.
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35512238
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KingPeasОна самая) любимая аксапта)
Вопрос все же остался открытым. Поможете коллега как написать expression чтобы отображать в колонке значение даты если оно не равно 01.01.1900. Я пробовал вот так, не получается
Код: plaintext
=IIF(Fields!DateNovelty.Value =  1900 / 01 / 01 , "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
В итоге получаю такую ошибку
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘DateNovelty’ contains an error: Operator '=' is not defined for type 'Date' and type 'Double'.
Ещё бы! У тебя разделители воспринимаются как знаки деления.
При сравнении в приведённом тобой выражении используй строку (в кавычках!) с разделителями частей даты - точками "1900.01.01". Но это будет чувствительно к текущим региональным установкам.
Лучше пойти более универсальным и надёжным путём. Преобразуй дату в строку сравнивай строки. Можно всё сделать на стороне SQL-сервера или на стороне клиента (SSRS). Возможны и промежуточные варианты.

Вообще говоря, я бы рассмотрел конвертацию даты в строку и дальнейшее преобразование нулевой даты в пустую строку в вычисляемом поле SQL-запроса датасета.

Аналог функции Iif в T-SQL - функция CASE
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35514130
LevS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=IIF(Fields!DateNovelty.Value = CDate("19000101"), "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
---
This posting is provided "AS IS" with no warranties, and confers no rights.
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517100
KingPeas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
=IIF(Fields!DateNovelty.Value = CDate("19000101"), "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
ругается вот так
Код: plaintext
1.
2.
Build complete -- 0 errors, 0 warnings
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘DateNovelty’ contains an error: Conversion from string "19000101" to type 'Date' is not valid.
Preview complete -- 0 errors, 1 warnings
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517201
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KingPeas
Код: plaintext
=IIF(Fields!DateNovelty.Value = CDate("19000101"), "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
ругается вот так
Код: plaintext
1.
2.
Build complete -- 0 errors, 0 warnings
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘DateNovelty’ contains an error: Conversion from string "19000101" to type 'Date' is not valid.
Preview complete -- 0 errors, 1 warnings

Я же говорил, конвертировать дату в строку и сравнивать строки! :E Мне почему-то кажется что Вы придуриваетесь ;)
Хотя бы вот так:
Код: plaintext
=IIF(Format(Fields!DateNovelty.Value, "dd.MM.yyyy") = "01.01.1900", "", Format(Fields!DateNovelty.Value, "dd.MM.yyyy"))
Но тут, как видим, вычисления неоптимальны. Форматирование происходит дважды. Избежать этого можно разными способами. Подумайте.
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517214
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, необязательно преобразовывать дату именно в строку и сравнивать строки. Можно, например, конвертировать/сравнивать типы Int(32/64) или числа с плавающей точкой.
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517238
KingPeas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GholaКстати, необязательно преобразовывать дату именно в строку и сравнивать строки. Можно, например, конвертировать/сравнивать типы Int(32/64) или числа с плавающей точкой.

опять же
Код: plaintext
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘textbox35’ contains an error: Conversion from type 'Date' to type 'Double' is not valid.
такой же эффект попробовать преобразовать дату в Int
делаю это так
Код: plaintext
=CDbl(Fields!DateNovelty.Value)

Выходит остается самое оптимальное в самой процедуре на SQL формируещей выборку данных сразу убивать дату для 01.01.1900.
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517259
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что добиться преобразования даты в число средствами SSRS безусловно можно. Но, по-моему, оптимальный способ - это действительно T-SQL
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517295
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vbalr/html/d9edf5b0-e85e-438b-a1cf-1f321e7c831b.htm - "Visual Basic Language Reference
Date Data Type (Visual Basic)"

ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref7/html/M_System_DateTime_ToOADate.htm - "DateTime.ToOADate Method"
Код: plaintext
1.
2.
3.
4.
Visual Basic (Usage) 
Dim instance As DateTime
Dim returnValue As Double

returnValue = instance.ToOADate

В Вашем случае:
Код: plaintext
=Fields!DateNovelty.Value.ToOADate
...
Рейтинг: 0 / 0
RS2005, выражения и даты
    #35517316
Ghola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Когда ничего не помогает, прочитайте же наконец инструкцию!"(с)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005, выражения и даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]