Pozdrav,
ne znam koja je baza u pitanju, ali ako radiš sa ado mogao bi možda ovako... Pretpostavimo da imaš formu na kojoj je TDBGrid (TADOQuery1 i TDataSource1) sa tih 20000 slogova ili kako si već odradio select upit, a pored toga imaš i još jednu formu sa koje unosiš podatke ili vršiš izmene. Na tu drugu formu postavi TADOQuery2, poveži je sa TADOConnection. Dakle, na toj TForm2, unos - izmene, sa TADOQuery2 odradiš:
Code:
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into tabela (atribut1, atribut2) values (:atribut1, :atribut2)')
ADOQuery2.Parameters.ParamByName('atribut1').Value:= Edit1.Text;
ADOQuery2.Parameters.ParamByName('atribut2').Value:= Edit2.Text;
ADOQuery2.Prepared:= true;
ADOQuery2.ExecSQL;
Posle toga odradiš refresh TADOQuery sa TForm1. Znači, ne vučeš slogove iz one tabele a dodaješ joj, posle toga samo refrešuješ data set i dobiješ taj uneti slog ako pripada tom select upitu.
BTW, pišem iz glave, možda ima neka greška u kodu.
Od native komponenti preporučujem
ZEOSLib.