Listeleme Problemi.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Listeleme Problemi.

Mesaj gönderen SeRoKi »

Merhabalar ;
bir listeleme sorunum var, listeleme olayının kullanacağı durum şöyle :

kullanıcı aramak istediği kelime ve ya harf grubunu bir editin içine girer,
ve arama işlemi daha önceden tanımlanan veriler içinde olacak (tanımlanacak veriler için bir kesinlik yoktur, yani herhangi bir cümle olabilir, otomobil markaları olabilir.) otomabil markaları olduğunu düşünürsek : kullanıcı "m" harfini arattığı zaman; -mercedes , -bmw gibi
kayıtları göstermesi gerekiyor. Bunu yapmak için sql de bulunan LIKE komutunu kullandım. ama like komutu büyük-küçük harf seçiyor. bunu yapmak için bana başka bir yol gösterebilirmisiniz ??

Paradox for windows 5.0 kullanılıyor. SQL Query,DbGrid,Edit,buton bileşenleri kullanılor. delphi7 ile çalışılıyor.

Teşekkürler
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.
Paradox'un destekleyip desteklemediğinden tam olarak emin değilim ama Containing komutunu kullanarak yapabilirsiniz sanırım, forumda da bu şekilde aramanızda fayda var.Ek olarak Table bileşeninin FindNearest metodunu da kullanabilirsiniz..Bir de UpperCase ve LowerCase fonksiyonları da işinize yarayabilir.
Kolay gele.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Blue Alone arkadaşımızın da dediği gibi UpperCase ve LowerCase fonksiyonlarına da dikkat ederek arama yaparsak sana şöyle bir örnek yazabilirim:

Kod: Tümünü seç

Select * From Otolar where otoadi like '%ü%', otoadi like '%Ü%' 

şeklinde bir kod ile yapabilirsin. Umarım işine yarar... Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Re: Listeleme Problemi.

Mesaj gönderen ofenX »

Merhaba,
SeRoKi yazdı: Bunu yapmak için sql de bulunan LIKE komutunu kullandım. ama like komutu büyük-küçük harf seçiyor. bunu yapmak için bana başka bir yol gösterebilirmisiniz ??
bu söylediğinizi tam olarak anlayamadım. Eğer "ben içinde m olanları göster dediğim zaman hem bmw hem Mercedes hem de megan ı göstersin" derseniz. arattığınız alanı ve arattığınız bilgiyi upper fonksiyonuna tabi tutun.
Yani

Kod: Tümünü seç

  select * from invoices where upper(musteri_adi) like '%'||upper('t')||'%'
şeklinde bir kod girerseniz:
mehmet ve suaT size sonuç olarak geri döner.
(Bu yazdığım firebird için syntax tır. ibexpertte çalışıyor.)
Not : || işaretleri stringi toplamak için kullanılıyor. Ve klavyede soldaki alt tuşu basılı iken numeric key padden 124 e basarak çıkarıyorsunuz.

Kolay gelsin.
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

Tek bir harf için hem büyük hem de küçük şeklini kullanmak konusunda problem yok, harf grubu kullanılacağı zaman problem oluyor.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Tek bir harf için hem büyük hem de küçük şeklini kullanmak konusunda problem yok, harf grubu kullanılacağı zaman problem oluyor.
Seroki arkadaşım yukarıda bahsettiğin olaya bir örnek verebilirsen yada daha açık yazabilirsen yardımcı olmaya çalışalım...
Kolay Gele...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
radiochaos
Üye
Mesajlar: 17
Kayıt: 10 Kas 2005 05:15
Konum: Antalya
İletişim:

Mesaj gönderen radiochaos »

Selam,

Paradox veri tabanında SQL kullanımı oldukça kısıtlı bildiğim kadarıyla. Ansi-SQL standardı olan birçok komut veya SQL fonksiyonu desteklenmiyor paradox'ta.

Aynı performansı alamayabilirsin ama, arama için TTable'ın Filter özelliğini kullanabilirsin. Bunun için "fake" bir filter yazıp, OnFilterRecord da kendin Pos ile kontrol edebilirsin. Mesela dize aradığın alanın "AD" olduğunu varsayarsak;

Örnek:
DataSet1.Active:=false;
DataSet1.Filtered:=true
DataSet1.Filter:='AD > '!''; // Dataset'in filtersız gibi çalışması için, tüm kaytılar gelsin diye
DataSet1.Active:=true;

Sonra;
procedure TForm1.DataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);

begin
Accept := Pos(Edit1.Text,DataSet1.FieldByName('AD').AsString)>0;
end;

Kolay gelsin.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Firebird database ilke şu şekilde bir sorun çıkmıyor ama bir dene istersen.

Kod: Tümünü seç

Screen.Cursor := crSQLWait;
  datmodul.StokSorgu.Close;
  datmodul.StokSorgu.SelectSQL.Clear;
  datmodul.StokSorgu.SelectSQL.Add('Select * From STOK');
  datmodul.StokSorgu.SelectSQL.Add('Where upper(ACIKLAMA) Like upper(''' + '%' +
    EditAraAciklama.Text + '%' + ''')');
  datmodul.StokSorgu.Open;
  Screen.Cursor := crDefault;
Kolay gelsin.
Cevapla