SetOrderBy
SetOrderBy
Builder 6 ODAC 9.2.5
Вот (для примера) простейший работающий запрос:
OraQuery1->SQL->Text="select 'eee', 'ddd', 'ccc', nvl((select 'bbb' from dual),0) kkk
from dual
order by nvl((select 'bbb' from dual),0) desc, 'eee' asc";
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->AddWhere("('ddd'<>'eee') OR ('ccc'<>'bbb')");
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->SetOrderBy(""); //Если это оставить – некорректно в ORDER BY, если убрать - некорректно в WHERE
OraQuery1->SetOrderBy("'ddd' asc");
ShowMessage(OraQuery1->SQL->Text); //НЕКОРРЕКТНЫЙ запрос
Как обойти такую ситуацию ?
P.S. На практике запрос намного сложнее.
Вот (для примера) простейший работающий запрос:
OraQuery1->SQL->Text="select 'eee', 'ddd', 'ccc', nvl((select 'bbb' from dual),0) kkk
from dual
order by nvl((select 'bbb' from dual),0) desc, 'eee' asc";
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->AddWhere("('ddd'<>'eee') OR ('ccc'<>'bbb')");
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->SetOrderBy(""); //Если это оставить – некорректно в ORDER BY, если убрать - некорректно в WHERE
OraQuery1->SetOrderBy("'ddd' asc");
ShowMessage(OraQuery1->SQL->Text); //НЕКОРРЕКТНЫЙ запрос
Как обойти такую ситуацию ?
P.S. На практике запрос намного сложнее.
- Вложения
-
- Убрана очистка Order by.JPG (13.24 КБ) 18006 просмотров
-
- Оставлена очистка Order by.JPG (14.03 КБ) 18006 просмотров
Re: SetOrderBy
Добрый день,
Спасибо за информацию, мы воспроизвели и исправили проблему. Это исправление войдет в следующий билд.
Спасибо за информацию, мы воспроизвели и исправили проблему. Это исправление войдет в следующий билд.
Re: SetOrderBy
Builder 6 ODAC 9.2.6
Почти живой запрос:
select * from dual;
AnsiString StrOrder = "UPPER( (select substr(Replace(SYS_CONNECT_BY_PATH((select TO0.NTO from TTO TO0 where RO0.fto=TO0.pto)||decode(RO0.NO,null,null,' '||RO0.NO),''),'',' '),2,221) as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) )";
OraQuery1->SetOrderBy(StrOrder + " ASC");
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->SetOrderBy(StrOrder + " DESC");
ShowMessage(OraQuery1->SQL->Text);
ORDER BY DESC: имеет остаточный кусок от ASC
select * from dual
ORDER BY UPPER( (select substr(Replace(SYS_CONNECT_BY_PATH((select TO0.NTO from TTO TO0 where RO0.fto=TO0.pto)||decode(RO0.NO,null,null,' '||RO0.NO),''),'',' '),2,221) as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) ) DESC as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) ) ASC
Почти живой запрос:
select * from dual;
AnsiString StrOrder = "UPPER( (select substr(Replace(SYS_CONNECT_BY_PATH((select TO0.NTO from TTO TO0 where RO0.fto=TO0.pto)||decode(RO0.NO,null,null,' '||RO0.NO),''),'',' '),2,221) as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) )";
OraQuery1->SetOrderBy(StrOrder + " ASC");
ShowMessage(OraQuery1->SQL->Text);
OraQuery1->SetOrderBy(StrOrder + " DESC");
ShowMessage(OraQuery1->SQL->Text);
ORDER BY DESC: имеет остаточный кусок от ASC
select * from dual
ORDER BY UPPER( (select substr(Replace(SYS_CONNECT_BY_PATH((select TO0.NTO from TTO TO0 where RO0.fto=TO0.pto)||decode(RO0.NO,null,null,' '||RO0.NO),''),'',' '),2,221) as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) ) DESC as nof from ro RO0 where (RO0.fro is null and level < 7) or level =7 start with RO0.pro = rt.fro connect by prior RO0.fro = RO0.pro) ) ASC
Re: SetOrderBy
Спасибо, мы исправили это поведение, и можем выслать Вам исправленый билд. Для этого Вышлите на alexp*devart*com Ваш лицензионный номер и e-mail, куда можно выслать исправленый билд.
Re: SetOrderBy
ODAC 9.2.7
OraQuery1->SQL->Text = L"select * from dual";
UnicodeString StrOrder =
"(select nvl(ch,fl) from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg)";
ShowMessage("OrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy(StrOrder + " ASC");
ShowMessage("GetOrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy("");
ShowMessage("ClearOrderBy:\n" + OraQuery1->SQL->Text);
ShowMessage("GetOrderByCls:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy(StrOrder + " DESC");
ShowMessage(OraQuery1->SQL->Text);
ShowMessage("GetOrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
ORDER BY DESC: имеет остаточный кусок от ASC
select * from dual ORDER BY (select nvl(ch,fl) from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg) DESC
from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg) ASC
P.S. Запрос из предыдущего сообщения тоже не работает.
OraQuery1->SQL->Text = L"select * from dual";
UnicodeString StrOrder =
"(select nvl(ch,fl) from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg)";
ShowMessage("OrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy(StrOrder + " ASC");
ShowMessage("GetOrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy("");
ShowMessage("ClearOrderBy:\n" + OraQuery1->SQL->Text);
ShowMessage("GetOrderByCls:\n'" + OraQuery1->GetOrderBy() + "'");
OraQuery1->SetOrderBy(StrOrder + " DESC");
ShowMessage(OraQuery1->SQL->Text);
ShowMessage("GetOrderBy:\n'" + OraQuery1->GetOrderBy() + "'");
ORDER BY DESC: имеет остаточный кусок от ASC
select * from dual ORDER BY (select nvl(ch,fl) from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg) DESC
from ele, ae ae1 where ele.pk=ae1.fk and ae1.fk_arg=arg.pk_arg) ASC
P.S. Запрос из предыдущего сообщения тоже не работает.
Re: SetOrderBy
Проблема исправлена, но в официальный билд это исправление не вошло, пожалуйста вышлите на alexp*devart*com Ваш лицензионный номер и e-mail, куда можно выслать билд включающий это исправление.
Re: SetOrderBy
Письмо с заголовком 'build 9.2.7 - SetOrderBy' на адрес alexp сбк devart point com выслано.
Re: SetOrderBy
Как скоро можно ожидать исправленный билд ?
Re: SetOrderBy
Я выслал Вам исправленные версии для С++ Builder 6? Delphi 2010, XE5
Re: SetOrderBy
Спасибо.
Исправленные версии для С++ Builder 6, Delphi 2010 - получили и попробовали.
Для XE5 - на наш почтовый сервер не поступала.
Надеюсь, данные исправения, будут в вашем следующем билде для всех и скоро
Исправленные версии для С++ Builder 6, Delphi 2010 - получили и попробовали.
Для XE5 - на наш почтовый сервер не поступала.
Надеюсь, данные исправения, будут в вашем следующем билде для всех и скоро
Re: SetOrderBy
Я отправлял Вам все версии включая версию для XE5. Возможно ваш почтовый сервер не пропускает большие вложения, размер инсталляции для XE5 - 30M.
P.S. Да эти исправления войдут в следующий билд
P.S. Да эти исправления войдут в следующий билд
Re: SetOrderBy
Чуть не по теме. ODAC 9.2.7
select * from dev_inf
order by
id_dev_inf asc, nvl((select name from FIO where dev_inf.id=FIO.id),dev_inf.name ) asc
GetOrderBy() возвращает: 'id_dev_inf asc, nvl((select name from FIO'
P.S.
А не могли бы вы выложить для XE5 куда либо на файлообмен и прислать ссылку?
select * from dev_inf
order by
id_dev_inf asc, nvl((select name from FIO where dev_inf.id=FIO.id),dev_inf.name ) asc
GetOrderBy() возвращает: 'id_dev_inf asc, nvl((select name from FIO'
P.S.
А не могли бы вы выложить для XE5 куда либо на файлообмен и прислать ссылку?
Re: SetOrderBy
Мы исправили метод GetOrderBy. Завтра я постараюсь выложить все исправленные версии на наш FTP сервер.
Re: SetOrderBy
На вашем FTP сервере ни каких новых папок не видел ?
Re: SetOrderBy
Alexandr можно ли надеятся на получение исправленных версий ?
Или у вас скоро выйдет очередной билд ?
Или у вас скоро выйдет очередной билд ?