Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Table Flag ile Delete İşlemi
#1
Şimdi Table Flag ile neyi kastettim öncelikle ondan bahsetmek istiyorum. Normal şartlarda bizim bir veri tablosundan beklentimiz, biz değiştirelim,silelim,ekleyelim ama kaydetmesin, biz kaydet dediğinde kaydetsindir. Fakat bir Dataset kullandığımız zaman bu işlemleri yapmak direkt veritabanı nı etkilemektedir. Bu yüzden de bunlar için Dataset imize bayraklar ekleyerek ilgili kaydın durumunu kontrol altında tutabiliriz. Bunu aşağıdaki örnekte Delete işlemi için yaptım. Biraz daha ilerisini düşündüğümüzde, yapılacak şey ise ana verinin kopyasını alıp bu kopya üzerinde işlemler yaptıktan sonra Flag'lere bağlı olarak asıl veriyi güncelleme işlemidir.

Örnekte sadece Delete Flag ı attırıyorum fakat herhangi bir silme işlemi yaptırmıyorum. Sadece örnek olması açısından bu şekilde yaptım. Bu düşünce tarzı ile Listview'e yüklenen verilerde de Listview datasına ilgili kaydın Flaglerini ekleyebilir, işlemler yaptırabiliriz. 

Örnekte DEL tuşu Delete Flagı atmaktadır. Tekrar DEL tuşuna basarak ilgili Flag i geri alıyorum. Flag koyma kolonunu eklemek için Clientdataset bileşenine benim veritabanımda olmayan DELETED adında bir kolon ekliyorum. Bu kolonun tipi Calculated. Aynısı ADOQuery içinde geçerli. Bu kolonu Flag kolonu olarak kullanıyorum. Eğer DEL tuşuna basarsam bu kolonuda 1 olarak güncelliyorum. Tabiki bu kolon veritabanımda olmadığı için bir sıkıntı yaratmıyor. Basit mantık bu şekilde.

Biraz üzerinde çalışıldıktan sonra eminim güzel bir bileşen veya class haline getirebilirsiniz.

qbPzBd.gif

Kaynak kod:
Buradan kaynak kodları indirebilirsiniz | Yandex Disk
WWW
Cevapla
#2
CTRL + DEL yaparsam.
WWW
Cevapla
#3
İşte o zaman sıkıntı büyük olur Smile Biraz kod teröristliği yapıp kaynak koddan Keypress eventinde CTRL tuşunu kapatabilirsin yada direk kendi Keypresinde CTRL tuşunu kapatabilirsin.
WWW
Cevapla
#4
(15-03-2017, Saat: 10:29)witalihakko Adlı Kullanıcıdan Alıntı: İşte o zaman sıkıntı büyük olur Smile Biraz kod teröristliği yapıp kaynak koddan Keypress eventinde CTRL tuşunu kapatabilirsin yada direk kendi Keypresinde CTRL tuşunu kapatabilirsin.

Denemedim ama Roolback ve Commit dbgridde kullanılamıyor mu ?

Ben genelde bu gibi işlemlerde, silinen öğeyi, Trigger ile geri dönüşüm kutusu olarak hazırladığım bir tabloya atarım. ilgili tablodan silinir bu tabloya gider.
WWW
Cevapla
#5
Delphi tarafında bir şeyler yapacağım derseniz; TDataSet'in OnBeforeDelete olayını kullanabilir, işiniz bittikten sonra Abort çağrımında bulunabilirsiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi