Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли вставлять комментарии в текст SQL-запроса... [D5]


KSergey ©   (2003-05-27 15:27:00) 

...в компоненты TQuery (или TADOQuary)? Если можно, то какими символами их выделить?


sniknik   (2003-05-29 11:14:00) [1]

KSergey © (29.05.03 09:43)
> По поводу ParamCheck тоже возьму на заметку (чтобы вам не обидно было ;).
мне не обидно, мне пофигу. когда нибудь да поймеш разницу. (может быть)

> Сначала:
...
> а потом:
...

это не противоречие, одно дело сам запрос и другое кто и как туда параметры вставляет. если не дельфи а ты сам(или какой добровольный помошник) также этот запрос исковеркаеш(под видом вставки параметров) то он тоже работать не будет.

> Ну да ладно, мысль я понял, теперь уже просто к словам придираюсь
вот именно.

Suntechnic © (29.05.03 07:01)
так и есть. работает.

BoxTer © (29.05.03 08:04)
нет. дельфи синтаксис запроса не разбирает. попробуй внести при включенном ParamCheck
SELECT TOP 2 *
FROM tbBuilds
-- /*WHERE Num = :Num*/
он(дельфи) тебе сделает параметр с именем Num*/.


KSergey   (2003-05-29 09:43:00) [2]

Не в смысле спора, но, согласитесь, вы сами себе противоречите, и, надеюсь, со мной в этом согласитесь ;)

Сначала:

> sniknik © (29.05.03 00:09)
> именно, дельфи ни причем, комментарии понимает MSSQL, а
> дельфи нет и куда вы параметр вставите ему пофигу (синтаксис
> запроса дельфи не понимает).

а потом:

> комментариях принципиально то отключите PapamCheck а параметры
> создавайте сами без участия дельфей, и все будет как вам
> хочется.

Всетаки дельфи при чем, так ведь? ;)

Ну да ладно, мысль я понял, теперь уже просто к словам придираюсь.

> Suntechnic © (29.05.03 07:01)
> BoxTer © (29.05.03 08:04)

Эх, жаль сейчас уже лень пробовать. Но на заметку возьму.

> sniknik © (29.05.03 00:09)

По поводу ParamCheck тоже возьму на заметку (чтобы вам не обидно было ;).


BoxTer   (2003-05-29 08:04:00) [3]

--усе после 2х минусов игнорируется, в т.ч. и дельфами...


Suntechnic   (2003-05-29 07:01:00) [4]

По-моему вот так должно сработать.

SELECT TOP 2 *
FROM tbBuilds
/*WHERE Num = ::Num*/


Проверять облом, но мне кажется я когда-то давно на это наталкивался и double ":" интерпретируется как одинарный (что вообщем-то есть негласным правилом для любых спец. символов).


sniknik   (2003-05-29 00:09:00) [5]

KSergey © (28.05.03 09:10)
> Вообще-то Вы напраcно кричите(!?????? я даже не шопотом) по поводу "Delphi ни при чем". Ведь распарcивание SQL-запроса на предмет нахождения параметров (того, что начинается с символа ":") делает именно дельфи, SQL-сервер тут ни при чем.

именно, дельфи ни причем, комментарии понимает MSSQL, а дельфи нет и куда вы параметр вставите ему пофигу (синтаксис запроса дельфи не понимает).

Silver_ © (28.05.03 09:52)
> А коментарий в самый раз помог бы. НО НЕ СУДЬБА
как же? работает но не судьба? всего то нужно 2 правила соблюдать, не вставлять : в текст комментария, и вставлять пробелы между комментарием и значимым запросом. но извините письма вы как пишете без пробелов? понять то можно, но не обязаны, т.е. захотят поймут а могут такое письмо сразу в мусорку...
и насчет ":", ну если вам использование этого символа в комментариях принципиально то отключите PapamCheck а параметры создавайте сами без участия дельфей, и все будет как вам хочется.

KSergey © (28.05.03 10:19)
> Дельфи-то параметр сделает, но она еще и пытается его применить - а не получается. Отсюда другие ошибки лезут.
чуть выше. отключи и делай их сам.


KSergey   (2003-05-28 16:32:00) [6]

> AlexSerp © (28.05.03 11:41)

Ну-ну ;)
Вообще-то доказывать необходимость комментариев я здесь не собираюсь. ;)


AlexSerp   (2003-05-28 11:41:00) [7]

Сергей Чурсин, я не спорю.
В юнитах, хранимых прцедурах - да.
В запросах - немного сомневаюсь.
Обычно в нем все видно. Базу-то знать надо.


Сергей Чурсин   (2003-05-28 11:35:00) [8]

"На комментариях все держится."

Ну фигли...

Query1.Sql:="SELECT * FROM T WHERE Field=:Param1"; // а тут комментарий


AlexSerp   (2003-05-28 10:34:00) [9]

KSergey, я бы в таком случае хранил SQL-текст в unit.pas как комментарий программы.


KSergey   (2003-05-28 10:19:00) [10]

> Ihor Osov"yak © (28.05.03 10:01)

За точное описание что же дельфи считает параметром - спасибо. Подозревал, но точно не знал.
Дельфи-то параметр сделает, но она еще и пытается его применить - а не получается. Отсюда другие ошибки лезут.

> AlexSerp © (28.05.03 09:21)
> KSergey, а зачем тебе комментарии?

Вообще-то не совсем понимаю. На комментариях все держится. Иначе через месяц-два фиг бы я вспомнил чего тут такого наворотил...

Ладно, тема закрыта, я понял

Спасибо.


Ihor Osov'yak   (2003-05-28 10:01:00) [11]

>SELECT TOP 2 *
FROM tbBuilds
/*WHERE Num = :Num*/


Сделай пробел между :Num и */

Делфи конечно же будет заполнять параметр :Num - нужно предоставить ему такую возможность :-), но єто уже будет часть комментария с точки зрения сервера..

... Как имя параметра делфи расценивает то, что идет после : и до первого пробела. Учитывайте это обстоятельство - и не будет проблем..


Silver_   (2003-05-28 09:52:00) [12]


> AlexSerp © (28.05.03 09:21)
> KSergey, а зачем тебе комментарии?


Я его понимаю. Сделал я один сложный запрос, а тама гдето неточность вкралась. Смотрел и так и эдак не смог найть. Чего делать - разбить запрос на поменьше и искать в отдельных кусках. НО КАК. Брать весь текст писать куда-то, по кусочку тащить проверять, и так пока..., или в проге написать и каждый раз ждать загрузки проги чтоб увидеть что опять ложанулся. А коментарий в самый раз помог бы. НО НЕ СУДЬБА.

ЗЫ. из записок... :)


AlexSerp   (2003-05-28 09:21:00) [13]

KSergey, а зачем тебе комментарии?
В ИнтерБасе комментарии так же пишутся,
но Дельфя не пропускает.


KSergey   (2003-05-28 09:10:00) [14]

> sniknik © (28.05.03 08:17)

Ok, не указал сразу MS SQL.

Вообще-то Вы напраcно кричите по поводу "Delphi ни при чем". Ведь распарcивание SQL-запроса на предмет нахождения параметров (того, что начинается с символа ":") делает именно дельфи, SQL-сервер тут ни при чем.

Делаем:

на форме TADOQuery, SQL=

SELECT TOP 2 *
FROM tbBuilds
/*WHERE Num = :Num*/


Вроде ничего такого страшного (хотя это, конечно, и отличается существенно от приведенного ранее мною текста запроса.
Как видим - параметр в коментариях. Вроде имею право - его бы проигнорировать, но не тут то было. Причем ошибки самые разнообразные. Если почистить Parameters - дельфи его заполняет как :Num*/ (именно дельфи!)

Ну и прочие разнообразные глюки в зависимости от того поставлен пробел между ":Num" и "*/" или нет.


sniknik   (2003-05-28 08:17:00) [15]

в общем такой запрос работает. а тебе бы не мешало обращать внимание на базы к каким подключаешся и делить за что дельфи отвечает а за что они


sniknik   (2003-05-28 08:15:00) [16]

KSergey © (28.05.03 08:04)
> комментарии в SQL дельфи не игнорирует...
еще раз, при чем здесь Delphi?

я говорю про MSSQL, и запрос к нему из Delphi
select * from Categories WHERE CategoryID=:ID /* а тут комментарий */


KSergey   (2003-05-28 08:04:00) [17]

> sniknik © (27.05.03 15:53)

Да вот и я так думал, однако же есть проблема в параметрами
Например

SELECT * FROM T WHERE Field=:Param1 /* а тут комментарий */

И тут же именно дельфи начитает ругаться типа "ошибка параметра ":Param1 /*"" - т.е. комментарии в SQL дельфи не игнорирует...
Хоят буз параметров все работает отлично и с комментариями...


sniknik   (2003-05-27 15:53:00) [18]

при чем сдесь TQuery/TADOQuery? это дело sql сервера/движка с запросом разбиратся

MSSQL понимает так
SELECT * /*Комментарий*/ FROM sysusers --это тоже комментарий


bushmen   (2003-05-27 15:28:00) [19]

А в самом теле программы перед открытием Query или его заполнением почему нельзя этого сделать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо