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


Автор: eralex 2.5.2006, 11:09
В ADOQuery1 в свойство SQL помещаю следующий текст:

Код

CREATE DATABASE :db_name
ON 
( NAME = dat_dat,
FILENAME = :db_put1,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB )
LOG ON
( NAME = 'log_log',
FILENAME =  :db_put2,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB )


Параметрам db_name,db_put1,db_put2 в ADOQuery1 в свойстве Parameters ставлю
DataType = ftString

В теле программы вызываю так:

Код

ADOQuery1.Parameters.ParamByName('db_name').Value:='main_base';
ADOQuery1.Parameters.ParamByName('db_put1').Value:='C:\MSSQL7\Data\broko.mdf';
ADOQuery1.Parameters.ParamByName('db_put2').Value:='C:\MSSQL7\Data\broko.ldf';
ADOQuery1.ExecSQL;



И получаю ошибку:

'Line 1: Incorrect syntax near '@P1''

Если сделать так 

Код

CREATE DATABASE main_base
ON 
( NAME = dat_dat,
FILENAME = :db_put1,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB )
LOG ON
( NAME = 'log_log',
FILENAME =  :db_put2,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB )


то получаю ошибку:

'Line 4: Incorrect syntax near '@P1''

  

Автор: Vit 2.5.2006, 15:04
Не все значения можно передавать с помощью параметров. Названия объектов базы данных и служебные слова передавать нельзя. По большому счёту параметры передаются только для значений полей, а названия полей и таблиц передавать нельзя.  

Автор: eralex 2.5.2006, 19:41
Очень жаль 

Автор: Vit 3.5.2006, 15:27
Цитата(eralex @  2.5.2006,  10:41 Найти цитируемый пост)
Очень жаль  



Это ограничение имеет логическое объяснение и связано с процессом компилляции запросов сервером. 

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