Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TADOQuery и параметры


Автор: Гость_Boris 9.12.2004, 09:49
Добрый день!

Есть MSSQL, Delphi, TADOQuery,
Запрос на создание DB

Если используется БЕЗ параметров:
CREATE DATABASE DB_COM ON
(NAME = COM_DATA,
FILENAME = "D:\MSSQL7\Data\COM\DB_COM_Data.MDF" )
то все работает нормально.

НО, если я использую параметрический запрос
CREATE DATABASE DB_COM ON
(NAME = COM_DATA,
FILENAME = :s )
то выдается ошибка "Incorrect syntax near '@P1'"
Причем, и в Run и в Design-Time

Причем, этот же запрос, только с использованием BDE
работает нормально

Если в этот же TADOQuery, поместить запрос типа
select * from Table where Field1 = :s,
то все работает нормально.

С чем бы это могло быть связано?

Автор: BSV_Sergey 9.12.2004, 10:17
Если работает Select но не работает Create то может ты используешь ADOQuery.Open; Если да то замени на ExecSQL. Если ошибка генерится не по этому, то ее можно обойти: сформаровать строку скрипта создающего базу програмно в какой нибудь string переменной к примеру sSQL. Тогда текст будет выглядеть примерно так:
Код

sSQL := 'CREATE ..........'
ADOQuery1.SQL.Cleare;
ADOQuery1.SQL.Add(sSQL);
ADOQuery1.ExeсSQL;

Если в ADOQuery параметры соединения с сервером введены верно - должно сработать.

Автор: Гость_Boris 9.12.2004, 14:46
Используется именно ADOQuery.ExecSQL

sSQL := 'CREATE ..........' нежелательно использовать,
поскольку в имени файла могут быть кавычки,
и в этом случае будет выдана ошибка.
Собственно, именно по этой причине
есть потребность использовать параметрический запрос


Автор: AntonSaburov 9.12.2004, 14:56
Господа, вам не кажется, что тема явно относится к Delphi. Реальной работы самой базы данных тут нет.

Автор: BSV_Sergey 9.12.2004, 15:22
Гость_Boris Можно попробовать перед прибавлением к строке с командой на создание БД имени файла, организовать его проверку. В цыкле посимвольно пройти всю строку с именем файла и при обнаружении символа (') заменить его на ('') .
Отформатированное имя файла добавить в строку команды создания БД.
Способ конечно не самый красивый, но практически должен сработать.
А возможно кто нибудь сможет подсказать почему выдается ошибка и ситуация гораздо упроститься.

AntonSaburov Данная тема бесусловна должна быть в разделе Delphi. Надеюсь кто нибуть сможет ее туда перенести.

Автор: Гость_Boris 9.12.2004, 16:09
Да, наверное, так и придется поступить

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)