iyi günler arkadaslar
su an üzerinde calıstıgım projeyi ilk önce ADO ile yapmıstım sitedeki FB tavsiyelerine uyarak projemi intebase/fb ye cevirdim arama ekranımda edit2.text tin onchange olayına yazdıgım SQL cumlecigim
if edit2.Text <> '' then
begin
datadm.dm.depo.Close;
datadm.dm.depo.SQL.Clear;
datadm.dm.depo.SQL.Add('select * from depo');
datadm.dm.depo.SQL.Add('where depoad like '''+ edit2.Text +'%''and firma_kod=:firma');
datadm.Dm.depo.ParamByName('firma').Value:=user.anagiris.DBComboBox1.Text;
datadm.dm.depo.SQL.Add('order by depoad');
datadm.dm.depo.Open;
end;
bu sorguyu tibdataset ile kullandıgımda ye cevirdigim zaman
if edit2.Text <> '' then
begin
datadm.dm.ibsdsetdepo.Close;
datadm.dm.ibsdsetdepo.SelectSQL.Clear;
datadm.dm.ibsdsetdepo.SelectSQL.Add('select * from depo');
datadm.dm.ibsdsetdepo.SelectSQL.Add('where depoad like '''+ edit2.Text +'%''and firma_kod=:firma');
datadm.Dm.ibsdsetdepo.ParamByName('firma').Value:=user.anagiris.DBComboBox1.Text;
datadm.dm.ibsdsetdepo.SelectSQL.Add('order by depoad');
datadm.dm.ibsdsetdepo.Open;
end;
and satırını ayrı bir satırda da ekledim parantez içindede denedigim halde
on change olayında bir harfe dokundugumda SQL bana bos olarak geliyor
firma kodunu kaldırdıgımda ise zaten her hangi bir sorun yok ayrıcada anlayamadım ama forumda arastırdıgım kadarıyla % işaretini edit2.text başına yazdıgım da YAZILAN ifadelerle baslıyan kayıtların gelmesi gerekmekte ama bu sekilde yazınca ancak dogru calıstı yani edit2.text ten sonra % şaretini koyarsam dogru calısıyor.....
bunun sebebini anlayamadım yardımlarınız için tesekkurler.....
FB de yaptıgım sorgu ADO daki gibi calısmıyor
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
merhaba.
bildiğim kadarıyla yüzde işaretini edit2.text ten yazınca girilen harf ile başlayan kayıtlar getirilir. hem başına hemde sonuna yazılırsa yazılan harf başta ortada veya sonda olsun o harf ile başlayan kayıtlar listelenir. eğer % işareti yazılmazsa bu sefer ( = ) eşitliğin sağlandığı kayıtlar getirilir.
ikinci olarak önce firma kodu ile eşleştirme yapın. daha sonra like i kullanın.
bu durumda firma_kod = firma eşitliği sağlanacak ve eşitliği sağlanan kayıtlardaki edit2 ye yazılan harf ile başlayan kayıtlar getirilecek.
bildiğim kadarıyla yüzde işaretini edit2.text ten yazınca girilen harf ile başlayan kayıtlar getirilir. hem başına hemde sonuna yazılırsa yazılan harf başta ortada veya sonda olsun o harf ile başlayan kayıtlar listelenir. eğer % işareti yazılmazsa bu sefer ( = ) eşitliğin sağlandığı kayıtlar getirilir.
ikinci olarak önce firma kodu ile eşleştirme yapın. daha sonra like i kullanın.
Kod: Tümünü seç
if edit2.Text <> '' then
begin
datadm.dm.ibsdsetdepo.Close;
datadm.dm.ibsdsetdepo.SelectSQL.Clear;
datadm.dm.ibsdsetdepo.SelectSQL.Add('select * from depo');
datadm.dm.ibsdsetdepo.SelectSQL.Add('where firma_kod=''firma''');
datadm.dm.ibsdsetdepo.SelectSQL.Add('and depoad like '''+ edit2.Text +'%''');
datadm.Dm.ibsdsetdepo.ParamByName('firma').Value:=user.anagiris.DBComboBox1.Text;
datadm.dm.ibsdsetdepo.SelectSQL.Add('order by depoad');
datadm.dm.ibsdsetdepo.Open;
end;
benim bir projedemdeki kod şöyle orada da % işareti text ten sonra. veritabanımda firebird. sizinki gibi iki adet veriye göre sorgulama yapıyor. ben hiçbir sorunla karşılaşmadım.
yapısal bri hata yaptığınızı sanmıyorum. eğer % yi sona koyunca çalışıyorsa demekki doğrusu o şekildedir.
kolay gelsin.
Kod: Tümünü seç
if CeComboBox1.Text = '' then
showmessage('Lütfen işlem yılını seçiniz.')
Else
begin
ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('Select * From IZIN');
ibquery1.SQL.Add('where ISLEMYILI ='''+CeComboBox1.Text+'''');
ibquery1.SQL.Add('AND ADISOYADI LIKE '''+CeEdit2.Text+'%'' order By ADISOYADI');
ibquery1.Open;
end;
kolay gelsin.