[ MatezYU @ 03.07.2007. 10:39 ] @
Pozicionirao sam misa na jedan record u dbgrid. Brisem tabelu i radim refreshj. Pokazivac ide na pocetak. Hocu da mi ostane u tom redu gde je bioi. Kako to da resim?
[ broker @ 03.07.2007. 10:52 ] @
Akoobrises tabelu onda nema gde da ode kursor.

Inace, ne pozicioniras se na gridu nego na tabeli, dakle u dataset-u zapamti gde si bio pa nakon refresh-a otidji opet na isti slog.
[ [KS] @ 03.07.2007. 11:41 ] @
Da, i ja sam imao taj problem i imao sam istu ideju (da zapamtim RecNo pa da se vratim na isti). Međutim, problem je sledeći. Skrolujem DBGrid prema dole i unos na koji kliknem nalazi se negdje na sredini trenutne pozicije dbgrid scrolla. Kad nakon toga RecNo proslijedim db komponenti taj slog se pojavi na vrhu! Znači pobjegne gore dva tri reda.

Ja sam to riješio ovako. OnDraw event mi je služio za pamćenje prvog vidljivog RecNo-a i onda bih taj RecNo (a ne izabrani) proslijedio u dataset. Radilo je odlično.

Nadam se da će ti pomoći. Poz.
[ broker @ 03.07.2007. 13:36 ] @
To radi odlicno sve dok korisnik ne pokrene neku akciju koja radi na tekucem slogu, a tekuci slog vise nije onaj koji je bio tekouci nego onaj koji je bio na vrhu grida.
[ MatezYU @ 04.07.2007. 06:36 ] @
Citat:
broker: Akoobrises tabelu onda nema gde da ode kursor.

Inace, ne pozicioniras se na gridu nego na tabeli, dakle u dataset-u zapamti gde si bio pa nakon refresh-a otidji opet na isti slog.


Mislio sam da brisem rekord a ne tabelu. U stvari ja imam sql upit koji mi verzuje vise tabela i pokazuje rezultat. E sada kada brisem jedan rekord iz te
prve glavne tabele onda treba da nestane taj rekord u dbgrid. Onda moram da refresh-ujem taj upit i uvek mi kursor skoci gore.
[ MatezYU @ 04.07.2007. 06:37 ] @
Da li moze neko da mi da primer?
[ rambo @ 04.07.2007. 08:34 ] @
Ovo je normalno ponašanje zato što DataSet nije jedna tabela već upit koji vraća neku vrstu "pogleda" na podatke (joined query).

Da bi ovo rešio, recimo možeš da pre brisanja aktivnog zapisa upamtiš koji ti je zapis ispred (ili iza) tog koji brišeš (zapamtiš njegov ID, vrednost ključa) i onda nakon brisanja uradiš Find sa tim ključem. Ovo rešenje takođe može da bude i uzrok za pad performansi aplikacije kod čitanja podataka iz baze, jer moraš da uradiš više operacija nad istim DataSet-om (pređeš na prethodni slog, pročitaš ID, pređeš na aktuelni slog, obrišeš ga, osvežiš upit, uradiš Find sa zapamćenim ID-jem), pa zato moraš da odlučiš dali ti ovakva funkcionalnost zaista treba.

Postoje takođe komponente (DevExpress ExpressQuantumGrid, recimo) koje ti ovo rade automatski, ali opet moraš neke stvari da malo isplaniraš. Obavezno napravi probu sa više varijanti pa vidi šta ti najviše odgovara.