FB de yaptıgım sorgu ADO daki gibi calısmıyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cuneytak
Üye
Mesajlar: 18
Kayıt: 27 May 2005 12:36

FB de yaptıgım sorgu ADO daki gibi calısmıyor

Mesaj gönderen cuneytak »

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.....
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

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.

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; 
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.
cuneytak
Üye
Mesajlar: 18
Kayıt: 27 May 2005 12:36

Mesaj gönderen cuneytak »

y.kulac cevabın için tesekkur ederim ama yine bos geliyor . dedigim gibi bende % işaretini basta kullanmak gerekiyor diye biliyorum ama dogru olarak boyle calısıyor bende anlamadım . Korkum acaba yapısal olarak bir hata yapmış olmak ....
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

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.

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;
yapısal bri hata yaptığınızı sanmıyorum. eğer % yi sona koyunca çalışıyorsa demekki doğrusu o şekildedir.
kolay gelsin.
cuneytak
Üye
Mesajlar: 18
Kayıt: 27 May 2005 12:36

Mesaj gönderen cuneytak »

projem de ibquery kullanmadım cunku sonuc olarak donen veriler üzerinde calışacagım BDATASET Kullandıgım için olabilirmi bilmiyorum ibquery ekleyerek deneyecegim .


İlgin için tesekkur ederim
cuneytak
Üye
Mesajlar: 18
Kayıt: 27 May 2005 12:36

Mesaj gönderen cuneytak »

y.kulac kardeş parambyname kullanmak yerine where kelimesinin içinde direk olarak +ornek.text+ kullanınca calıstı tesekkur ederim
Cevapla