Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Order By kullanımı
#1
Hayırlı günler,

Database listeleme yaparken sıra numarasına göre çıkan sonuçları göstermek istiyorum. Naçizane bir yerde takıldım kaldım.
Order By SIRANO kodunu nereye entegre edeceğimi çözemedim, sanırım bu günün vermiş olduğu yorgunluktan kaynaklanıyor.
Yardımınızı rica ederim delphican dostlarından


  
  xFDQ.Close;
    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=' + QuotedStr(ComboBoxIcerik.Text));
   xFDQ.SQL.Add('AND(ADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or SOYADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or YAS Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or KILO Like ' + QuotedStr('%' + EditSearch.Text + '%'));

    //  xFDQ.SQL.Add(' Order By SIRANO Asc');

    xFDQ.SQL.Add(')');
    xFDQ.Prepared := True;
    xFDQ.Open;

Cevapla
#2
(03-02-2019, Saat: 01:26)Yeliz Adlı Kullanıcıdan Alıntı: Hayırlı günler,

Database listeleme yaparken sıra numarasına göre çıkan sonuçları göstermek istiyorum. Naçizane bir yerde takıldım kaldım.
Order By SIRANO kodunu nereye entegre edeceğimi çözemedim, sanırım bu günün vermiş olduğu yorgunluktan kaynaklanıyor.
Yardımınızı rica ederim delphican dostlarından


  
  xFDQ.Close;
    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=' + QuotedStr(ComboBoxIcerik.Text));
   xFDQ.SQL.Add('AND(ADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or SOYADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or YAS Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or KILO Like ' + QuotedStr('%' + EditSearch.Text + '%'));

    //  xFDQ.SQL.Add(' Order By SIRANO Asc');

    xFDQ.SQL.Add(')');
    xFDQ.Prepared := True;
    xFDQ.Open;

Deneme imkanın olma ama genel kural
SELECT [alanlar] WHERE [şartlar] ORDER BY [sıralama alanı] ASC/DESC
personel tablosunda SIRANO olması durumunda aşağıdaki kod çalışmalı

xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=' + QuotedStr(ComboBoxIcerik.Text));
   xFDQ.SQL.Add('AND(ADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or SOYADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or YAS Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or KILO Like ' + QuotedStr('%' + EditSearch.Text + '% Order By SIRANO Asc '));

   //  xFDQ.SQL.Add(' Order By SIRANO Asc');

   xFDQ.SQL.Add(')');
   xFDQ.Prepared := True;
   xFDQ.Open;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#3
Aslında doğru yerde duruyor yorum satırını açın çalışacaktır, 

ancak sql cümleleri içerisinde edittext vs kullanmamaya çalışın bu kötü bir alışkanlık bknz: sql injection, aşağıdaki örneği inceleyin bu kullanıma alıştırın kendinizi.

     
     MyQuery2.Close;
     MyQuery2.SQL.Clear;      
     MyQuery2.SQL.Add('INSERT INTO channel (Cname) Values (:cname);');
     MyQuery2.ParamByName('cname').AsString  := 'ebele hübele';
     MyQuery2.Execute;


hatta ban kalırsa doğrudan stored procedure ile çalışın, uygulama yazıyorsanız daha güvenli olaaktır ödev yapıyorsanız tam not alırsınız bence Wink
WWW
Cevapla
#4
Naçizane tecrübem yettiği kadar tavsiyeniz doğrultusunda ilerliyorum, kodlar hata vermiyor fakat listelemede gerçekleşmiyor.
Nerede hata yapıyorum acaba?

    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=:CON AND ADI Like :AD');
    xFDQ.ParamByName('CON').AsString := QuotedStr(ComboBoxIcerik.Text);
    xFDQ.ParamByName('AD').Value := QuotedStr('%' + EditSearch.Text + '%');
    xFDQ.Prepared := True;
Cevapla
#5
(03-02-2019, Saat: 11:47)Yeliz Adlı Kullanıcıdan Alıntı: Naçizane tecrübem yettiği kadar tavsiyeniz doğrultusunda ilerliyorum, kodlar hata vermiyor fakat listelemede gerçekleşmiyor.
Nerede hata yapıyorum acaba?

    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=:CON AND ADI Like :AD');
    xFDQ.ParamByName('CON').AsString := QuotedStr(ComboBoxIcerik.Text);
    xFDQ.ParamByName('AD').Value := QuotedStr('%' + EditSearch.Text + '%');
    xFDQ.Prepared := True;



Örnek benim tablomda bu şekilde veriler var ,

   


  with DQuery do
 begin
   Close;
   Sql.Clear;
   sql.Add('select videos.watch , videos.name from videos WHERE videos.name LIKE :search');
   ParamByName('search').AsString := '%'+Edit1.Text+'%';
   Open;
 end;

bu kullanımda aşağıdaki sonucu alabiliyorum.

   

veya kendine bir sp yazarsın bu şekilde,

CREATE DEFINER=`root`@`localhost` PROCEDURE `VideoAra`(Param varchar(20))
BEGIN
 select videos.watch , videos.name from videos WHERE videos.name LIKE Param;
END;

delphi tarafıda da bu şekilde kullanırsın. delphide hem daha az kod yazmış olursun hemde değişiklik gerektiğinde delphiden değilde sql içerisinden spde değişiklik yaparak günü kurtarırsın.
  with DQuery do
  begin
   Close;
   Sql.Clear;
   sql.Add('call VideoAra(:search)');
   ParamByName('search').AsString := '%'+Edit1.Text+'%';
   Open;
 end;
WWW
Cevapla
#6
@Yeliz 

Prepared edilince parametreler set edilir.

Open veya Active := True gibi erişime yol vermelisiniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
@Yeliz
SQL i QuotedStr ile birleştireceğinize parametre kullanarak SQL'iniz yazarsanız daha az karışık görünecektir cimleciğiniz ve hatanızı daha rahat görebileceksiniz.. Bende eskiden Qs kullanıyordum fakat parametrelere geçtikten sonra SQL hatamı daha iyi trace edip debug etmeyi ve hatamı daha çabuk görmeyi öğrendim..

 ib1.SQL.Text := ' Select * from kasa_goster where (sattarihi between :tar1 and :tar2);';
 ib1.ParamByName('tar1').AsDate := mc.Date;
ib1.ParamByName('tar2').AsDate := mc.Date;
ib1.Prepare;
ib1.Open;
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#8
(03-02-2019, Saat: 01:26)Yeliz Adlı Kullanıcıdan Alıntı: Hayırlı günler,

Database listeleme yaparken sıra numarasına göre çıkan sonuçları göstermek istiyorum. Naçizane bir yerde takıldım kaldım.
Order By SIRANO kodunu nereye entegre edeceğimi çözemedim, sanırım bu günün vermiş olduğu yorgunluktan kaynaklanıyor.
Yardımınızı rica ederim delphican dostlarından


  
  xFDQ.Close;
    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=' + QuotedStr(ComboBoxIcerik.Text));
   xFDQ.SQL.Add('AND(ADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or SOYADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or YAS Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or KILO Like ' + QuotedStr('%' + EditSearch.Text + '%'));

    //  xFDQ.SQL.Add(' Order By SIRANO Asc');

    xFDQ.SQL.Add(')');
    xFDQ.Prepared := True;
    xFDQ.Open;


Order by kısmı parantezden sonra olacak dikkat etmen gereken bu kısım
Select * From yerine Select SIRANO as SNO, * From ile sıralamanın doğruluğunu görebilrsin

  xFDQ.Close;
    xFDQ.SQL.Clear;
    xFDQ.SQL.Add('Select * From KISILER Where CONTENT=' + QuotedStr(ComboBoxIcerik.Text));
   xFDQ.SQL.Add('AND(ADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or SOYADI Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(' Or YAS Like ' + QuotedStr('%' + EditSearch.Text + '%'));
   xFDQ.SQL.Add(' Or KILO Like ' + QuotedStr('%' + EditSearch.Text + '%'));
    xFDQ.SQL.Add(')');

    xFDQ.SQL.Add(' Order By SIRANO Asc');

    xFDQ.Prepared := True;
    xFDQ.Open;
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#9
Emeği geçen herkese ve @adelphiforumz Teşekkür ederim, çok makbule geçti.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Unigui iframe kullanımı delphiX14 4 1.526 21-12-2023, Saat: 12:14
Son Yorum: delphiX14
  Peekb, Poke, Peek vb. komutlarının delphi kullanımı? kofmaster 4 2.902 26-08-2023, Saat: 10:37
Son Yorum: veteran
Question FastReport Masterdetail Kullanımı riverred 7 1.106 17-05-2023, Saat: 14:02
Son Yorum: hi_selamlar
  Delphi 11.3 FastReport kullanımı Frrst 0 577 16-04-2023, Saat: 01:00
Son Yorum: Frrst
Photo fastreport IIF function null kullanımı themerdogan 8 1.879 05-01-2023, Saat: 18:18
Son Yorum: themerdogan



Konuyu Okuyanlar: 1 Ziyaretçi