Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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. Тогда текст будет выглядеть примерно так:
Если в 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 |
Да, наверное, так и придется поступить |