[ sdejans @ 24.10.2008. 12:09 ] @
Imam dve tabele. 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). Code: 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] |