Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

SQL-редактор   Найти похожие ветки 

 
Kostafey ©   (2006-12-02 20:02) [0]

Уважаемые мастера!
Вот решил я перед выполнением SQL-запроса давать возможность его просмотреть (подредактировать).
Скачал TAdvMemo для подсветки синтаксиса. Правда она оказалась платной. Приложение перед запуском сообщает, что в нем, мол, используются trial - компоненты. Это можно убрать если перенести форму с этими компонентами в dll и вызывать ее из приложения.

Вопрос- то в чем. Текст SQL-запроса - суть WideString (чтобы потом адресовать ее к DataSet.CommandText).
А как ее корректно внести в TAdvMemo, чтобы запрос выводился многострочно ?
AdvMemo1.Lines.Add(ss); - будет 1 строка.
Я пытался в сам запрос перенос строк внести:

ss:=
"Declare @DateFrom datetime "+#13#10+
"Set @DateFrom = :DateFrom "+#13#10+
...

Тоже бестолку #13#10 превращаются при выводе в квадраты, по прежнему в 1 строку.

Конечно, можно посимвольно прогонять строку и потом ее делить, но это наверное слишком некрасиво.
Если конечно это не единственный вариант ?


 
Kostafey ©   (2006-12-02 22:02) [1]

Ладно, сделал по-старинке через copy()


 
Kostafey ©   (2006-12-02 22:51) [2]

> Ладно, сделал по-старинке через copy()

Нет, беру слова обратно: решение явно слишком кривое.


 
Sam Stone ©   (2006-12-02 22:53) [3]

AdvMEmo1.Lines.text:=ss;
Если не поможет - удали все #13#10 и не заморачивайся.


 
MsGuns ©   (2006-12-02 22:57) [4]

ИМХО, надо разделить проверку синтаксиса от отображения запроса. Последнее делается через банальный TMemo без всяких "левых" компонент.

Проверку синтаксиса вернее всего делать в клиенте того сервера, с которым собираешься работать. Например, для акцеса составлять и выполнять запросы надо в самом акцесе, готовый же и проверенный сиквель просто копировать в код.


 
Kostafey ©   (2006-12-02 23:13) [5]

> [3] Sam Stone ©   (02.12.06 22:53)
> AdvMEmo1.Lines.text:=ss;
> Если не поможет - удали все #13#10 и не заморачивайся.


А вообще, помогло. Спасибо. Пожалуй так и сделаю.
Это ж просто глупость, даже притормаживает немного:

 j:=1;
 for i:=1 to Length(ss) do
 begin
   if ss[i]=#13#10 then
   begin
     sn:=Copy(ss,j,i-1-j);
     j:=i+1;
     AdvMemo1.Lines.Add(sn);
   end;



> [4] MsGuns ©   (02.12.06 22:57)


> ИМХО, надо разделить проверку синтаксиса от отображения
> запроса. Последнее делается через банальный TMemo без всяких
> "левых" компонент.

Вообще, да. Но я подумал оставить это в конечной версии (а не только для Debug-целей)
Просто хотел 2 зайцев убить.


> Проверку синтаксиса вернее всего делать в клиенте того сервера,
> с которым собираешься работать. Например, для акцеса составлять
> и выполнять запросы надо в самом акцесе, готовый же и проверенный
> сиквель просто копировать в код.

Опять согласен. Но. SQL я сначала пишу в SQL Server Management Studio (врядли ползователь в него полезет).
А мне же нужно видеть что стало с SQL после того как в него вставлены некоторые переменные уже в Delphi.


 
Sam Stone ©   (2006-12-02 23:55) [6]

> j:=1;
> for i:=1 to Length(ss) do
> begin
>   if ss[i]=#13#10 then
>   begin
>     sn:=Copy(ss,j,i-1-j);
>     j:=i+1;
>     AdvMemo1.Lines.Add(sn);
>   end;

while pos(#13#10,ss)>0 do delete(ss,pos(#13#10),2);
AdvMemo.Lines.Text:=ss;


 
MsGuns ©   (2006-12-03 03:31) [7]

>Kostafey ©   (02.12.06 23:13) [5]
>А мне же нужно видеть что стало с SQL после того как в него вставлены некоторые переменные уже в Delphi.

Если запросы пераметрические, то текст запроса не даст ничего, если динамические, то вывести сиквель просто и удобно, воспользовавшись методом SaveToFile


 
MsGuns ©   (2006-12-03 03:32) [8]

>Sam Stone ©

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


 
Anatoly Podgoretsky ©   (2006-12-03 10:52) [9]

> Kostafey  (02.12.2006 23:13:05)  [5]

> А мне же нужно видеть что стало с SQL после того как в него вставлены некоторые переменные уже в Delphi.

Что за переменные в него вставлены?
Совершенно непонятно, что это такое.


 
Kostafey ©   (2006-12-04 09:37) [10]

> [9] Anatoly Podgoretsky ©   (03.12.06 10:52)


> Что за переменные в него вставлены?
> Совершенно непонятно, что это такое.



"    LEFT JOIN ZVK1ARX arx                                                        "+
"      ON ((arx.N_ZVK=z.nzvk) and                                                "+
"           (arx.DATE_ZVK between @DateFrom and @DateTo) and                      "+
"           (arx.PCH_COD="+cc_PCH_COD+")) "+

@DateFrom, @DateTo заданы как параметры
cc_PCH_COD переменная


 
ЮЮ ©   (2006-12-04 10:12) [11]


> cc_PCH_COD переменная

из программы? Ну-ну! :)


 
evvcom ©   (2006-12-04 10:19) [12]

И нафига столько хвостовых пробелов??? А... Это чтоб анализатору жизнь медом не казалась! Понял, теперь :D)
Сделай статический запрос с параметрами и не мудри. Просто, надежно, красиво.


 
Kostafey ©   (2006-12-04 15:34) [13]

> [11] ЮЮ ©   (04.12.06 10:12)
> > cc_PCH_COD переменная
> из программы? Ну-ну! :)

Хм. Не понимаю что в этом смешного. Нет, вы скажите, вместе посмеемся !
Вожможно это не корректно и все переменные должны передаваться в запрос через параметры ?
Если так, то на сколько это необходимо ?


> И нафига столько хвостовых пробелов??? А... Это чтоб анализатору
> жизнь медом не казалась! Понял, теперь :D)

Хм. Я об этом что-то не подумал. На результирующий код это не повлияет ?


> Сделай статический запрос с параметрами и не мудри. Просто,
> надежно, красиво.

Да, но сам текст запроса сначала передается в переменную, и лишь в конце присваивается свойству DataSet.CommandText.


 
Anatoly Podgoretsky ©   (2006-12-04 16:45) [14]

> Kostafey  (04.12.2006 15:34:13)  [13]

> но сам текст запроса сначала передается в переменную, и лишь в конце присваивается свойству DataSet.CommandText.

и что при присваивании код таинственным образом меняется?


 
Kostafey ©   (2006-12-04 17:37) [15]

> [14] Anatoly Podgoretsky ©   (04.12.06 16:45)

Нет, но присваивание происходит в отдельной процедуре, где и задаются параметры.
ПРИ ЭТОМ названия параметров всегда одинаковы, а вот другие динамические элементы запроса могут меняться в зависимости от вида запроса.



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.065 c
2-1165082065
okey
2006-12-02 20:54
2006.12.24
Помогите пожалуйста очень нужно!


4-1155593723
Sergey_FV
2006-08-15 02:15
2006.12.24
Quick Launch под NT


6-1153985208
ZubrZubr
2006-07-27 11:26
2006.12.24
Помогите с браузером


1-1163273917
PHPDeveloper
2006-11-11 22:38
2006.12.24
работа с анимированными изображениями


2-1165250749
novex
2006-12-04 19:45
2006.12.24
Вычисления А в степени Х