Sortowanie rekordów po kliknięciu na tytuł pola

0

Witam tak jak w tytule

procedure TForm11.DBGrid1TitleClick(Column: TColumn);
var
  atrybut, wartosc: string;

begin
   atrybut:=Column.Title.Caption;
    if atrybut='id_oiz' then wartosc:='id_oiz';
    if atrybut='moc_zasilacza' then wartosc:='moc_zasilacza';
    if atrybut='dodatkowe_informacje' then wartosc:='dodatkowe_informacje';


   with IBQobudowa, SQL do begin
     Close;
     Clear;
     Add('SELECT * from obudowa_zasilacz ORDER BY '+wartosc+';');
    Open;
   end;
end;

end.

nie chce mi sortować wywala bład sql error code token unknown -line 1, char 40,
;'.

co źle jest w tym kodzie ??

0

a po co ten średnik w zapytaniu???

0

Ja na zeosach mam tak zrobione sortowanie:

procedure TitleClick(Column: TColumn; qrKlienci: TZQuery);
begin
  if qrKlienci.SortType = stAscending then
    qrKlienci.IndexFieldNames := Column.Title.DefaultCaption + ' DESC'
  else
    qrKlienci.IndexFieldNames := Column.Title.DefaultCaption + ' ASC'
end;
0
if atrybut='id_oiz' then wartosc:='id_oiz';

Pewnie chodzi tu o uniknięcie SQL Injection, ale tak jak jest to trochę bez sensu. Po co tworzysz drugą zmienną, „na wszelki wypadek”? Przecież zawiera to samo...

0

Ok już problem rozwiązany. Masz racje kolejna zmienna jest zbędna. a kod został zaczerpnięty z tej strony i myslalem że jest przetestowany ale niestety :/

http://ultrabit.prv.pl/

0
Misiekd napisał(a)

a po co ten średnik w zapytaniu???

Przecież na końcu zapytania sql daje się średnik

0
bilobil napisał(a)

Przecież na końcu zapytania sql daje się średnik

jak się nie chce żeby działało to się daje

0
Misiekd napisał(a)
bilobil napisał(a)

Przecież na końcu zapytania sql daje się średnik

jak się nie chce żeby działało to się daje

Chce się żeby działało więc daje średniki... i działa ;]

0
 Add('SELECT * from obudowa_zasilacz ORDER BY '+wartosc+';');

Ten czerwony semicolon jest niepotrzebny, bo po nawiasie zamykającym masz. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1