Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Динамические SQL переменные (Delphi)

30K
08 апреля 2008 года
NetZorro
16 / / 02.04.2008
Есть таблица auto, c полями brand и color. Нужна прога (Delphi) для поиска подходящего авто. Для связи с БД использую Query, код для кнопки поиска (OnClick) такой :
procedure TForm1.Button1Click(Sender: TObject);
var sel,brand,color:string;
bool:boolean;
begin
color:='';
brand:='';
sel:='select * from auto.db ';
bool:=false;
color:=Edit1.Text;
brand:=Edit2.Text;
if (trim(brand)<>'') then
begin
sel:=sel+'where upper(trim("brand"))= '+UpperCase(Trim(brand));
bool:=true;
end;
if (trim(color)<>'') then
begin
if (bool) then sel:=sel+'where upper(trim("color"))= '+UpperCase(Trim(color)');
else
begin
sel:=sel+'where upper(trim("color"))='+UpperCase(Trim(color));
bool:=true;
end;
end;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:=(sel);
Query1.Open;
end;
Вот!! А не работает! Вроде как ошибка синтаксиса в запросе!
и ещё вроде динамические(brand, color) переменные в BDE нужно описывать в param!?
Помогите! как в общем сделать эту прогу???
8.2K
08 апреля 2008 года
Ora-cool
211 / / 20.09.2007
br /> 2. А слабо посмотреть на строку запроса, которая получается в результате ваших манипуляций? При беглом взгляде на код, я предполагаю, что это будет нечто вроде

select * from auto.db where "brand"=1 where "color"=2

естественно ошибка в синтаксисе.
3. Я не вижу подставляемых переменных в вашем запросе. Вы явно подставляете в запрос значения.
30K
09 апреля 2008 года
NetZorro
16 / / 02.04.2008
1)в чем ошибка синтаксиса? (1-это же символ, т.к тип brand:string; или единицу нужно взять в кавычки?)
2) что плохого в явной подстановке в запрос, без переменных?
8.2K
09 апреля 2008 года
Ora-cool
211 / / 20.09.2007
Цитата: NetZorro
1)в чем ошибка синтаксиса? (1-это же символ, т.к тип brand:string; или единицу нужно взять в кавычки?)
2) что плохого в явной подстановке в запрос, без переменных?



1) тем что
select ... from ... where <условие> where <условие> неправильно, а правильно
where <условие> AND | OR <условие>
2) Чем плохо - это отдельный вопрос. Я же отвечал на ваш вопрос:
"и ещё вроде динамические(brand, color) переменные в BDE нужно описывать в param!?"

2
10 апреля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: NetZorro
что плохого в явной подстановке в запрос, без переменных?


в том, что в код следует зашивать только константы, которые никогда не изменяться. типа числа Пи или е :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог