[ itf @ 25.12.2015. 09:20 ] @
Napravio sam jednu aplikaciju koja preko mreže komunicira s MS SQL serverom 2012 preko TADOConnection tj. TADOTable komponente. Za unos podataka u tablicu koristim

Code:

// 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?