Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.047 c
15-1164895933
salexn
2006-11-30 17:12
2006.12.24
Native Компоненты для работы с XML


15-1165178576
Real
2006-12-03 23:42
2006.12.24
Тюнеры от AverMedia - управление громкостью


15-1165003316
lookin
2006-12-01 23:01
2006.12.24
Об устройствах и об их устройстве...


15-1164991793
ReWD
2006-12-01 19:49
2006.12.24
Коммивояжер - минимальное оставное дерево


15-1165168740
Cerberus
2006-12-03 20:59
2006.12.24
Архиваторы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский