arkadaşlar selam ve saygılar... acceste basit bir güncelleştirme sorusu bir kaçgündür çözümsüzlük üretiyor. Benim kafam karıştı bir de siz bakıverin. iki tablo var. satislar, bakiyeler
İki tabloda birbirine musteri_id alanı ortak alan. Satıslar tbalosuna veri girişi olduğunda ( programdan kaydete basıldığında) satışlarda kaydedilen tutar hangi işlem türüne ve hangi müşteriye kaydedildiyse bakiyeler tablosunda da satışlar tablosundaki o müşterinin idine bakacak ve işlem türüne bakarak gruplayıp toplayack topladığını da bakiyelerdeki ilgili alana atacak. aslında bu sorgu firibirde çok güzel çalışıyor ama accesde çalışmadı.
UPDATE bakiyeler SET bakiyeler.toplam_alacak = ( SELECT Sum(satislar.tutar) AS Toplatutar FROM satislar
GROUP BY satislar.musteri_id, satislar.islem_tur
HAVING ( ((satislar.musteri_id)=6) AND ( (satislar.islem_tur)=1) )) where ((bakiyeler.musteri_id)=6) ;
Hata mesajını da yazmanız daha sağlıklı olacaktı. İlk bakışta bir şey söylemek zor ama HAVING ve WHERE için verilen şartlardaki en dışta kalan parantezler ters gelmiş olabilir. Ayrıca bir de aşağıdaki (test edilmemiş ) sorguyu da denemenizi önerebilirim.
UPDATE bakiyeler SET bakiyeler.toplam_alacak = tbl.Toplatutar from
(SELECT Sum(satislar.tutar) AS Toplatutar FROM satislar
GROUP BY satislar.musteri_id, satislar.islem_tur
HAVING satislar.musteri_id=6 AND satislar.islem_tur=1) as tbl
where bakiyeler.musteri_id=tbl.musteri_id
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .
şaban bey hocam tekrar selam ve saygılar... dediğinizi yaptım ama sonuç olumlu değil. acces sql dilinie çok fazla cevap vermiyor mu diyeceğim artık. yada veri tabanını değişeceğm. hata olarak işlem güncelleştirilebilir sorgu kullanmalıdır diye hata mesajı vermekte. anlamadım gitti. firibirde geçireceğim olmazsa.
ben de nette google hocamıza sordum hata mesajını yazarak arattım. çıkan yanıtlar beni tatmin etmedi. ben projelerim d bölümünde zaten. direk delphiden göndermiyorum sorguyu. sorguyu çalıştırmak için öncelikle acces mdb dosyasından test ediyorum. aldığım hata mesajıda bu test sonucundan çıkan mesaj.
arkadaşlar firibirdde çalışan kodları yazıyorum. işlem aynı işlem sadece veri tabanı ve alanlar ismi değişik. firibirdde çalışan kodlar accesde çalşmıyor
update bakiyeler set bakiyeler.satis=
(select sum (satislar.toplam) from satislar where (bakiyeler.musteri_id=satislar.musteri_id) and (satislar.musteri_id=13 and satislar.tur_id=1));
update bakiyeler
inner join satislar on bakiyeler.musteri_id=satislar.musteri_id
set bakiyeler.satis=sum (satislar.toplam)
where ((satislar.musteri_id=13) and (satislar.tur_id=1));
bu arada ik mesajında bakiyeler.toplam_alacak ı güncelliyordun şimdi bakiyeler.satis olmuş...
selamlar arkadaşlar artık azgeçtim sayılır. acces cevap vermiyor benim istediğim sorguya. uzun yoldan gitmeye devam. 2 satırlık güncelleştirme sorgusu yerine 8 tane sorgu ile işi halletim tabi bu da kayıt sayısı çok olduğunda sorgu süresi uzayacak ama başka da çare yok gibi... yada firibirdle yapacam programı. ondada tak çalıştır özelliği olmayacak. yardımlarınız herekse teşekkür ederim.