sql de şartlı kayıt silme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

merhaba arkadaşlar.benim bir problemim var.sorunu çözemedim.sizden yardım bekliyorum.sorun şu:
AKTIF_KULLANICILAR isimli bir trablom var.tablom da BASLAMA_TARIHI isimli bir alanım var.foruma edit2.text ekledim.ben kod ile şunu yaptıracağım: BASLAMA_TARIHI edit2.text içindeki tarihden küçük olan kayıtların hepsini sil.
kendimce şu kodu yazdım ama kayıtların hepsini sildi. :( :? :? :?

begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<''Edit2.Text''');
ExecSql;
end;

yada edit2.text kullanmadan BASLAMA_TARIHI bugünden küçük (sistem tarihinden küçük) olanların hepsini sil de yaptırabiliriz.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: sql de şartlı kayıt silme

Mesaj gönderen unicorn64 »

Edit2.Text i sql stringinin içine yazdığınız için sql doğru oluşmamış,
sorguyu string bir değişkene alıp debug ederek görebilirsiniz bu durumu.

sorgularınızı parametre kullanarak yaparsanız tırnak işareti, tip uyumsuzluğu vs sorunları yaşamazsınız
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

Re: sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

vt de sql server kullandım.alanım varchar olarak seçtim.alşanı tarih yapmam yeterli olur mu ki?yazdığım kod da nasılş bir yanlış var anlamadım :(
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

Re: sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

bu konuda yazabileceğim bir kod yok mu? yada yazdığım kodu düzenleyip gönderebilir misiniz?
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: sql de şartlı kayıt silme

Mesaj gönderen White Rose »

SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<''Edit2.Text''');
yerine
SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<'''+Edit2.Text+'''');
şeklinde deneyin.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: sql de şartlı kayıt silme

Mesaj gönderen unicorn64 »

tarih alanı üzerinden filtreleme yaparken doğrudan string alandan değer aktarmak çok riskli, ilk mesajınızda belirttiğiniz gibi tarih formatına uygun olmayan değer girildiğinde istenmeyen sonuçlar ortaya çıkar...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

Re: sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<'''+Edit2.Text+'''');
DENEDİM AMA YİNE ÇALIŞMADI.HEPSİNİ SİLİYOR GÖRÜNÜYOR AMA VT GİRİP BAKTIĞIMDA KAYITLAR HALA GÖRÜNÜYOR.
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

Re: sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

hocam aşağıdaki kodu yazdım.gerçi sizin verdiğniiz kod şöyle dikkatlice bi daha yazdım.ve denedim:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<'''+Edit2.Text+'''');
ADOQuery1.ExecSQL;

sonuç: tüm kayıtları grid de silinmiş gösteriyor.sonra vt ye girdim şarta uyan yani BASLAMA_TARIHI<'''+Edit2.Text+ olanlar vt silinmiş...ama programda neden tüm kayıtlar silinmiş gösteriyor da vt de sadece şarta uyanlar siliniyor?grid de kayıt hiç kalmıyor ama vt de var.enteresan...acaba en son adoqury mi açmıyor ondan mı göstermiyor?
zeynel63
Üye
Mesajlar: 14
Kayıt: 15 Oca 2014 03:41

Re: sql de şartlı kayıt silme

Mesaj gönderen zeynel63 »

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DELETE FROM AKTIF_KULLANICILAR WHERE BASLAMA_TARIHI<'''+Edit2.Text+'''');
ADOQuery1.ExecSQL;

KODUNUN SONUNA
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM AKTIF_KULLANICILAR');
ADOQuery1.OPEN;

YAZIM...YANİ ADOQURY TEKRAR AÇTIRDIM VE ÇALIŞTI.HATA BENDEN KAYNAKLANIYORMUŞŞ...
SAYENİZDE ÇÖZDÜM HOCAM...ÇOK AMA ÇOK TEŞEKKÜR EDERİM... :)
Cevapla