Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Birden fazla alanda sorgulama
#1
Merhaba, DB Sqllite kullanıyorum, birden fazla alanda bir kategoride sorgulama yapmam gerek fakat bir türlü çözemedim, yardımcı olursanız sevinirim.

 
Kategori: Bisküvi (şart)
Arana: Ürün adı, tarihi veya ürünün id'sine göre arama yapılacak


   
SQL.Add('Select * From URUNLER);
SQL.Add('Where URUNADI Like ' + QuotedStr('%' + Search.Text + '%'));
SQL.Add('Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
SQL.Add('Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
SQL.Add('And KATEGORI Like ' + QuotedStr('%' + ComboBox.Text + '%'));
Hayat bazen güzel olabiliyor.
Cevapla
#2
SQL.Add('Select * From URUNLER);

satırındaki ifadeyi tek tırnak ile kapatmamışsın.

+ Where icindeki OR ifadelerini tek bir parantez içine alıp denermisin
Cevapla
#3
Mysql de fulltext adında r fonksiyon var, belki sql lite da karşılığı vardır
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
SQL textleri arasında belki boşluk koymayı unutmuşsundur genelde karşılaşılan bir durum. Or ve And den önce boşluk koy texte bir de öyle dene istersen.
WWW
Cevapla
#5
Uğur beyin dediği gibi parantez içine alırsanız okunabilirliği artar ve böylece hata yapma şansınız da azalır. Yazdığınız kodu şu şekilde çok daha net anlarsınız.

Where KATEGORI LIKE ? AND (URUNADI LIKE ? OR URUNID LIKE ? OR TARIH LIKE ?)

Kategori şu olacak ve Urunadı bu olabilir veya Id şu olabilir veya tarih şu olabilir.... gibi. 
Bu arada tarihi neden like ile arıyorsunuz ? "Şu tarih aralığında" diye aratmanız gerekmezmi ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
Tekrar merhaba;

Eksiklerimi giderdim, fakat soruyu biraz eksik sorduğumu fark ettim kusura bakmayın.
edit change ile databasedeki aradığım ürünü listeliyorum, fakat aranan ürünün tam bilgilerini yazarsam diğer ürünlerde listeleniyor kategori devre dışı kalıyor, bu sorunu nasıl çözerim?


procedure TForm2.SearchChange(Sender: TObject);
begin
 With Query1, Listv do
  begin
    Connection := Connection;
    Active := False;
    Close;
    SQL.Clear;
    SQL.Add('Select * From URUN Where KATEGORI=:KT');
    SQL.Add(' Or URUNADIADI Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
    ParamByName('KT').AsString := ComboBoxKT.Text;
    Prepared := True;
    Open;
    Items.Clear;
    Items.BeginUpdate;
    try
      while Not Query1.Eof do
      begin
        List := Items.Add;
 
 
 
 
 
Hayat bazen güzel olabiliyor.
Cevapla
#7
(08-12-2017, Saat: 11:35)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTekrar merhaba;

Eksiklerimi giderdim, fakat soruyu biraz eksik sorduğumu fark ettim kusura bakmayın.
edit change ile databasedeki aradığım ürünü listeliyorum, fakat aranan ürünün tam bilgilerini yazarsam diğer ürünlerde listeleniyor kategori devre dışı kalıyor, bu sorunu nasıl çözerim?


procedure TForm2.SearchChange(Sender: TObject);
begin
 With Query1, Listv do
  begin
    Connection := Connection;
    Active := False;
    Close;
    SQL.Clear;
    SQL.Add('Select * From URUN Where KATEGORI=:KT');
    SQL.Add(' Or URUNADIADI Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
    ParamByName('KT').AsString := ComboBoxKT.Text;
    Prepared := True;
    Open;
    Items.Clear;
    Items.BeginUpdate;
    try
      while Not Query1.Eof do
      begin
        List := Items.Add;
 
 
 
 
 



Şöyle kullan güzel kardeşim;

procedure TForm2.SearchChange(Sender: TObject);
begin
 With Query1, Listv do
  begin
    Connection := Connection;
    Active := False;
    Close;
    SQL.Clear;
    SQL.Add('Select * From URUN Where KATEGORI=' + QuotedStr( ComboBoxKT.Text ));
    SQL.Add('    AND    (      URUNADIADI Like ' + QuotedStr('%' + Search.Text + '%'));
    //           ^^^    ^
    SQL.Add(' Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add('           )     ');
    //                  ^
    //ParamByName('KT').AsString := ComboBoxKT.Text;
    ShowMessage( SQL.Text ) ; // SQL cümlen doğru oluşuyor mu buradan kontrol ediver.
    Prepared := True;
    Open;
    Items.Clear;
    Items.BeginUpdate;
    try
      while Not Query1.Eof do
      begin
        List := Items.Add;
Cevapla
#8
(08-12-2017, Saat: 12:02)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(08-12-2017, Saat: 11:35)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTekrar merhaba;

Eksiklerimi giderdim, fakat soruyu biraz eksik sorduğumu fark ettim kusura bakmayın.
edit change ile databasedeki aradığım ürünü listeliyorum, fakat aranan ürünün tam bilgilerini yazarsam diğer ürünlerde listeleniyor kategori devre dışı kalıyor, bu sorunu nasıl çözerim?


procedure TForm2.SearchChange(Sender: TObject);
begin
 With Query1, Listv do
  begin
    Connection := Connection;
    Active := False;
    Close;
    SQL.Clear;
    SQL.Add('Select * From URUN Where KATEGORI=:KT');
    SQL.Add(' Or URUNADIADI Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
    ParamByName('KT').AsString := ComboBoxKT.Text;
    Prepared := True;
    Open;
    Items.Clear;
    Items.BeginUpdate;
    try
      while Not Query1.Eof do
      begin
        List := Items.Add;
 
 
 
 
 



Şöyle kullan güzel kardeşim;

procedure TForm2.SearchChange(Sender: TObject);
begin
 With Query1, Listv do
  begin
    Connection := Connection;
    Active := False;
    Close;
    SQL.Clear;
    SQL.Add('Select * From URUN Where KATEGORI=' + QuotedStr( ComboBoxKT.Text ));
    SQL.Add('    AND    (      URUNADIADI Like ' + QuotedStr('%' + Search.Text + '%'));
    //           ^^^    ^
    SQL.Add(' Or URUNID Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add(' Or TARIH Like ' + QuotedStr('%' + Search.Text + '%'));
    SQL.Add('           )     ');
    //                  ^
    //ParamByName('KT').AsString := ComboBoxKT.Text;
    ShowMessage( SQL.Text ) ; // SQL cümlen doğru oluşuyor mu buradan kontrol ediver.
    Prepared := True;
    Open;
    Items.Clear;
    Items.BeginUpdate;
    try
      while Not Query1.Eof do
      begin
        List := Items.Add;


Eline ağlık + rep
Hayat bazen güzel olabiliyor.
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi