Delphi Can
Table Flag ile Delete İşlemi - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Açık Kaynak Kodlu Yazılım & Bileşen & Geliştirici Araçları (https://www.delphican.com/forumdisplay.php?fid=100)
+--- Konu Başlığı: Table Flag ile Delete İşlemi (/showthread.php?tid=764)



Table Flag ile Delete İşlemi - witalihakko - 15-03-2017

Ş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


Table Flag ile Delete İşlemi - yhackup - 15-03-2017

CTRL + DEL yaparsam.


Table Flag ile Delete İşlemi - witalihakko - 15-03-2017

İş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.


Table Flag ile Delete İşlemi - yhackup - 15-03-2017

(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.


Cvp: Table Flag ile Delete İşlemi - Tuğrul HELVACI - 16-03-2017

Delphi tarafında bir şeyler yapacağım derseniz; TDataSet'in OnBeforeDelete olayını kullanabilir, işiniz bittikten sonra Abort çağrımında bulunabilirsiniz.