birden fazla kritere göre arama

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

birden fazla kritere göre arama

Mesaj gönderen Misafir »

query1.SQL.Add('select * from musteri where firma like ''' + Edit1.Text + '%'' or tarih like ''' + Edit2.Text + '%''')


4 tane edit nesne si var..kullanıcı hangilerine veri girerse ona göre sorgu yapacak db de..

yukardaki kod ta type mismatch error...hatası veriyor...
Misafir

Mesaj gönderen Misafir »

edit2 yerine datetimepicker kullanıyorum
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Tarih alanına editteki değeri direkt gönderme. Hangi veritabanını kullanıyorsun bilmiyorum ama mesela SQL Server yyyy-aa-gg şeklinde alır tarihi, eğer farklı formatta bir değer gönderirsen tarih alanına hata verir. Oyüzden şöyle kullan:

Kod: Tümünü seç

query1.SQL.Add('select * from musteri where firma like ''' + Edit1.Text + '%'' or tarih = :tarih');
ParamByName('tarih').AsDate := StrToDate(edit2.Text);
Not: ayrıca yazdığın kodda bir tırnak unutmuşsun!
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bir edite bilgi girip digerlerine girmezsen
soyle bir durum olur
mesela edit1'e a girdi
sql cumlen
select * from musteri where firma like a% or tarih like %
olacak burada bir syntax hatası vemeliydi

ama tarih like ile kullanılmıs bunun da bu sekilde olmaması gerekirdi

su sekilde kullanabilirsin:

Kod: Tümünü seç

if edit1.text<>'' then 
  sqlstr:=sqlstr:='select * from musteri where firma like '+edit1.text+'%';
else if edit2.text<>'' then 
  sqlstr:='select * from musteri where tarih='+edit2.text;
aradaki ifade or oldugu icin bu mantık calısır diye umuyorum
and olsa idi daha farklı yapmak gerekecek
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

Naile hocam burada

Kod: Tümünü seç

query1.SQL.Add('select * from musteri where firma like ''' + Edit1.Text + '%'' or tarih = :tarih'); 
ParamByName('tarih').AsDate := StrToDate(edit2.Text);
edit2.text yerine DateTimePicker1.Date kullanılamaz mı?
"İlmin anası sormaktır"
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

mpolat yazdı:Naile hocam burada

Kod: Tümünü seç

query1.SQL.Add('select * from musteri where firma like ''' + Edit1.Text + '%'' or tarih = :tarih'); 
ParamByName('tarih').AsDate := StrToDate(edit2.Text);
edit2.text yerine DateTimePicker1.Date kullanılamaz mı?
Kulanılır tabiki

Kod: Tümünü seç

  ParamByName('tarih').AsDate := DateTimePicker1.Date;
Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

Teşekkür ederim sağolun. :D
"İlmin anası sormaktır"
Cevapla