SetOrderBy

Обсуждение возникших проблем, предложений и ошибок ODAC компонентов
petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

SetOrderBy

Сообщение petrel » Чт 13 фев 2014 10:50

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. На практике запрос намного сложнее.
Вложения
Убрана очистка Order by.JPG
Убрана очистка Order by.JPG (13.24 КБ) 18006 просмотров
Оставлена очистка Order by.JPG
Оставлена очистка Order by.JPG (14.03 КБ) 18006 просмотров

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Чт 13 фев 2014 13:00

Добрый день,

Спасибо за информацию, мы воспроизвели и исправили проблему. Это исправление войдет в следующий билд.

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Пт 21 фев 2014 08:01

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

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Пт 21 фев 2014 09:37

Спасибо, мы исправили это поведение, и можем выслать Вам исправленый билд. Для этого Вышлите на alexp*devart*com Ваш лицензионный номер и e-mail, куда можно выслать исправленый билд.

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Ср 26 фев 2014 06:04

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. Запрос из предыдущего сообщения тоже не работает.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Ср 26 фев 2014 09:27

Проблема исправлена, но в официальный билд это исправление не вошло, пожалуйста вышлите на alexp*devart*com Ваш лицензионный номер и e-mail, куда можно выслать билд включающий это исправление.

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Ср 26 фев 2014 10:56

Письмо с заголовком 'build 9.2.7 - SetOrderBy' на адрес alexp сбк devart point com выслано.

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Пт 28 фев 2014 05:08

Как скоро можно ожидать исправленный билд ?

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Пн 03 мар 2014 09:43

Я выслал Вам исправленные версии для С++ Builder 6? Delphi 2010, XE5

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Вт 04 мар 2014 05:28

Спасибо.

Исправленные версии для С++ Builder 6, Delphi 2010 - получили и попробовали.
Для XE5 - на наш почтовый сервер не поступала.

Надеюсь, данные исправения, будут в вашем следующем билде для всех и скоро :)

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Вт 04 мар 2014 09:18

Я отправлял Вам все версии включая версию для XE5. Возможно ваш почтовый сервер не пропускает большие вложения, размер инсталляции для XE5 - 30M.

P.S. Да эти исправления войдут в следующий билд

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Ср 12 мар 2014 11:23

Чуть не по теме. 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 куда либо на файлообмен и прислать ссылку?

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: SetOrderBy

Сообщение Alexp » Ср 12 мар 2014 16:22

Мы исправили метод GetOrderBy. Завтра я постараюсь выложить все исправленные версии на наш FTP сервер.

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Пн 17 мар 2014 05:11

На вашем FTP сервере ни каких новых папок не видел ?

petrel
Сообщения: 48
Зарегистрирован: Вт 30 окт 2012 11:43

Re: SetOrderBy

Сообщение petrel » Ср 26 мар 2014 08:42

Alexandr можно ли надеятся на получение исправленных версий ?
Или у вас скоро выйдет очередной билд ?

Закрыто