Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sql like sorgusunda boşluk karakteri
#1
Arkadaşlar, delphi XE'de zeoslib ile firebirde bağlanıyorum. sql like ile olan bir sorguda ör (select * from musteri where musteri like :MS ) gibi bir sorguda Delphi dersem sonuç geliyor Can dersem geliyor Delphi Can dediğim  zaman sonuç boş dönüyor ama esas kayıt aslında Delphi Can diye. Bu tür bir sıkıntı yaşamış olanınız var mı acaba ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#2
ilginç ben şu şekilde kullanıyorum
qry_cariarama.Sql.Text:='SELECT FIRST 100 * from CARILER WHERE '+cmb_aranacakalan.text+' like   '+ QuotedStr('%'+edt_ara.Text+'%')+'';
böyle bir deneyin bir fark olacakmı.

“Do. Or do not. There is no try.”
Cevapla
#3
Öyle bir aramada sorun olmuyor. Zeoslib'in parametreleri çok sıkıntılı. Virgüllü sayılarda, 10 karakterden sonra stringlerle ve bu sorunla karşılaştım. Belki güncel sürümü düzgündür ama güncellemeye cesaret edemiyorum
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
Yüzde kullanmadığınız durumda esasen "like" ile "=" arasında bir fark yoktur, fakat sizin yazdığınızdan anladığım bileşen hiç yüzde yoksa başa yüzde ekliyor gibi duruyor çok mantıklı gelmesede. Aramanızın başına ve sonuna % işaretleri ekleyerek arama yapmayı dener misiniz
Cevapla
#5
Aramaların başına yüzde ekliyorum. Bileşenin o tür bir adeti yok. Son yaptığım çalışmada sql kodunu stored procedure içine ekledim. 
Bu kez boşluk sorunu çözüldü parametre kullanarak boşluk içeren sorgu gönderebiliyorum. Tek aşmam gereken büyük / küçük ı i harfleri

BEGIN
for  SELECT kod, firma
  FROM musteri 
  where MUSTERI.KOD like UPPER(:BK) or UPPER (MUSTERI.FIRMA) 
like  UPPER (:BK) or  LOWER (MUSTERI.FIRMA) like  LOWER (:BK)
or UPPER (MUSTERI.ADRES) like  UPPER (:BK) or  LOWER (MUSTERI.ADRES) like  LOWER (:BK) 
or UPPER (MUSTERI.IL) like  UPPER (:BK) or  LOWER (MUSTERI.IL) like  LOWER (:BK)  
or UPPER (MUSTERI.ILCE) like  UPPER (:BK) or  LOWER (MUSTERI.ILCE) like  LOWER (:BK)
group by MUSTERI.KOD, MUSTERI.FIRMA
into :kod,:firma do 
begin
SUSPEND;
END
END

Çakır olarak kayıtlı bir firmayı ÇAKIR diye aratırsam gelmiyor   ama kısmet diye arattığım firma kismet diye de aratsam geliyor
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
Firebirdin uzmanı değilim fakat collation konusunu araştırırsanız sorununuzun çözüleceğini düşünüyorum;

Şu linki inceleyin;

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#7
(06-08-2017, Saat: 12:33)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlArkadaşlar, delphi XE'de zeoslib ile firebirde bağlanıyorum. sql like ile olan bir sorguda ör (select * from musteri where musteri like :MS ) gibi bir sorguda Delphi dersem sonuç geliyor Can dersem geliyor Delphi Can dediğim  zaman sonuç boş dönüyor ama esas kayıt aslında Delphi Can diye. Bu tür bir sıkıntı yaşamış olanınız var mı acaba ?

Basit bir önerim var aslında, kullanıcı yazıyı yazdıktan eğer "Enter" tuşu ile sorgu gönderiliyorsa, trim ile boşluklar silinip arama yapılabilir. Veya sorguda ki parametrenizi trim olarak çağırın, boşluk probleminden kurtulmuş olursunuz Smile
Eski dos'tan windows olmaz.
Cevapla
#8
Trim zaten yapiyorum esas sıkıntı ortadaki bosluklarda
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#9
(07-08-2017, Saat: 11:21)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAramaların başına yüzde ekliyorum. Bileşenin o tür bir adeti yok. Son yaptığım çalışmada sql kodunu stored procedure içine ekledim. 
Bu kez boşluk sorunu çözüldü parametre kullanarak boşluk içeren sorgu gönderebiliyorum. Tek aşmam gereken büyük / küçük ı i harfleri

BEGIN
for  SELECT kod, firma
  FROM musteri 
  where MUSTERI.KOD like UPPER(:BK) or UPPER (MUSTERI.FIRMA) 
like  UPPER (:BK) or  LOWER (MUSTERI.FIRMA) like  LOWER (:BK)
or UPPER (MUSTERI.ADRES) like  UPPER (:BK) or  LOWER (MUSTERI.ADRES) like  LOWER (:BK) 
or UPPER (MUSTERI.IL) like  UPPER (:BK) or  LOWER (MUSTERI.IL) like  LOWER (:BK)  
or UPPER (MUSTERI.ILCE) like  UPPER (:BK) or  LOWER (MUSTERI.ILCE) like  LOWER (:BK)
group by MUSTERI.KOD, MUSTERI.FIRMA
into :kod,:firma do 
begin
SUSPEND;
END
END

Çakır olarak kayıtlı bir firmayı ÇAKIR diye aratırsam gelmiyor   ama kısmet diye arattığım firma kismet diye de aratsam geliyor

 O zaman tek sıkıntı "Türkçe karakterler" ise DelphiTürkiye'de bahsi geçmiş, bir function oluşturarak deneyebilirsiniz.

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


Saygılarımla,
İyi çalışmalar.
Eski dos'tan windows olmaz.
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi