[ protech_v2 @ 07.06.2006. 00:40 ] @
Poz svima, long time no see :)

Imam custom TDataset (MyComponents komponente) i nekih 6000 recorda. Na formi imam DBGrid iz kojeg korisnik izabere record i zatim ga edituje u ostalim kontrolama ispod i trenutno radim Dataset.Refresh u BeforeEdit eventu da bi pre editovanja recorda bili uzeti svezi podaci iz baze jer se menjaju i iz drugih izvora.

To radi prilicno sporo zbog konekcije itd. i trazim nacin da umesto Refresha celog dataseta dohvatim samo ovaj trenutni (zapravo ekvivalent RefreshRecord metode kod ClientDataSet-a), a da pritom ne moram da komplikujem sa povezivanjem edit kontrola na drugi dataset i slicno?
[ marcha @ 07.06.2006. 01:47 ] @
Nisam radio nesto puno sa ovim componentama ali mislim da bi trebalo da iskoristis property SQLBatch i Help :)

http://help.scibit.com/mysqlvcl/tmysqldataset_sqlcached.htm

Description

These are the statements the dataset intend to send to the mysql server with the next Close or Refresh of the dataset, if you enabled CachedUpdates, else the statements are send as the update occur, thus with each Post to your dataset of a record edit.

Napravi upit koji ce sa servera vratiti samo zeljeni slog nesto kao:

select [polje1, polje2, polje3,...,poljeN] | [*]
from tabela
where primarni_kljuc=:id_koji_editujes
[ _deran_ @ 07.06.2006. 10:32 ] @
Code:
 if clientdataset1.updatestatus=usunmodified then clientdataet1.refreshrecord; 
[ protech_v2 @ 07.06.2006. 21:32 ] @
Thx, marcha, odlicna ideja, ali nazalost ne radi - CachedUpdates ne mogu da koristim, ne odgovara mi, a drugacije nece, refreshuje mi opet ceo recordset...

Mozda jos neki nacin?

P.S. _deran_ :
Citat:
protech_v2: Prazim nacin da umesto Refresha celog dataseta dohvatim samo ovaj trenutni (zapravo ekvivalent RefreshRecord metode kod ClientDataSet-a)
[ savkic @ 08.06.2006. 07:07 ] @
> Mozda jos neki nacin?

Napravi poseban kveri (nezavisan od dataseta koji prikazuje podatke) koji će preuzeti novu verziju sloga i čije ćeš vrednosti samo iskopirati u osnovni dataset.