table filter ve sql

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

table filter ve sql

Mesaj gönderen vedatkaba »

Herkese Merhabalar...

Arkadaşlar benim problemim şu şekilde..

mesala sorgular adlı bir menumüz var.Bu menünün Aranana git,Benzerlerini Ara,Benzerlerini Ara (gelişmiş) gibi 3 tane alt menu koydum.
Bu menülerin Radio itemleri True.Ve onclik olaylarına

arananagit1.checked:=not arananagit1.checked;

diyerek Basılı veya basılı olmadığını kontrol ediyorum

Artı bir tablo ve bu tablonun filtered özelliği true ve büyük küçük ayırımı yapma true;

Edit in change olayına şöyle bir komut yazdım

if arananagit1.checked=true then
table1.filter:='[kelime]='+edit1.text;(sadece edite yazılanı sorgula);
if benzerleriniara1.checked=true then
table1.filter:='[kelime]='+#39+edit1.text+#39;
if benzerinigelismisbul1.checked=true then
table1.filter:='[kelime]='+#39+edit1.text+'*'+#39;
end;
diyorum hata veriyor.
yanibenim yapmak istediğim benzerlerini ara dediğim zaman editeyazılan ilkharften başlayarak sorgu yapsın(yani A dediğim zaman Sadece Aile başlayanları Al dediğim zaman A ların içinden Al İle başlayanları ).
Bunu query le yapamadım daha doğrusu edite yazılan ifadeyi query nin şartlı sql sorgusuna yyaptıramadım hep hata verdi.
Bunun başka yolu varmı Özellikle sql le bir metodu var-mı.Öyle Birşeyki query de ubdatesql ide kullanıyorum ama ekleme sorgusunda vb. hep hata veriyor .Biraz uzun oldu ama kusura bakmayın.Hepinize başarılar.Dilerim..


------------------------------------
AKIL SONRADAN AH ÇEKMEK İÇİN DEĞİL, ÖNCEDEN DÜŞÜNÜP TEDBİR ALMAK İÇİNDİR.(MEVLANA)
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Bunu sql kullanarak query ile yapmanı tavsiye ederim. Table filter özelliği ileride ummadığınız şekilde yavaş cevap vermeye başlayacaktır.

Kod: Tümünü seç

//eşit olanları bulmak için
Query1.Sql.Add('Select * From Tablo Where Kelime='+''''+Edit1.Text+''');
// A ile başlayanları bulmak için
Query1.Sql.Add('Select * From Tablo LIKE Kelime='+''''+Edit1.Text+''''+'%'+'''');
veya Like incelerseniz daha değişik sorgular yapabilirsiniz..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
Yusuf AYDIN
Üye
Mesajlar: 69
Kayıt: 02 Oca 2004 05:45
Konum: Antalya

Mesaj gönderen Yusuf AYDIN »

TRsoft arkadaşımızın yazdığı gibi Query ile çözüm en güzeli;
ama sorunda bunu yaparken hatalara rastladığını anlatmışın.

Query ile çalışırken. Öncelikle
Query1.close
Query1.SQl.Clear
işlemlerini unutma yoksa aynı querye birden fazla SQL cümleciği yazdırırsın. Bu işini epeyce zorlaştırır.

Yani yapın söyle olmalı ..

Kod: Tümünü seç

Procedure Form1.Secim;
Begin
  Query1.close  
  Query1.SQl.Clear 
  if arananagit1.checked=true then 
    Query1.SQl.Add('Select * From Tablo Where Kelime='+QuotedStr(Edit1.Text))
  Else
  if benzerleriniara1.checked=true then
    Query1.SQl.Add('Select * From Tablo Where Kelime Startingwith '+QuotedStr(Edit1.Text))
  Else
  if benzerinigelismisbul1.checked=true then 
    Query1.SQl.Add('Select * From Tablo Where Kelime Like '+QuotedStr(Edit1.Text+'%'));
  Query1.Open;
End;
Bu Secim procedurerununda iligli seçim alanlarının kliklenmesinde kullanılmasını sağlamalısınız. (Secim; ile)


Kelimeyi String olarak olarak aktarmaka için '''' veya #39 yerine QuotedStr() komutunu kullan. Bu bana daha kullanışlı anlaşılır gelmektedir.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Tamam da editin change olayına sorduğum gibi yazdığımda hata veriyor. ve query e sorgu yaptırırken hep problem yaşıyorum her komutta try except bloğu kullanmak zorunda kalıyorum.bu işin başka bir yolu yokmu yoksa benim delphide sorunmu var diyecem hatasız bir kurulum yaptığımda eminim ve enterpires kullanıyorum
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Öncelikle Editın boş olup olmadığını kontrol ettir.bir ihtimal edit boş ise hata verebilir. ve Yusuf AYDIN'ın verdiği kodları kullanırsan problem olmaması lazım..
Zaten siz filter özelliği ile editın her değiştiğinde bu işlemi yaptırısanız çokda doğru olmaz.
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
Yusuf AYDIN
Üye
Mesajlar: 69
Kayıt: 02 Oca 2004 05:45
Konum: Antalya

Mesaj gönderen Yusuf AYDIN »

veri tabanı ne kullanyorsun?
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Selamlar...

gerçe kayıtlar üzerinde bi değişiklik yapmıyorsun ama query nin Requestlive özelliğini true yapıp denese bide bence olucak. bide çıkan hataları buraya yazarsan daha net cvp lar alabilirsin.


saygılar....
Cevapla