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

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

MS SQL ADO [D6]


Iggor ©   (2007-07-17 15:37:00) 

Добрый день! Пытаюсь создать запрос через ADOQuery вида:
form1.ADOQuery1.SQL.Add('select * from :abc');
form1.ADOQuery1.Parameters[0].Value:='TS_20070611';
form1.ADOQuery1.Open;
выдаёт ошибку...
если без параметра:
form1.ADOQuery1.SQL.Add('select * from TS_20070611);
form1.ADOQuery1.Open;
то всё работает....
подскажите как быть, пожалуйста...


azat27   (2007-07-22 23:31:00) [1]

> Iggor   (17.07.07 15:37)

var Str,Str1: String;
...

Str1:='TS_20070611';

Str:='select * from ' + Str2;

form1.ADOQuery1.SQL.Text:=Str;
form1.ADOQuery1.Active:=True;


Anatoly Podgoretsky   (2007-07-17 19:26:00) [2]

> Сергей М.  (17.07.2007 17:10:15)  [15]

Параметры передаются на сервер отдельно от запроса.
Сервер разбирает только запрос и использует полученые параметры.
Запрос компилируется отдельно.
Запрос вида 'select * from ?' откомпилировать не возможно.
Автору подойдет макроподстановка или склейка.


sniknik   (2007-07-17 17:28:00) [3]

> А что, OLEDB-провайдер разве не готовый текст запроса получает от АДО на входе ?
если бы так было то смысла в параметрах было бы мало, что самому запрос составить, что на АДО переложить...
нет, передается запрос и коллекция параметров, а вот где это объединяется, на каком этапе, и объединяется ли вообще х.з., от "субд и провайдера зависит ...".


Игорь Шевченко   (2007-07-17 17:26:00) [4]

Сергей М. ©   (17.07.07 17:10) [15]


> А что, OLEDB-провайдер разве не готовый текст запроса получает
> от АДО на входе ?


Не обязательно. Если сервер умеет с параметризованными запросами работать, то зачем ADO или провайдер будет ими заниматься, нас па ?


Сергей М.   (2007-07-17 17:10:00) [5]


> не сомневайся, проверь


Не на чем, к сож.

А что, OLEDB-провайдер разве не готовыйтекст запроса получает от АДО на входе ?

Я просто не в курсе, но подозреваю ..


sniknik   (2007-07-17 17:07:00) [6]

> Сомневаюсь ..
не сомневайся, проверь.


sniknik   (2007-07-17 17:07:00) [7]

> Т.е. СУБД здесь, похоже, абсолютно ни причем.
причем. большинство не поддерживает, VFP OLEDB/ODBC частный случай. может и еще есть но...


Сергей М.   (2007-07-17 17:06:00) [8]


> От СУБД и провайдера зависит


Сомневаюсь ..


Игорь Шевченко   (2007-07-17 17:04:00) [9]

От СУБД и провайдера зависит, можно или нельзя задавать что-либо в качестве параметра.


Сергей М.   (2007-07-17 16:57:00) [10]


> Нельзя задавать имя таблицы в качестве параметра


Рискну возразить.

Успешно пользовал сабж в связке ADOConnection(VFPOLEDB) <-> ADODataSet

Ради интереса непосредстевенноперед установкой значения параметра я установил его DataType=ftUnknown и тут же заполучил отказ. Не о нем ли автор ведет речь ? Сдается мне - о нем)... Т.е. СУБД здесь, похоже, абсолютно ни причем.


Плохиш   (2007-07-17 16:25:00) [11]


> Iggor   (17.07.07 15:37)  

Нельзя задавать имя таблицы в качестве параметра.


Сергей М.   (2007-07-17 16:21:00) [12]


> Не стоит рассматривать частные случаи


Тем не менее мне самому интересно, действительно ли это "не покатит" для MS SQL OLEDB, потому как для, к примеру, для VFPOLEDB этот конкретный случай (с параметрически задаваемым FROM-clause) вполне успешно "едет и не тарахтит"


Anatoly Podgoretsky   (2007-07-17 16:16:00) [13]

Не стоит рассматривать частные случаи


Сергей М.   (2007-07-17 16:13:00) [14]


> а вот для метаданных ни за что


И для метаданных в ряде случаев "покатит".

Но пока начальник транспортного цеха не озвучил состояние св-ва ParamCheck, разговор на тему "выдает ошибку" попросту лишен смысла.


Anatoly Podgoretsky   (2007-07-17 15:54:00) [15]

Если непонятно, то сервер получит строку 'select * from ?'
Что ему с ней делать то?


Anatoly Podgoretsky   (2007-07-17 15:53:00) [16]

Покатит, а вот для метаданных ни за что.


Ega23   (2007-07-17 15:51:00) [17]

form1.ADOQuery1.Open;
использу1
form1.ADOQuery1.Active:=False;
form1.ADOQuery1.Active:=True;


Пипец. Вопрос: зачем?


> form1.ADOQuery1.SQL.Add('select * from :abc');


Я, откровенно говоря, не сильно параметры ковырял. Но вроде как параметром должно считаться то, что после =: стоит. Голый параметр, вроде, не прокатит.


gentos   (2007-07-17 15:50:00) [18]


> AZIZE ©

не знаешь, так лучше не пиши :)


AZIZE   (2007-07-17 15:47:00) [19]


> выдаёт ошибку...

какую?

Попробуй кажждый раз перед
form1.ADOQuery1.Parameters[0].Value:='TS_20070611';
удалять и добавлять параметр
и вместо
form1.ADOQuery1.Open;
использу1
form1.ADOQuery1.Active:=False;
form1.ADOQuery1.Active:=True;


Наверх

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