Kayıt Silme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Kayıt Silme

Mesaj gönderen vedatkaba » 25 Kas 2004 01:57

Merhaba arkadaşlar hepinize kolay gelsin

benim sorum şu..2 tane tablo var bunlar birbirine bağlı..
tablo1 deki kayıt silindiği zaman tablo ikideki kayıtlardan sadece tablo 1 le ilişkili olanları nasıl sildirebilirim.

Tablo1 tablo2
Kayıt1 Kayıt1
Kayıt2
Kayıt3

Kayıt1 etkin iken TAblo2 den bu 3 kayıt görünüyor diyelim.
tablo1 deki kayıt1 i sildik tablo2 deki kayıt1,kayıt2,kayıt3 (hepsini) nasıl sildirebilirim.Fikri olan yardımcı olursa sevinirim.


Herkese Kolay gelsin..........
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7506
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek » 25 Kas 2004 02:15

Merhaba,

2 yolu var :

1. Referential integrity ile yapacaksın. Master silinince detayları da sil diyeceksin. Veritabanı silecek.

2. Manuel olarak kodla sileceksin. Mesela 12 nolu kaydı siliyorsan

DELETE FROM DETAY
WHERE NO=12

gibi bir kod çalıştıracaksın.

Kolay gelsin.

Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Cevap

Mesaj gönderen vedatkaba » 25 Kas 2004 02:41

Tamam anladımda biraz daha açarmısınız.

Bu programı mutlaka yapmam lazım..
Ben table kullanıyorum.
bunu table da yapmak istiyorum.......


Query de yazıyorum ama table başladım işe query'e geçiş yaptığımda hatalar var.

o zaman table da olmazsa hem table kullanarak hemde query le nasıl yapabilirim.

Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7506
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek » 25 Kas 2004 03:04

:ara query delete

Kolay gelsin.

Kullanıcı avatarı
idalan
Üye
Mesajlar: 58
Kayıt: 25 Şub 2004 02:14
Konum: Üsküdar
İletişim:

Mesaj gönderen idalan » 25 Kas 2004 03:12

mesela iki tablonda ıd numarası ile birbirine bağlantı kurmuş olduğunu varsayalım. Hangi tablodan kayıt sileceksen buradaki ıd alanındaki numarayı al, diğer silmek istediğin tabloda arama yaptır. Sonuç bulunduğunda istediğin alanları silersin.
Çözemezsen daha açık yazarım. Ama bu tafsiye edilen bir yöntem değil bence mustafa beyin dediği şekilde veri tabanından yaparsan daha iyi olur.
Fikren emir almazsan, esir olursun ikisinin ortası yoktur.

Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Cevap

Mesaj gönderen vedatkaba » 25 Kas 2004 04:38

Sizin dediğiniz yöntem'i daha açık şekilde yazabilirmisiniz.

Query kullanarak başka bir şekilde çözme imkanı varmı...

birazdaha detaylı bir fikir alabilirmiyim...Programın yavaşlamasını istemiyorum...


Kolay gelsin...........
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

highmemo

Mesaj gönderen highmemo » 25 Kas 2004 04:51

Vedat slm, detayına inmeden (DB Trigger, BD Procedure, DB Foreign Vs.) yapmak istiyorsan şunu kullan...
Sanırım Table1 ve Table2 birbirine bağlı ekranda. Table1 deki aktif kayıt değiştiğinde Table2 yenileniyor ve Bağlı olanlar gösteriliyor...

o zaman Table1 in onBeforeDelete olayına şunları yaz!

Kod: Tümünü seç

 
  Table2.DisableControls;
  try
    while not Table2.isEmpty do Table2.Delete;
  finally
    Table2.EnableControls;
  end;

yada biraz hızlı olsun istiyorsan!
Delete Button tıklandıktan sonra

Kod: Tümünü seç


   Qry.Close; 
   Qry.SQL.Clear;
   Qry.SQL.Add('DELETE FROM TABLE2 ');
   Qry.SQL.Add('WHERE MASTER_KOD= :pKOD');
   If not Qry.Prepared then Qry.Prepare;
   Qry.ParamByName('pKOD').asString := Table1MasterKod.AsString;
   Qry.ExecSQL;
 
   Table1.Delete; // Ana kaydıda sil


elektron2811
Üye
Mesajlar: 4
Kayıt: 15 Eki 2005 10:11

Mesaj gönderen elektron2811 » 10 Ara 2005 08:52

Bunu için trigger kullansan daha iyi olmaz mı?Forumda bu konuda çok bilgi var..

Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 06 Haz 2004 11:35

Mesaj gönderen pasa_yasar » 11 Ara 2005 12:21

bence table.delete kullanma daha önce yaptığım programlarda table silerken hata verdi veya gridle ilişkili olduğu için tam silmedi. buda çok ciddi sorunlar çıkarır. bazen tam siler fark edemeyebilirsin.ekranda ana id silinse bile raporlarda sorun yaşarsın ve veritabanı gereksiz yere şişer. en iyisi query kullanmandır.

query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Delete from satisbilgi where takipno='+table1autono.AsString);
query1.ExecSQL;

Cevapla