Arkadaşlar önceden mehmethocamın yardımı ile yaptığım bir silme sorgusuna alışları'da ekleyince hata almaya başladım ve silme sorgusu çalışmadı,
benim yapmak istediğim
ALISLAR ve SATISLAR tablolarında kişinin ,hem alışlarda ,hem şatışlarda yada (ALISLAR BORCU-SATISLAR BORCU=0 ise ortalamasında da borcu kalmamışsa da olabilir ) eğer borcu yoksa ,enaz biryıl aradan zaman geçmiş ise ; ayrıca MÜSTERİLER'in kayıt tarihinden de en az bir yıl süre geçmiş ise bu müşterinin tamamen kaydını sildirmek istiyorum,
.........Ayrıca bunu
Sql olarak koda yazdırabilirsem daha iyi olacak.........
örnek ekte
ilgilenen arkadaşlara şimdiden çok teşekkürler
İlişkilerde sadece Satışlar kayıtları için
ardarda silme onayı verilmiş. Alışlar tablonuzu da
resimdeki gibi ilişkilendirin
(Bunu yaparken Alışlar tablonuzdaki kayıtları
silin belki uyumsuzluk yapar )
Bu düzenlemeden sonra kart silindiğinde dış anahtarla
bağlı kayıtlar "ardarda silme" kuralına uyacağından
kart silinecektir ve tabi ki kayıtlarda
Kolay gelsin
Not: tehlikeli bir ilşkidir niye tercih ettiğinizi
tabi ki bilemiyorum. Satışlar o şekilde yapıldığı
için ayni yöntemi önerdim
bende birşeyler yaptım ama sanırım ayrı ayrı siliyor yani kurallara uyan ALIŞLARI ve SATISLAR'ı bağımsız olarak siliyor, yani müşterinin alış ve satış kuralları uyanları birlikte silme işlemini yapamadım,
Sql bilgisi daha iyi olan bir hocamız bunu düzenlerse uygun olacaktır.
.RunSQL "DELETE ALISLAR.ALIS_TARIHI, [ALIS_FIYATI]*[AADEDI]-[AODENEN] FROM ALISLAR WHERE (((ALISLAR.ALIS_TARIHI) < Date() - 365) And (([ALIS_FIYATI]*[AADEDI]-[AODENEN]) <=0))"
.RunSQL "DELETE SATISLAR.SATIS_TARIHI, [SATIS_FIYATI]*[SADEDI]-[SODENEN] FROM SATISLAR WHERE (((SATISLAR.SATIS_TARIHI) < Date() - 365) And (([SATIS_FIYATI]*[SADEDI]-[SODENEN]) <=0))"
.RunSQL " DELETE MUSTERILER.KAYITTARIHI, nz((SELECT sum(b.[ALIS_FIYATI]*b.[AADEDI]-b.[AODENEN]) FROM MUSTERILER as a INNER JOIN ALISLAR as b ON a.MNO =b.mno where MUSTERILER.mno=b.mno),0) AS Deyim2, MUSTERILER.MNO FROM MUSTERILER WHERE (((MUSTERILER.KAYITTARIHI)<Date()-365) AND ((nz((SELECT sum(b.[ALIS_FIYATI]* b.[AADEDI]-b.[AODENEN]) FROM MUSTERILER as a INNER JOIN ALISLAR as b ON a.MNO =b.mno where MUSTERILER.mno=b.mno),0))<=0));"
.RunSQL " DELETE MUSTERILER.KAYITTARIHI, nz((SELECT sum(b.[SATIS_FIYATI]*b.[SADEDI]-b.[SODENEN]) FROM MUSTERILER as a INNER JOIN SATISLAR as b ON a.MNO =b.mno where MUSTERILER.mno=b.mno),0) AS Deyim2, MUSTERILER.MNO FROM MUSTERILER WHERE (((MUSTERILER.KAYITTARIHI)<Date()-365) AND ((nz((SELECT sum(b.[SATIS_FIYATI]* b.[SADEDI]-b.[SODENEN]) FROM MUSTERILER as a INNER JOIN SATISLAR as b ON a.MNO =b.mno where MUSTERILER.mno=b.mno),0))<=0));"
Sayın okiletirc ve celoyce
her ikinizede teşekkürler ancak henüz istediğimi elde edemedim ,
Celoyce'nin örneğinde siliyor ancak biri kritere uymazsa yani örneğin alışlar kirete uymazsa ,Alışlar kalıyor,Satış ve Müşteriyi siliyor,bunun birleştirilerek her üç (müşteri,Alışlar,Satışlar) kiriterinin uygun olması durumunda silmeli,ikisinin uygunluğuna değil,umarım anlatabilmişimdir,
...........Cevaplarınızı bekliyorum... .......
Sayın derebeyi
Bir müşterinin hem alış hem de satışta hareketi olmayacak, kayıt yapılalı 365 günü geçmiş olacak ve hiç borsu ya da alacağı olmayacak. Tam olarak şartlar bunlar mı? Ben size ilk çalışmayı yaptığımda alışları düşünmemiştim. O yüzden sadece satışlara baktırdım.
Sanırım istediğiniz şöyle birşey olacaktı. Bu arada lütfen sorgudaki MNO değerini alış veya satıştan almayınız. O değer müşteriler tablosundan gelmeli. Ayrıca ilişki penceresinden bilgi tutarlılığına zorlamadan alış ve satış kayıtları silinmez. O yüzden ilişkileri de inceleyiniz.
Sayın Mehmet Demiral ve forum dostları;
Herkese günaydın..
Hocam, sizin çözüm ürettiğiniz her konuyu arşivime ekliyorum. Silme Sorgu'suyla ilgili "Form1" formu, resimde de görüleceği gibi, "tasarım görünümü" 'ne geçildiğinde görünüyor, "veri görünümü" 'ndeyken boş gözüküyor.
Böyle bir durumla ilk kez karşılaştım.
Access 2007 kullanıyorum.
Nedeni hakkında düşünce ve görüşlerinizi almak isterim..