Динамические SQL переменные (Delphi)
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!?
Помогите! как в общем сделать эту прогу???
select * from auto.db where "brand"=1 where "color"=2
естественно ошибка в синтаксисе.
3. Я не вижу подставляемых переменных в вашем запросе. Вы явно подставляете в запрос значения.
2) что плохого в явной подстановке в запрос, без переменных?
Цитата: NetZorro
1)в чем ошибка синтаксиса? (1-это же символ, т.к тип brand:string; или единицу нужно взять в кавычки?)
2) что плохого в явной подстановке в запрос, без переменных?
2) что плохого в явной подстановке в запрос, без переменных?
1) тем что
select ... from ... where <условие> where <условие> неправильно, а правильно
where <условие> AND | OR <условие>
2) Чем плохо - это отдельный вопрос. Я же отвечал на ваш вопрос:
"и ещё вроде динамические(brand, color) переменные в BDE нужно описывать в param!?"
Цитата: NetZorro
что плохого в явной подстановке в запрос, без переменных?
в том, что в код следует зашивать только константы, которые никогда не изменяться. типа числа Пи или е :)