powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX достал
17 сообщений из 17, страница 1 из 1
APEX достал
    #37507177
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею дроп даун лист и вот такой запрос

Код: plaintext
1.
2.
3.
4.
5.
select TO_CHAR(month_t,'yyyy')||' - '||rpad(month_name, 9 )||' - '||lpad(LTRIM(TO_CHAR(amount,'999,999,999.99')), 11 ) d,
to_char(rownum) r 
from v_salary_months 
where month_t>=trunc(add_months(TO_DATE(:P3_DATE_BEGIN, 'DD-MM-YYYY'),- 12 ),'mm') 
and month_t<=last_day(add_months(TO_DATE(:P3_DATE_BEGIN),- 1 )) 
and client_cod=:P3_CLIENT_COD order by month_t desc

При загрузке лист остаётся пустым. Но если я удалю какой либо where то лист заполняется. Судя по заполнению мой запрос не понимает (точнее не правильно понимает) дату которую возвращает Date Picker. Я испробовал все возможные форматы дат, рылся в настройках проекта и т.д. но всё безрезультатно.

Скажите пожалуйста что APEX от меня хочет?
...
Рейтинг: 0 / 0
APEX достал
    #37507294
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth,

Код: plaintext
TO_DATE(:P3_DATE_BEGIN)
Говорилось уже не раз, дату следует преобразовывать явно. т.е. указывать явно тот формат, в котором находится строка.
И еще, не нравится ваш to_char(rownum), вкупе с order by. Может выдать разные результаты при повторных выполнениях.
...
Рейтинг: 0 / 0
APEX достал
    #37507561
Хтото
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторИ еще, не нравится ваш to_char(rownum), вкупе с order by
поддерживаю, лучше пользовать аналитические функции:

Код: plaintext
1.
2.
3.
4.
5.
select TO_CHAR(month_t,'yyyy')||' - '||rpad(month_name, 9 )||' - '||lpad(LTRIM(TO_CHAR(amount,'999,999,999.99')), 11 ) d,
row_number() over (order by month_t desc) r 
from v_salary_months 
where month_t>=trunc(add_months(TO_DATE(:P3_DATE_BEGIN, 'DD-MM-YYYY'),- 12 ),'mm') 
and month_t<=last_day(add_months(TO_DATE(:P3_DATE_BEGIN),- 1 )) 
and client_cod=:P3_CLIENT_COD
...
Рейтинг: 0 / 0
APEX достал
    #37507924
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevDaedroth,

Код: plaintext
TO_DATE(:P3_DATE_BEGIN)
Говорилось уже не раз, дату следует преобразовывать явно. т.е. указывать явно тот формат, в котором находится строка.
И еще, не нравится ваш to_char(rownum), вкупе с order by. Может выдать разные результаты при повторных выполнениях.

Как я уже писал, я испробовал все варианты дат. То есть

Код: plaintext
1.
where month_t>=trunc(add_months(TO_DATE(:P3_DATE_BEGIN, 'DD-MM-YYYY'),- 12 ),'mm') 
and month_t<=last_day(add_months(TO_DATE(:P3_DATE_BEGIN, 'DD-MM-YYYY'),- 1 )) 

так тоже делал.
...
Рейтинг: 0 / 0
APEX достал
    #37507990
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth,

1. Не понимаю, какие еще варианты дат? Oo
Всё что нужно посмотреть в session state of dev bar в каком формате оно хранится или даже чисто визуально, если оно не hidden, и указать такое же. А может быть у вас там вообще null ?

2. Действительно ли вы привели исходный запрос? Например, нет ли у вас там комментариев?

3. Как насчет типа столбца v_salary_months.month_t?

Всё что нужно, для решения проблемы это уметь отлаживать.
И первым делом, стоит пытаться воспроизвести проблему в каком-нибудь другом клиенте, да хоть том же sql plus.
...
Рейтинг: 0 / 0
APEX достал
    #37507997
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev,

Сам запрос работает, я его в Toad проганяю и получаю то что нужно.

У Date Picker формат 'DD-MM-YYYY'. Столбец month_t имеет тип Date.
Если я пишу

Код: plaintext
1.
where month_t>=trunc(add_months(TO_DATE(sysdate),- 12 ),'mm') 
and month_t<=last_day(add_months(TO_DATE(sysdate),- 1 )) 

то всё работает правильно. Но мне нужно что бы пользователь мог выбирать начальную дату.
...
Рейтинг: 0 / 0
APEX достал
    #37508032
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
TO_DATE(sysdate)
мой мозг такого не переваривает
DaedrothУ Date Picker формат 'DD-MM-YYYY'. Столбец month_t имеет тип Date.
Не о чем не говорит, это не помешает, если руки кривые, установить дату в каком-нибудь другом формате,
например, 'MM-DD-YYYY', это всего лишь поле varchar2, которое обладает некоторыми специальными возможностями validations, которые могут и не срабатывать.
ну и наконец, как насчет элементарнейшей отладки?
Код: plaintext
1.
2.
union all 
select '1', '1' from dual 
where :P3_DATE_BEGIN is null
добавлять пробовали?
...
Рейтинг: 0 / 0
APEX достал
    #37508043
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev,

SvDevмой мозг такого не переваривает
Зато APEX переваривает

SvDevдобавлять пробовали?

Что и куда?

DaedrothУ Date Picker формат 'DD-MM-YYYY'.
Это не в Date Picker прописан, а система у меня такая
...
Рейтинг: 0 / 0
APEX достал
    #37508067
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaedrothЧто и куда?
Неужели сами не догадаетесь?

DaedrothЭто не в Date Picker прописан, а система у меня такая
Не важно какая у вас там система, я пытаюсь объяснить, что смотреть формат нужно по фактическому содержимому в строке, а не по параметрам где-то там.
...
Рейтинг: 0 / 0
APEX достал
    #37508092
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevDaedrothЧто и куда?
Неужели сами не догадаетесь?

Нет. Ибо я не знаю о чем идёт речь.

SvDevНе важно какая у вас там система, я пытаюсь объяснить, что смотреть формат нужно по фактическому содержимому в строке, а не по параметрам где-то там.

И фактическое содержание, и система, и session state все показывают 'DD-MM-YYYY' (for example: 02-11-2011).
...
Рейтинг: 0 / 0
APEX достал
    #37508110
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select TO_CHAR(month_t,'yyyy')||' - '||rpad(month_name, 9 )||' - '||lpad(LTRIM(TO_CHAR(amount,'999,999,999.99')), 11 ) d,
to_char(rownum) r 
from v_salary_months 
where month_t>=trunc(add_months(TO_DATE(:P3_DATE_BEGIN, 'DD-MM-YYYY'),- 12 ),'mm') 
and month_t<=last_day(add_months(TO_DATE(:P3_DATE_BEGIN),- 1 )) 
and client_cod=:P3_CLIENT_COD 
union all 
select '1', '1' from dual 
where :P3_DATE_BEGIN is null
Раньше выводило пусто, а теперь? Непонятно?
...
Рейтинг: 0 / 0
APEX достал
    #37508128
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev]Раньше выводило пусто, а теперь? Непонятно?

Теперь выводит, но только в обратном порядке. То есть этим я получил, что моё поле даты пустое????
...
Рейтинг: 0 / 0
APEX достал
    #37508140
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daedroth,

В каком еще обратном порядке?
Вариантов 2, либо он вывел одну запись '1'
либо он вывел остальное, но без '1'?
...
Рейтинг: 0 / 0
APEX достал
    #37508156
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev,

Он выводит не все месяцы, проглатывает последний месяц, и всегда в конце выводит 4. Если я опять нажимаю на кнопку то 4 пропадает и остаётся три месяца вместо четырёх.
...
Рейтинг: 0 / 0
APEX достал
    #37508160
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял ваш "обратный порядок", то значит он один всё такие не вывел,
а значит ед. что поменялось - убрали сортировку,
а значит
Код: plaintext
order by month_t desc
там было где-то непонятное ограничение на аргументы в order by, возможно связано с этим
пробуйте
Код: plaintext
order by  1  desc
...
Рейтинг: 0 / 0
APEX достал
    #37508188
Фотография Daedroth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev,

Большое при большое СПАСИБИЩЕ!!!
...
Рейтинг: 0 / 0
APEX достал
    #37508205
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если помогло, значит ошибка в том, что он дал вам этот query сохранить, хотя обычно срабатывает системный validation.
А потом валится где-то в дальнейшем.

order by 1 не эквивалент order by month_t, он сортирует первый аргумент из select, который у вас строка,
в качестве решения, можно использовать order by в подзапросе, или over (order by)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX достал
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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