select TDRGROP01 from TPOMIND
i
select * from TDRGROP order by Drzava, Mesto, Opstina
Prva sluzi da se ispita da li je doslo do promena i ako je u drugoj treba da se azuriraju podaci u dve kolone. Prva kolona dobija broj koji se za svaki slog uvecava za jedan a druga kolona prvo ispituje sta pise u koloni Nive i u zavisnosti od toga azurira drugu kolonu.
Da li je ovako nesto moguce uraditi kroz SQL upit i ako moze koliko.
Po starinski sam uradio to (kod dole) ali je dosta sporo pogotovo preko OBDC-a (ADO).
procedure TFDRGROP.FormActivate(Sender: TObject);
var
intkey, intpred01, intpred02: integer;
strnivo: string;
begin
FMKAEVDB.TDRGROP.Open;
FMKAEVDB.TPOMIND.Open;
// ako je u prvoj tabeli uslov nije zadovoljen
If FMKAEVDB.TPOMIND.FieldByName('TDRGROP01').AsBoolean = False then
begin
intkey := 1;
strnivo:= '1';
intpred01:= 1;
FMKAEVDB.TDRGROP.DisableControls;
// promena vrednosti u dve kolone u drugoj tabeli
while not FMKAEVDB.TDRGROP.Eof do
begin
FMKAEVDB.TDRGROP.Edit;
// prva kolona uvecava sa za 1
FMKAEVDB.TDRGROP.FieldByName('SortKey').AsInteger:= intkey;
//azuriranje druge kolone u zavisnosti od trece
If strnivo= '1' then begin
FMKAEVDB.TDRGROP.FieldByName('SortPred').AsInteger:= 0;
intpred01:= intkey;
end else
if strnivo = '2' then begin
FMKAEVDB.TDRGROP.FieldByName('SortPred').AsInteger:= intpred01;
intpred02:= intkey;
end else begin
FMKAEVDB.TDRGROP.FieldByName('SortPred').AsInteger:= intpred02;
end;
intkey:= intkey + 1;
FMKAEVDB.TDRGROP.Next;
strnivo:= FMKAEVDB.TDRGROP.FieldByName('Nivo').AsString;
end;
FMKAEVDB.TPOMIND.Edit;
FMKAEVDB.TPOMIND.FieldByName('TDRGROP01').AsBoolean := True;
FMKAEVDB.TPOMIND.Post;
end;
FMKAEVDB.TDRGROP.First;
FMKAEVDB.TDRGROP.EnableControls;
end;
[Ovu poruku je menjao chachka dana 25.10.2008. u 11:18 GMT+1]