Sql Like Problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Sql Like Problemi

Mesaj gönderen yuksel2004 »

Datasetim Sorgu adında bir IBDataset
ADISOYADI ve MUSTERIKODU alanları VarChar tipinde
Delphi 2005 Firebird 1.5

EditFiltrele editboxının change yordamına yazılan kodlar.
Bu Kod sonuç döndürüyor.

Kod: Tümünü seç

datmodul.Sorgu.Close;
        datmodul.Sorgu.SelectSQL.Clear;
        datmodul.Sorgu.SelectSQL.Add('Select * From MUSTERI');
        datmodul.Sorgu.SelectSQL.Add('Where MUSTERIKODU Like '''+EditFiltrele.Text+'''');
        datmodul.Sorgu.Open;
[/color]
Bunlar databasede var olmasına rağmen sonuç döndürmüyor.

Kod: Tümünü seç

datmodul.Sorgu.Close;
        datmodul.Sorgu.SelectSQL.Clear;
        datmodul.Sorgu.SelectSQL.Add('Select * From MUSTERI');
        datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like '''+EditFiltrele.Text+'''');
        datmodul.Sorgu.Open;
[/color]


Her şey aynı tüm şartlar aynı.1.Kod çalışıyor 2.si çalışmıyor.Ama program ırılmıyor.Hata ne olabilir acaba?Herkese kolay gelsin.[/code]
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Döndürmeme sebebi

Kod: Tümünü seç

datmodul.Sorgu.Close;
        datmodul.Sorgu.SelectSQL.Clear;
        datmodul.Sorgu.SelectSQL.Add('Select * From MUSTERI');
        datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like '''+EditFiltrele.Text+'''');
        datmodul.Sorgu.Open;
(SQL satır atlamalarında boşluk bırakmamandan dolayı)

Kod: Tümünü seç

datmodul.Sorgu.Close;
        datmodul.Sorgu.SelectSQL.Clear;
        datmodul.Sorgu.SelectSQL.Add('Select * From MUSTERI ');
        datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like '''+EditFiltrele.Text+'''');
        datmodul.Sorgu.Open;
Copy Paste yap çalışacaktır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

LIKE ın karşında verdiğiniz EditFiltrele.Text içinde elle % işareti koymuyorsanız LIKE tam anlamıyla görev yapamayacak ve = gibi çalışacaktır :idea: çift tirnakların içinde % işareti koyup deneyin.

Kod: Tümünü seç

datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like ''%'+EditFiltrele.Text+''''); // .. ile başlayanlar
datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like ''%'+EditFiltrele.Text+'%'''); // içinde ... geçenler
datmodul.Sorgu.SelectSQL.Add('Where ADISOYADI Like '''+EditFiltrele.Text+'%'''); // .. ile bitenler.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Mesaj gönderen yuksel2004 »

Adminim teşekkürler.Bunu nasıl göremedim hayret.Saatin geceyarısı olmasından heralde.Dedğiniz gibi şimdi çalışıyor ama bişey i yeni farkettim.Daha önce den ado kullanıyordum like ile aramada küçük/büyük harf ayrımı yapmıyordu bu IBdatasette yapıyor.Acaba bu ayrımı yapmaması için ne yapmamız gerekir.Teşekkürler.
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

yanlış hatılamıyorsam eyer ?

veritabanı tasarım aracınız ile tablonuzun özelliklerinden ayarlayabiliyorsunuz.

"Case Sensitive"
büyük/küçük harf ayrımına duyarlı ol.

iyi çalışmalar.
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
ozkanagiral
Üye
Mesajlar: 79
Kayıt: 17 Oca 2004 06:23
Konum: istanbul
İletişim:

Mesaj gönderen ozkanagiral »

Selamün Aleyküm
bu kendi yazdığım uygulamadan

Kod: Tümünü seç

  DMod1.IBTblKisiArama.Locate('ILCE', EditILCE.Text, [loCaseInsensitive,loPartialKey]);
bu da delphi yardımdan aynen copy/paste

Kod: Tümünü seç

TLocateOptions defines the values for the Options parameter of the Locate method of a dataset.

Unit

DB

Delphi syntax:

type
  TLocateOption = (loCaseInsensitive, loPartialKey);
  TLocateOptions = set of TLocateOption;

C++ syntax:

enum TLocateOption { loCaseInsensitive, loPartialKey };

typedef Set<TLocateOption, loCaseInsensitive, loPartialKey>  TLocateOptions;

Description

TLocateOptions is the type of the Options parameter to a dataset’s Locate method. The following table lists the possible values:

Value	Description

loCaseInsensitive	Key fields and key values are matched without regard to case.
loPartialKey	Key values can include only part of the matching key field value; for example, 'HAM' would match both 'HAMM' and 'HAMMER.'
İyi Çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ozkanagiral yazdı:

Kod: Tümünü seç

  DMod1.IBTblKisiArama.Locate('ILCE', EditILCE.Text, [loCaseInsensitive,loPartialKey]);
Locate i loPartialKey seçeneği ile LIKE gibi kullanmak mümkündür. Fakat çok kayıt sayısı olan tablolarda Locate in biraz daha yavaş çalıştığı bilinir :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Mesaj gönderen yuksel2004 »

Abi zaten bende locate yada filter kulllanmak istemiyorum.SQL her zaman SQL diyorum.Bu küçük harf büyük harf sorununu Like'li SQL komutlarında halledemezmiyiz.Bu konuda bilginiz vaRMı?Çok teşekkürler.
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhaba bu sorun benimde başımda table de locate ile bu işlem çözüm buluyor, ancak Query ile sorunu çözemedim. bu sorunun Queryile de mümkün olduğunu düşünüyorum. ancak kaynaklarda bişey bulamadım.
tablede filter özelliğini true yaptıktan sonra küçük/büyük harf duyarsızlığını ayarlayabiliyorduk ancak sql de bu iş nasıl olur bilemiyorum.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

selam sql de Containing komutu var. belki bu işini görür. bi örnek vermek gerekirse;

Kod: Tümünü seç

select * from abone
where  fname containing 'ali'

bunu delphi tarafında kendine göre ayarlayabilirsin.
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

arama yapcagin her iki alanı da Upper yap sql cumleciginde
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

VooDoo yazdı:arama yapcagin her iki alanı da Upper yap sql cumleciginde
peki bu işlem türkçe karakterleri direk destekliyormu. yoksa bitakım değişiklikler gerekiyormu.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
ozkanagiral
Üye
Mesajlar: 79
Kayıt: 17 Oca 2004 06:23
Konum: istanbul
İletişim:

Mesaj gönderen ozkanagiral »

rsimsek yazdı:
Locate i loPartialKey seçeneği ile LIKE gibi kullanmak mümkündür. Fakat çok kayıt sayısı olan tablolarda Locate in biraz daha yavaş çalıştığı bilinir :?:
Evet Hocam, bunu 4-5 sene önce yazmıştım. Şimdiki bilgilerim olsaydı SQL den şaşmazdım. Işığınızı takip ediyoruz :D
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

türkçe upper fonksiyonu vardi bu forumda onu kullanman iyi olabilir, yada ansi upper sanirim aynı işi yapar
Cevapla