ilişkili kayıtları da silmek

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

ilişkili kayıtları da silmek

Mesaj gönderen zaxacm »

Access veritabanım aşagıdaki tablolardan oluşuyor
musteriler tablom : mid(müşteri id),madi,msoyadi vs..
satis tablom: sid(satış id),mid,urun vs..
taksit tablom: tid,sid vs...

adoquery.delete ile müşteri tablosundaki müşteriyi siliyorum müşteriyi silerken satis ve taksit tablosundan da ilgili satış ve taksitleri silmek istiyorum nasıl bir sql kodu yazmam lazım acaba

@mrmarman yazdı:TAŞIMA BİLGİSİ : Programlama formundan DİĞER VERİTABANLARI formuna taşınmıştır
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Hangi alandan ilişki kurduysan ona göre silme sorgusu yazmalısın. Mesela il ve ilçeler tablolarım olsun.
il | ilce
------ | --------
trkod | iltrkod
ilad | ilceadi
buna göre trafik kodu 88 olan kaydı silmek için

Kod: Tümünü seç

delete from il where trkod=88
delete from ilce  where iltrkod=88
yazmak yeterli olacaktır. Aslında Access te bu işlemi otomatik yapabilirsin. Hatta sen sadece il kodunu değiştirsen bile detay tablo yeni değeri otomatik olarak güncelleyecektir. Bunu yapmanın yolu Araçlar->ilişkiler menüsünden gelen pencereden gerekli ayarlamaları yapmak olacak. Mesela bu gelen penecere de il ve ilce tablolarını forma ekledikten sonra il tablosunda görünen trkod alanını ilce tablosunda ki iltrkod alanının üstüne sürükleyerek bırakırsan bir pencere açılacaktır. Bu pencerede hangi alanları ilişkilendireceksen gerekli seçimi yapman gerekecektir ve altta bulunan Bilgi Tutarlılığını Zorla seçimini yaptıktan sonra İlişkili Alanları Arda Arda Güncelleştir ve İlişkili Alanları Arda Arda Sil seçimlerini işaretli olarak tasarımını tamamlarsan ana tablodan bir kayıt silindiğinde detay tablodaki kayıtlar otomatik olarak silinecektir ve ana tabloda bir değeri değiştirdiğinde detay tablodaki kayıtlara da yeni değer otomatik olarak yazılacaktır. Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Veri tabanlarında ana kayıt (master) silince detay kayıtları da sil seçeneği CASCADE olayı yoksa ve elle silme durumundaysanız öncelikle bağlı detayları silip ondan sonra ana tablodaki (master) kayıtı silmek daha uygun olacaktır :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

Mesaj gönderen zaxacm »

Çok teşekkürler
Peki , adoquery1e bağlı tabloda satışlar, adoquery2 ye bağlı tabloda ise o satışlara ait taksitler var.
suidbgrid1de satışları suidbgrid2de ise taksitleri gösteriyorum.
suidbgrid1den satışı seçince suidbgrid2de o satışa ait taksitleri nasıl gösterebilirim acaba.
yani suidbgrid1 in click olayında bunu göstermem lazım
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ADOQuery1 in bağlı olduğu DataSource1 i ADOQuery2 nin MasterSource una bağla ve Query nin select inde;

Kod: Tümünü seç

select * from taksit_tablosu
where musteri_id = :MUSTERI_ID and urun_id = :URUN_ID
burada :MUSTERI_ID ve :URUN_ID ADOQuery1 den gelen alanlardır :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

Mesaj gönderen zaxacm »

Çok teşekkürler oldu Allah Razı olsun. Peki kayıttan sonra suidbgridde kayıtlar güncellenmiyo.Kayıt olayından hemen sonra nasıl güncelleyebilirim listeyi.
zafira2001
Üye
Mesajlar: 1
Kayıt: 05 Oca 2008 01:44

sabanakman teşekkürler

Mesaj gönderen zafira2001 »

sabanakman arkadaşım googledan arayarak bu sayfayı buldum. accsess ilişkiler hakkında verdiğin kısa öz bilgi için teşekkür ederim inan beni büyük dertten kurtardın Allah senden razı olsun
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

zaxacm yazdı:Çok teşekkürler oldu Allah Razı olsun. Peki kayıttan sonra suidbgridde kayıtlar güncellenmiyo.Kayıt olayından hemen sonra nasıl güncelleyebilirim listeyi.
Geç gelen bir cevap olacak ama :) .

Eğer ADO bileşenleri kullanıyorsan ADOTable1.Requery; şeklinde yeni bilgiler taze taze gelecektir. Aksi halde tabloyu kapatıp açmak gerekecektir (Table1.Close; Table1.Open;).
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Adotable1.refresh yapman yeterlidir tazelemek için
Cevapla