Bu sql kodunda hata nerede

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
AhmetNuri
Üye
Mesajlar: 262
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Bu sql kodunda hata nerede

Mesaj gönderen AhmetNuri »

Merhaba

çok basit bir kod yazdım normalde çalışmasını bekliyordum. ama çalışmadı. Acaba saatlardir kodlarla uğraştığım için bir yerleri gözde mi kaçırıyorum? diye bir de size sorayım dedim. ibx bileşenleri ile firebird veri tabanı için:
Sqld tablosundan sqlsorguadi adlı değişkenden girilen string i aramalı
sonuç boş dönüyor
procedure TFrmMain.SqlBul( SqlSoruAdi: string);
begin
with FrmMain.IBDataSetSqlD do
begin
Close;
SelectSQL.Clear;
SelectSQL.Add('select * from SqlD');
SelectSQL.Add(' where SQLD_SORGUADI like '+ ':'+ SqlSoruAdi);
Params[0].AsString := SqlSoruAdi;
Open;
end;
Ahmet DENİZ
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Merhaba,
Lütfen Code larınızı code taglarının arasına alarak yazın.

Sql'i her sorguda tekrar tekrar neden yazdırıyorsun. Bir kere yazdırıp, parametreyle kontrolünü sağlayabilirsin. Program akışı biraz mantıksız, aynı stringle ":" ile parametre yapıp, sonra o parametreye o stringin değerini aktarmaya çalışıyorsun.

Ayrıca kodla Sql'de değişiklik yaptığın zaman datasetin parametreleri algılaması için prepare yapman gerekiyor olabilir. örn : IBDataSetSqlD.Prepare; gibi
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Bu sql kodunda hata nerede

Mesaj gönderen Lost Soul »

Kod: Tümünü seç

procedure TFrmMain.SqlBul( SqlSoruAdi: string);
begin
  with FrmMain.IBDataSetSqlD  do
  begin
    Close;
    SelectSQL.Clear;
    SelectSQL.Add('select * from SqlD');
    SelectSQL.Add(' where SQLD_SORGUADI like :SORGU');
    Params[0].AsString := SqlSoruAdi;
    Open;
end;
LIKE deyimi için alternatifler

Kod: Tümünü seç

    Params[0].AsString := '%'+SqlSoruAdi;// İLE BİTEN
    Params[0].AsString := SqlSoruAdi+'%';// İLE BAŞLAYAN
    Params[0].AsString := '%'+SqlSoruAdi+'%'; //İÇİNDE GEÇEN

    SelectSQL.Add(' where UPPER(SQLD_SORGUADI) like :SORGU');
    Params[0].AsString := uppercase(SqlSoruAdi);// BÜYÜK KÜÇÜK HARF DUYARLILIĞI YOK
ayrıca

Kod: Tümünü seç

    Params[0].AsString := SqlSoruAdi;
yerine

Kod: Tümünü seç

    ParamByName('SORGU').AsString := SqlSoruAdi;
şeklinde de kullanılabilir.
kolay gelsin
AhmetNuri
Üye
Mesajlar: 262
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Mesaj gönderen AhmetNuri »

undefined yazdı:Merhaba,
Lütfen Code larınızı code taglarının arasına alarak yazın.

Sql'i her sorguda tekrar tekrar neden yazdırıyorsun. Bir kere yazdırıp, parametreyle kontrolünü sağlayabilirsin. Program akışı biraz mantıksız, aynı stringle ":" ile parametre yapıp, sonra o parametreye o stringin değerini aktarmaya çalışıyorsun.

Ayrıca kodla Sql'de değişiklik yaptığın zaman datasetin parametreleri algılaması için prepare yapman gerekiyor olabilir. örn : IBDataSetSqlD.Prepare; gibi
öncelikle cevaplar için teşekkürler
Bu kodu yazmamdaki amaç şu programda kullandığım tüm sql cümlelerini veri tabanına yazıyorum. ihtiyacım olduğu zaman bir prosedur ile istediğim sql cümlesini oradan çekiyorum. bu sahede aynı sql cümlesini tekrar tekrar yazmıyorum ve tüm sql ler gözümün önünde oluyor.
Ahmet DENİZ
Cevapla