ibquery de arama problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

ibquery de arama problemi

Mesaj gönderen serkan »

dataFRM.eskicarihrk.Close;
dataFRM.eskicarihrk.SQL.Clear;
dataFRM.eskicarihrk.SQL.Add('select * from carihrk where carikod like ''%'+E1.Text+'%'''+ 'AND unvan like ''%'+E2.Text+'%''' + 'and evrakno like ''%'+E3.Text+'%''');
dataFRM.eskicarihrk.Open;

arkadaşlar yukarıdaki kodlar sonuç döndürüyor ama arama yapılan 3 alanada veri girilmiş olması gerekiyor....yani tüm editlar boşken kod çalıştığında mesela ünvan alanına bilgi girilmemiş kayıtları göstermiyor..bunu nasıl engelliyebilirim..
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba
dataFRM.eskicarihrk.Close;
dataFRM.eskicarihrk.SQL.Clear;
dataFRM.eskicarihrk.SQL.Add('select * from carihrk where carikod is not null');
if e1.text<>'' then dataFRM.eskicarihrk.SQL.Add('and carikod like '+Quotedstr('%'+E1.Text+'%');
if e2.text<>'' then dataFRM.eskicarihrk.SQL.Add('and unvan like '+Quotedstr('%'+E2.Text+'%');
if e3.text<>'' then dataFRM.eskicarihrk.SQL.Add('and evrakno like '+Quotedstr('%'+E3.Text+'%');
dataFRM.eskicarihrk.Open;
İpucu : 3 Alanda like metodu kullanman performansta düşüş demektir. Prepare metodu kullanmalısın.

Başarılar,
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

önce şu sorunun çözümünü bulsam performansı sonra düşünürüm...
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Verdiğim Kod ile çözebildinmi yoksa çözemedinmi, eğer çözemedin ise Quotedstr() kelimesini çıkarıp deneyebilirmisin...
denizuzun

Mesaj gönderen denizuzun »

ben sql ile sorgu yazmam gerektiginde;

ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add('select * from musteri');
ibquery1.sql.add('where');
//_imdi 5 farkli alan aramamiz gereksin...

ibquery1.sql.add('alan1 like "'+edit1.text+'%" ');// bu mutlak deger olmasi gerekiyor diger 4 alan ise

if edit2.text >'' then begin ibquery1.sql.add('and');
ibquery1.sql.add('alan2 like "'+edit1.text+'%" ');
end;

if edit3.text >'' then begin ibquery1.sql.add('and');
ibquery1.sql.add('alan3 like "'+edit1.text+'%" ');
end;

buna benzer istedigin kadar alan aramasi yapabilirsin ben 11 farkli alan sorguladim ve hic bir sorun çikmadi

kolay gelsin
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Makaleler bölümünde bunun için yazdığım bir bileşen mevcut.

viewtopic.php?t=8668
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

cevaplar için teşekkürler..izinde olduğumdan deneyemedim...
ama sizin elinizden kurtulmaz sizde olduysa bdede olur
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

ender hocam verdiğin kodlar işe yaradı bu kodlara tarih,alacak,borc alanlarınıda eklemek istiyorum fakat onlar like olmayacak birebir eşit olanları bulacak onu nasıl yapcaz..yardımcı olursan sevinirim...



dataFRM.eskicarihrk.Close;
dataFRM.eskicarihrk.SQL.Clear;
dataFRM.eskicarihrk.SQL.Add('select * from carihrk where carikod is not null');
if e1.text<>'' then dataFRM.eskicarihrk.SQL.Add('and carikod like '+Quotedstr('%'+E1.Text+'%');
if e2.text<>'' then dataFRM.eskicarihrk.SQL.Add('and unvan like '+Quotedstr('%'+E2.Text+'%');
if e3.text<>'' then dataFRM.eskicarihrk.SQL.Add('and evrakno like '+Quotedstr('%'+E3.Text+'%');
dataFRM.eskicarihrk.Open
Cevapla