dataset.delete

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

dataset.delete

Mesaj gönderen arkach »

Selamlar
dbgridde goruntulenmis olan bilgilerin print edeceklerimi secerek print etmek istiyorum we delete olayini tdatasource ile yapiyorum
benim sorunum shu ben
datasource1.dataset.edit;
if datasource1.dataset.fieldbyname('print').value=0 then
datasource.dataset.delete

diyorum ve bu satirlar benim tablemindeki datalarida delete ediyor ben istiyorumki sadece gridden delete(silsin) etsin ama tabloda kalsin
bbunu nasil yapabilirim
turkmenistandan selamlar
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

mrh
Bunun yolu kayıtlarınızı değişik parametrelere göre sorgulayarak
dbgridde göstermektir. Yada belli şartlara göre filtrelemek.
Dbgridden silinen kayıtlar tableden de silinir.
İstediğiniz kayıtları SQL ile sorgulayarak alın.
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

Mesaj gönderen arkach »

zaten query ile sorguluyorum we querynin kendisini kullanarak delete ettirmek istedigim zaman (mysql-mydac) table is read only hatasy veriyor
requestlive ve cachedupdates true
bu yola yapamadigimdan dolayi datasetle delete ettirmek istiyorum
yani grid uzerinden siliyorum
işlemler bittikten sonra datasette yapılan işlemleri iptal ettirmem gerek bunu nasil yaparim. cunku görünüm için silinen kayıtlar gerçek tablodan silinmemiş olacak.
turkmenistandan selamlar
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 »

Kod: Tümünü seç

select * from Tablo
 WHERE print<>0
veya

Kod: Tümünü seç

DataSet.Filter='print<>0';
DataSet.Filtered:=True;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

Mesaj gönderen arkach »

abi select ederken hepsinin gridde gozukmesi gerekiyor

q1.close;
q1.sql.text:='"+" as ttt,a.czship,w.czid from wizas w left join anket a on a.czid=w.czid where w.czid='+quotedstr(s);
q2.open;

datasouce1.dataset:=q2;

benim kayitlar gride aktariliyor ve simdi ben bunlarin icerisinden bazilarini print etmek istemiyorum print etmek istemedigimi ya gridden silecegim yada ttt fieldin icerigini - olacak ve onlar print edilmeyecek
/////
datasouce1.dataset.Edit;
if (datasouce1.dataset.FieldByName('ttt').AsString='+')
then datasouce1.dataset.FieldByName('ttt').AsString:=' '
else datasouce1.dataset.FieldByName('ttt').AsString:='+';
//datasouce1.dataset.Post; :arrow: dersem hata veriyor
o olmadan calisiyor ama alttaki kayida gectifgim zaman unknown fieldname ttt hatasy veriyor

sonra bende
datasouce1.dataset.Edit;
if (datasouce1.dataset.FieldByName('ttt').AsString='+') then
datasouce1.dataset.Edit;
datasouce1.dataset.delete

dedigim zaman tablodanda siliyor ben istiyorumki sadece gridden silsin
ilgileriniz icin allah razi olsun
turkmenistandan selamlar
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam çok basit bir metodu var bu işin. Bu metod dışındaki her uygulama, emin olun çok daha fazla zaman ve emek ister.

- Metod, veritabanına secimlik diye bir boolean alan eklemek. Bu boolean alan ne işe yarar

1. DBGrid'de insanlar bir kaydı mouse ile çift tıklarsa True değeri verdirilir, o satır farklı renkli göstrilebilir.

2. Toplu silme yapılacaktır, seçilenlerin bu alanı True yapılır, true olanlar DELETE FROM ile direkt silinir.

3. İstediğin türden yazıcı işlemlerinde döküm için filtrelemede kullanılır.

4. Bir kaç adımlı grup işlem yapılırken, diğer kayıtlar etkilenmesi diye, uygulama geçiren kayıtlar için TRUE değeri alır, mükerrer işlem yapma olasılığı ortadan kalkar.

vb. yaratcılığınızın üreteceği bir çok çözüm için işe yarar...

Başarılar...
Resim
Resim ....Resim
arkach
Üye
Mesajlar: 51
Kayıt: 28 Ara 2006 08:56

Mesaj gönderen arkach »

abi ben databaseden delete etmek istemiyorum sadece gorunumdekiyi silmek istiyorum
turkmenistandan selamlar
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 »

Aynı cevabı 2. kere veriyorum : :?
arkach yazdı:abi ben databaseden delete etmek istemiyorum sadece gorunumdekiyi silmek istiyorum
Senin olayın silmek değil filtrelemek.

Kod: Tümünü seç

DataSet.Filter='print<>0';
DataSet.Filtered:=True;
Daha sonrsa

Kod: Tümünü seç

DataSet.Filtered:=False;
koduyla da tekrar tüm kayıtlarına kavuşursun. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- DELETE demekle sil anlamında değil bunu da yapabilirsin anlamındaydı...

- Veritabanı tablona ekleyeceğin bir boolean alan ile ne kadar çeşitlilikte çözümler üretebileceğini listeledim.

- Daha açık bir ifade ile; @sabanakman'ın söylediği türden bir filtreleme için altyapı hazırlığıdır.
Resim
Resim ....Resim
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

ben olsam şöyle yapardım.nasıl olsa database den silinmeyecekse çektiğim sorguyu bi memory table a kaydederdim.gridden silince memory table dan silinir ama databaseden silinmez .yapılabilecek en kolay yol bu olurdu heralde.
Cevapla