powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / динамическое создание SQL-запроса
6 сообщений из 6, страница 1 из 1
динамическое создание SQL-запроса
    #32028208
olden69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DS = TADODataSet.Create();
...
DS.ParamCheck := true;
DS.CommandText := 'select * from Table1 where PTR > :PTR';

получаем параметр "PTR" с DataType = ftUnknown

когда то же самое делать в дизайн-тайме через ObjectInspector
то параметр создается с правильным типом DataType = ftInteger

может кто уже делал подобное?
по сырцам делфовским искал в чем разница - так и не нашел концов
...
Рейтинг: 0 / 0
динамическое создание SQL-запроса
    #32028244
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я никогда не использую параметры. Раньше пробовал и случались аналогичные проблемы.
Если уж можно написать:
DS.CommandText := 'select * from Table1 where PTR > :PTR';

то можно и продолжить
DS.CommandText := 'select * from Table1 where PTR > '+IntTostr(integerVarRTR);

Все под контролем и никаких проблем.

Для строковых параметров рекомендую
DS.CommandText := 'select * from Table1 where PTR > '+AnsiQuotedStr(stringVarRTR,'''')

Для дат-времени
var DateParam : string;
...
DateTimeToString(DateParam, 'yyyymmdd hh:nn', DateTimeVarRTR);

DS.CommandText := 'select * from Table1 where PTR > '+AnsiQuotedStr(DateParam,'''')
...
Рейтинг: 0 / 0
динамическое создание SQL-запроса
    #32028286
Dankov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тип параметру надо задавать явно. Компилятор откуда может знать, что ты подразумеваешь под параметром :PTR?
...
Рейтинг: 0 / 0
динамическое создание SQL-запроса
    #32028289
olden69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При чем здесь компилятор?
Все происходит в рантайме.
И самое интересное.
В одном месте с включенным ParamCheck=true после присвоения строки ADODataSet1.CommandText:='select * from Table1 where PTR> :PTR' прога распознала параметр как ftInteger, а в другом месте (в другой процедуре той же формы) возвратила ftUnknown после абсолютно тех же действий.
Насчет "не знает компилятор".
ADODataSet видимо определяет параметр обращаясь непосредственно к серверу через оле-дб-провайдера.
...
Рейтинг: 0 / 0
динамическое создание SQL-запроса
    #32028960
Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не самое интересное. Такова особенность АДО. Нужно перед присваиванием параметру значения задать ему тип.
(Datatype :=то чё нужно).
...
Рейтинг: 0 / 0
динамическое создание SQL-запроса
    #32030303
Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А prepare-ть TADOQuery не пробовал?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / динамическое создание SQL-запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]