Silme İşlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
denizfatihi

Silme İşlemi

Mesaj gönderen denizfatihi »

Selamünaleyküm arkadaşlar,
aşağıdaki kodun neresi hatalı olabilir yardımlarınız için şimdiden teşekkürler....

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if not IBDataSet1.Active then
IBDataSet1.close;
IBDataSet1.Delete;
IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
IBDataSet1.ExecSQL;
end;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

tırnaklar hatalı olabilir. REF_NO alanı bana integermış gibi geldi.
ikut

Re: Silme İşlemi

Mesaj gönderen ikut »

denizfatihi yazdı:Selamünaleyküm arkadaşlar,
aşağıdaki kodun neresi hatalı olabilir yardımlarınız için şimdiden teşekkürler....

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if not IBDataSet1.Active then
IBDataSet1.close;
IBDataSet1.Delete;
IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
IBDataSet1.ExecSQL;
end;
tırnakları elle yazmak yerine quotedstr kullanın kod daha temiz olur. diğer yandan diğer arkadaşın dediği gibi alanın integer olma ihtimalide var
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 »

if not IBDataSet1.Active then // Zaten kapalı dataseti
IBDataSet1.close; // Kapalı hale getiriyorsunuz
IBDataSet1.Delete; // Kapalı datasette silme işlemi yapıyorsunuz
IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+''''); // Önceki sql stringini temizlemeden yeni sql stringi ekliyorsunuz. bu 4 satır yanlış

Doğru kod

If IBDataSet1.Active Then IBDataSet1.Close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Biz ayrıntılara öyle odaklanmışız ki basit hataları atlıyoruz sanırım :)
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar
IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
SelectSQL de Delete SQl cümleciği yanlış...

doğrusu

Kod: Tümünü seç

IBDataSet1.DeleteSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Sql cümlesini temizlemesine gerek yok.yine çalışır.Ib de emin değilim.
dataset kapalı silme işlemi yapılıyor ondan bencede..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Sql cümlesini temizlemesine gerek yok.yine çalışır
hata mesajı alırsın ki gayet normal olur. daha önce var olan SQL text sorun yaşatır.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Silme İşlemi

Mesaj gönderen Lord_Ares »

bu cevap biraz karışmış hangisi doğru olan kodu tam olarak paylaşabilirmisiniz..

Kod: Tümünü seç

IBDataSet1.DeleteSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');

Kod: Tümünü seç

IBDataSet1.SelectSQL.Add('DELETE FROM DATA WHERE REF_NO='''+Edit23.Text+'''');
ben aşağıdaki gibi ( belli bir şarta bağlı kayıtları örnek satışkodu 5 olanlar gibi ) bir silme işlemi yapıyorum.
Buradaki sorun silme işlemi bittikten sonra her seferinde select * from diyerek alanları tekrar seçiyor ve datayı kapatıp açıyorum.
Bunu yapmadan silmenin yolu varmı, bu şekilde kapatıp açarken başka bir kullanıcı o datayı kullanıyorsa sorun olmazmı.

Kod: Tümünü seç


TTURDETAY.close;
TTURDETAY.SelectSQL.Clear;
TTURDETAY.SelectSQL.Text:='Delete from TURDETAY where SATISKODU='+QuotedStr(IntToStr(DataM.TTURSATISARTANKOD.AsInteger));
TTURDETAY.ExecSQL;
TTURDETAY.Close;
TTURDETAY.SelectSQL.Text:='select * from TURDETAY';
TTURDETAY.Open;

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Silme İşlemi

Mesaj gönderen mrmarman »

:ara Başlıkları bağlamak için bkz. forumdaki şu link
Resim
Resim ....Resim
Cevapla