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;
Bu sql kodunda hata nerede
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bu sql kodunda hata nerede
Ahmet DENİZ
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
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
Re: Bu sql kodunda hata nerede
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;
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
Kod: Tümünü seç
Params[0].AsString := SqlSoruAdi;
Kod: Tümünü seç
ParamByName('SORGU').AsString := SqlSoruAdi;
kolay gelsin
öncelikle cevaplar için teşekkürlerundefined 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
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