[ salvaric @ 24.09.2012. 09:22 ] @
Pozdrav,

imam problem sa UPDATE upitom u ADOQuery, izbacuje mi grešku: "Operation must use an updateable query."

kod:
UPDATE Roba GB in 'F:\Baza.mdb'
SET NazivArtikla = (SELECT NazivArtikla FROM Roba in 'F:\Prijem\Baza.mdb' where SifraArtikla=GB.SifraArtikla)
WHERE SifraArtikla IN (SELECT SifraArtikla FROM Roba in 'F:\Prijem\Baza.mdb')

Dal neko zna u čemu je problem.

Prije mesec dana sam odradio jedan sličan upit UPDATE sa externim mdb fajlovina i radilo je sve kako treba, al sam ga izbrisao, sad sam se zakucao ovde i nikako da nastavim.

[ miksi @ 24.09.2012. 20:09 ] @
1. Vidi kakav ti je AdoConnection: da li je OLEDB uredu? Da li otvaras konekciju ADOConnection.Connected := True;? (I zatvaras)
2. Vidi kakve su privilegije nad fajlom .mdb (narocito ako si na Win7)
3. Proveri da li je AdoQuery.RequestLive := true;
4. Probaj i da li radi sa tabelom, npr: ADOTable.Insert; Napuni_ppolja(); ADOTable.Post;
[ salvaric @ 24.09.2012. 21:41 ] @
Konekcija je ispravna, radi sve OK, INSERT, POST, itd. Samo je problem kod UPDATE!

AdoQuery.RequestLive := true; ??? To kod mene nema. (Delphi 7, Win XP)

Privilegije nad mdb su sve kako treba, barem mislim da jesu. Svi imaju full control.
[ miksi @ 25.09.2012. 00:38 ] @
Onda mora biti problem u samom ispisu sql stringa za update. Startuj DataBase Explorer i probaj da izvrsis isti upit. Takodje, pogledaj da li ispravno korsitis alijas GB, a dobro bi bilo, posto se baze zovu isto, da imas dva alijasa tipa: UPDATE Roba GB in 'F:\Baza.mdb'
SET GB.NazivArtikla = (SELECT PB.NazivArtikla FROM Roba PB in 'F:\Prijem\Baza.mdb' where PB.SifraArtikla=GB.SifraArtikla)
WHERE GB.SifraArtikla IN (SELECT DB.SifraArtikla FROM Roba DB in 'F:\Prijem\Baza.mdb')

S druge strane, razmisli da li je ovo upit koji ti treba: obzirom da se prvo radi selekcija, pa onda projekcija, imaces prvo selekciju svih sifara iz unutrasnje baze 'F:\Prijem\Baza.mdb' i to je OK. Zatim ce se preci na projekciju gde treba postaviti kolonu NazivArtikla. Ali, i unutar toga imas equi-join koji vrsi selekciju tako da uzima samo one parove koji su jednaki, a za sluzaj kada ne postoji PB.SifraArtikla (unutrasnje baze), onda se GB.NazivArtikla ne moze setovati, tj. ostace na staroj vrednosti. Da li to zelis, ili pak tu treba da stoji Null, ako se vec referenciras na nazive unutrasnje tabele? Btw. testiraj razne varijante, prema tome kakava ogranicenja si definisao u bazi nad tim poljima.