[ master037 @ 03.04.2008. 12:01 ] @
Da li bi neko mogao da me uputi kako da odradim sledece na osnovu ovog sto imam:

kveri -> provajder -> klijentdataset

Programski ubacujem u adokveri sql izraz, koji izvlaci podatke iz baze (kombinuje vise tabela sa pojedinim kolonama) i to dalje preko provajdera prosledjuje klijentdataset-u.
E sad, koristio sam komponentu da dbradiogroup da u zavisnosti koju opcuju odaberem da se promeni odgovarajuce polje u klijentdataset-u. I dok god ne zatvorim klijentdataset sve se ok prikazuje.

E sad mene zanima, kako da ono sto sam radio sacuvam, tj. izmenjena polja vratim nazad u bazu.

Nasao sam neka resenja na netu ali odnose se kada se poziva samo jedna tabela i bukvalno se svodi da editujem direktno tabelu. Nisam nasao resenje kako da promene vratim nazad u bazu i da li je uopste moguce obzirom da klijentdataset i ne zna koje su tabele u pitanju jer drugih podataka sem onih sto mu salje kveri i nema.

Hvala unapred!!!

P.S. U pitanju je Delphi 7, baza podataka je PostgreSQL, os xp pro.
[ nikomak @ 03.04.2008. 21:20 ] @
Koliko sam uspeo da shvatim iz ovoga sto je navedeno gore, to sto zelis da postignes nekako nije logicno.
Prvo, kveri je jednosmeran i read only (selektujes i prikazujes neke podatke), pa nije moguce da tako dobijene podatke menjas i vratis nazad putem istovetnog kverija, zar ne ?

Tabele su (mozda) bolje resenje, nakon sto dobijes trazene rezultate (filtri, agregacija, itd..) menjas ih i post-ujes nazad u bazu.

Nadam se da sam dobro shvatio sta si pokusavao da uradis :) Pozdrav.
[ master037 @ 04.04.2008. 06:35 ] @
Da, jesi dobro shvatio sta hocu da uradim. Tom logikom sam se i ja nekako vodio da tako nesto nije moguce, medjutim citao sam nekoliko clanaka po pitanju ove teme gde u stvari izmene nad podacima se ne vracaju putem istog kverija, vec sama komponenta (mislim dataset provider) kreira pojedinacan query za svaku izmenu i primenjuje to na bazu.
Videcu danas da odradim nesto drugacije...
[ _deran_ @ 04.04.2008. 07:19 ] @
ne mozes preko query-a da to odradis, ali mozes da prodjes kroz clientdataset.delta (samo promene nad clientdatasetom) i rucno posaljes serveru sql upite. posto si spajao vise tabela, za jedan record ce ti trebati vise sql-ova, koliko tabela imas.
[ master037 @ 04.04.2008. 07:59 ] @
Jel bi mogao malo da mi pojasnis kako da pristupim "delti" i kako da posaljem upit. tj. Menja se samo jedno polje u jednoj tabeli i to je sve - ne treba mi vise sql-a ;)
[ _deran_ @ 04.04.2008. 08:35 ] @
pretpostavljam da si vezao vise tabela samo da bi povezao preko nekog ID-a podatke zbog prikaza... zasto ne napravis vise clientdatasetova za sve te tabele a u onu glavnu dodas nova lookup polja i nemas onda briga, mozes koristiti applyupdates

cdsDelta.data:=cdsTabela.delta;
[ master037 @ 04.04.2008. 08:43 ] @
Pa kompletan upit je sql upit koji povezuje tabele u samoj postgresql bazi i samo izvlaci neophodne podatke koje bi prosledio programu. Pokusavam da se drzim sto je moguce vise postgresa i da samo finalne rezultate prikazuje korisniku. Nije problem da zakacim tabelu koja ce da bude direktno vezana na tabelu u bazi, ali sam mislio da je moguce ovako preko cds-a to odraditi.
Hvala u svakom slucaju!!!
[ _deran_ @ 04.04.2008. 09:31 ] @
nisi me razumeo verovatno, mislio sam da spajanje tabela ne radis sql upitom nego bas CDS-om. sve podatke vadis iz postgresa