Code:
// DM1 - TDataModule
// TJedinicaZnanja - TADOTable
DM1->TJedinicaZnanja->Insert();
DM1->TJedinicaZnanja->FieldByName("...")...
DM1->TJedinicaZnanja->FieldByName("...")...
DM1->TJedinicaZnanja->Post(); // traje predugo!
// DM1 - TDataModule
// TJedinicaZnanja - TADOTable
DM1->TJedinicaZnanja->Insert();
DM1->TJedinicaZnanja->FieldByName("...")...
DM1->TJedinicaZnanja->FieldByName("...")...
DM1->TJedinicaZnanja->Post(); // traje predugo!
Sve je bilo u redu dok je tablica imala malo zapisa. Sada kada ih ima preko 1500 svaki Post() traje cca 4 sec. Testirao sam i preko SQL Server Profilera i vidim da je problem isključivo na klijent strani jer se update na serveru izvrši trenutno. Očito je problem u TADOTable komponenti koja nakon Post() ponovo učitava cijeli dataset, a meni to nije potrebno. Meni je samo potrebno da novi/izmijenjeni podatak doda u grid.
S obzirom da nakon Post() moji korisnici trebaju vidjeti zapis u gridu (TcxGrid - DevExpress) zbog operacija pretraživanja, sortiranja, grupiranja itd. ne mogu ovo realizirati upotrebom TADOQuery ili druge komponente jer tada mi taj zapis neće biti vidljiv u gridu bez ponovnog učitavanja dataseta, a time opet gubim vrijeme na učitavanje. Čak niti ServerClient kursor ne funkcionira kako treba jer u design-timeu uredno učita podatke no u runtime-u to isto ne radi.. Zablokira aplikaciju pri učitavanju podataka.
Što napraviti?