Страница 2 из 3

Добавление переменной типа DateTime

Добавлено: 08 сен 2006, 09:46
Edward
BeraleX писал(а):Неужели ничего нельзя сделать?:cry:
Извините, пропустили Ваш последний пост.
Для передачи даты предпочтительнее использование параметров, а не выражений. Пример использования параметров вы можете посмотреть в приложении Demo - SQL - SQLParameters, а также http://www.stimulsoft.com/livedemos/Rep ... eters.html
http://www.stimulsoft.com/livedemos/Rep ... ers_2.html
Если Вы все же хотите из переменной DateTime получить строку в формате день.месяц.год, то используйте в SQL-запросе выражение, например:
'{LDate.ToString("dd.MM.yyyy")}'
Но это создаёт дополнительные проблемы.
Спасибо.

Добавление переменной типа DateTime

Добавлено: 08 сен 2006, 12:06
BeraleX
Как я уже писал выше, добавление переменной вызвано тем, что она напрямую отображается на странице отчета, а с некоторыми из них производятся арифметические операции. Поэтому использование параметров все равно приводит к дублированию информации.
Использовать дополнительные формы для ввода параметров (в данном случае дат как в указанных вами выше примере 1) не имеет смысла, так как все даты рассчитываются программно по выборкам, а не выбираются вручную. А добавление пустых параметров в отчет и последующее присвоение им значений перед показом страницы отчета это то же самое дублирование. Поэтому пытаюсь преобразовать имеющиеся зарегистрированные переменные:
Пробую допустим такие строки в запросе источника данных:
select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCN},'{FDate.ToString("dd.MM.yyyy")}','{LDate.ToString("dd.MM.yyyy")}',{TreeLevel}))
или так
select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCM},{FDate.ToString("dd.MM.yyyy")},{LDate.ToString("dd.MM.yyyy")},{TreeLevel})).
В результате при попытке просмотра данных получаем значения параметров, передаваемых в функцию:

IDG = 1
IDCM = 1
IDSUB = 1
IDCN = 1
{FDate.ToString("dd.MM.yyyy")} - пусто
{LDate.ToString("dd.MM.yyyy")} - пусто .....

То есть даты в процедуру попадают нулловые ( я так полагаю пытается искать значения переменных FDate.ToString("dd.MM.yyyy") и ....).
Если можно, приведите простейший пример работающего кода, решающего эту проблему ( в крайнем случае с параметрами, но уж очень нежелательно).
Буду очень благодарен, ведь перепробовал уже множество вариантов, а результата пока никакого не добился:tire: .


Добавление переменной типа DateTime

Добавлено: 08 сен 2006, 13:47
Edward
BeraleX писал(а):Как я уже писал выше, добавление переменной вызвано тем, что она напрямую отображается на странице отчета, а с некоторыми из них производятся арифметические операции. Поэтому использование параметров все равно приводит к дублированию информации.
Использовать дополнительные формы для ввода параметров (в данном случае дат как в указанных вами выше примере 1) не имеет смысла, так как все даты рассчитываются программно по выборкам, а не выбираются вручную. А добавление пустых параметров в отчет и последующее присвоение им значений перед показом страницы отчета это то же самое дублирование. Поэтому пытаюсь преобразовать имеющиеся зарегистрированные переменные:
Пробую допустим такие строки в запросе источника данных:
select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCN},'{FDate.ToString("dd.MM.yyyy")}','{LDate.ToString("dd.MM.yyyy")}',{TreeLevel}))
или так
select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCM},{FDate.ToString("dd.MM.yyyy")},{LDate.ToString("dd.MM.yyyy")},{TreeLevel})).
В результате при попытке просмотра данных получаем значения параметров, передаваемых в функцию:

IDG = 1
IDCM = 1
IDSUB = 1
IDCN = 1
{FDate.ToString("dd.MM.yyyy")} - пусто
{LDate.ToString("dd.MM.yyyy")} - пусто .....

То есть даты в процедуру попадают нулловые ( я так полагаю пытается искать значения переменных FDate.ToString("dd.MM.yyyy") и ....).
Если можно, приведите простейший пример работающего кода, решающего эту проблему ( в крайнем случае с параметрами, но уж очень нежелательно).
Буду очень благодарен, ведь перепробовал уже множество вариантов, а результата пока никакого не добился:tire: .
Значение параметров можно инициализировать:
1. Через свойство Expression у параметров в Дизайнере:
http://forumru.stimulsoft.com/upload/Va ... ssions.png
2. В коде отчета

Код: Выделить всё

Employee_Sales_by_Country.Parameters["@DateBeginning"].ParameterValue = DateTime.Parse("01.01.2007");
Проверьте, не установлено ли свойство Read Only в True у переменных FDate и LDate.
Спасибо.

Добавление переменной типа DateTime

Добавлено: 11 сен 2006, 06:55
BeraleX
Пойдем дальше, о чем очень сильно сожалею :cry: .
Пробовал создать параметры на основе переменных. Создал параметр @FDATE, один в один как показано выше. Вставил в запрос. Получилось для начала так:

Код: Выделить всё

select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCM}, @FDATE,'01.10.2006',{TreeLevel}))
При попытке просмотреть результат запроса тут же в редакторе источника данных получаю сообщение об ошибке - ORA-00936: missing expression (используется Oracle XE). Причем в диалоге ввода параметров почему то вместо значения моей переменной fDate выводится текущая дата.

Далее меняю строку запроса на такую:

Код: Выделить всё

select * from Table (GET_JOIN_DATA_AKT({IDG},{IDCM},{IDSUB},{IDCM}, '01.08.2006','01.10.2006',{TreeLevel}))
Все вроде бы нормально, но почему то в итоге хранимая процедура ничего не возвращает, а должна!

Смотрю далее, изменяю хранимую процедуру: добавляю выходную переменную строкового типа, которая будет возвращать значение одной из дат, передаваемых в процедуру. Получаю следующий результат(синул бы картинку, да не знаю как): значение этой даты - 0001-08-20 06:00:00 (налицо неправильное преобразование даты, ). Причем запрос выше в консоли выполняется без проблем, выводя вполне нормальные результаты. Файл отчета высылать, имеет смысл? Возможно решить эту проблему? Может я что то не так делаю?

P.S. Все переменные регистрирую с возможностью их изменения (записи/чтения)

Добавление переменной типа DateTime

Добавлено: 11 сен 2006, 09:56
Edward
Пожалуйста пришлите отчет и код, который Вы используете для инициализации отчета на Изображение.
Спасибо.

Добавление переменной типа DateTime

Добавлено: 12 сен 2006, 07:34
BeraleX
Хотелось бы узнать хотя бы предварительные результаты.?:hugging:

Добавление переменной типа DateTime

Добавлено: 12 сен 2006, 09:10
Edward
BeraleX писал(а):Хотелось бы узнать хотя бы предварительные результаты.?:hugging:
К сожалению не удалось смоделировать ошибку со значением даты - 0001-08-20 06:00:00 . Продолжаем тестирование Вашего отчета.

Добавление переменной типа DateTime

Добавлено: 12 сен 2006, 09:24
BeraleX
Возможно, конечно, что это косяк Oracle XE - но уж очень маловероятно, тем более что с командной строки запрос работает на ура, в сторке тоже проблем не было. Пробовал пустую сторку, только передавал в нее из отчета переменную даты и читал выходную.

Добавление переменной типа DateTime

Добавлено: 12 сен 2006, 09:52
Edward
Есть ли у вас пример отчета (без Oracle) из которого видно, что с передачей даты что-то не то?
Спаcибо.

Добавление переменной типа DateTime

Добавлено: 12 сен 2006, 10:15
BeraleX
К сожалению нет. Я тестирую ваш компонент в связи с переходом на программирование под .NET в VisualStudio и попутным отказом от использования InterBase как недостаточно надежной системы (условие выбора СУБД диктуется клиентом, и ничего с этим не поделаешь, это должна быть именно Oracle. На сегодняшний день версия XE единственная бесплатная). Я думаю, многие в скором будущем перейдут именно на эту версию, так что этот вопрос к сожалнию может возникнуть не только у меня. В целом компонент нас полностью устраивает, но... С передачей дат что-то не так точно, правда возможно не в самом компоненте.
Для информации: пробовал сторки, которые возвращают переданную дату с форматированием и без, строки из этой даты с форматированием и без - везде такая ситуация, почемуто меняются местами год, месяц и день(возможно при передаче в процедуру происходит какое то неявное форматирование?).