SQL ile 3 combobox tan sorgu atma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
emrekilinc1984
Üye
Mesajlar: 58
Kayıt: 15 Eyl 2016 12:13

SQL ile 3 combobox tan sorgu atma

Mesaj gönderen emrekilinc1984 »

Merhaba arkadaşlar ben datetimepicker yerine 3 adet combobox koydum formuma ve gün ay yıl şeklinde ayırdım ve sorgulama yaptığımda sql deki date field dına gün ay yıl şeklinde sorgu atsın istiyorum aşağıdaki kodu birtürlü toparlayamadım yardımcı olursanız çok sevinirim.


Kod: Tümünü seç

with module.adoDovizTablo do
  begin

   Close;
     SQL.Clear;
       SQL.Add ('select distinct(d.sDovizAciklama),d.sDovizKod,dk.dtTarih,dk.mAlis,dk.mSatis,dk.mEfektifAlis,dk.mEfektifSatis from bt_Doviz d inner join bt_DovizKurlari dk on dk.nDovizID = d.nDovizID where dtTarih = '+#39+cbGun.text+);
         SQL.Add ('''.'''+cbAy.text+);
           SQL.Add ('''-'''+cbYil.text+);
            SQL.Add (' order by dtTarih');
               Open;

 end;
end;
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: SQL ile 3 combobox tan sorgu atma

Mesaj gönderen ertank »

Merhaba,

Öncelikle;
- "with" ifadesini zorunda kalmadıkça kullanmayın. Öyle bir noktaya gelir ki ciddi karışıklıklara yol açabilir. Kod okumayı zorlaştırır (neyin neye atandığını anlamak için ekstra çaba gerekebilir).
- Yazdığınız kod yeni seviye blok (begin..end, try..finally, vb) içine girmedikçe aynı seviyede yazın.
- Boş satır bırakmamaya özen gösterin.
- SQL komutlarını kendiniz "Quote" etmeye çalışmayın. Parametre tanımlayıp değerleri parametre kullanarak sorguya verin. SQL komutları böylece çok daha kolay okunur hale gelecektir.

Sorunuza gelince, kullandığınız veritabanı bağlantı bileşenine göre aşağıdaki kod içinde "Params[0].AsDateTime" satırında düzenleme yapmanız gerekebilir.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  Module.adoDovizTablo.Close();
  Module.adoDovizTablo.SQL.Clear();
  Module.adoDovizTablo.SQL.Add('select distinct(d.sDovizAciklama), d.sDovizKod, dk.dtTarih, dk.mAlis, dk.mSatis, dk.mEfektifAlis, dk.mEfektifSatis');
  Module.adoDovizTablo.SQL.Add('from bt_Doviz d inner join bt_DovizKurlari dk on dk.nDovizID = d.nDovizID');
  Module.adoDovizTablo.SQL.Add('where dtTarih = :Tarih');
  Module.adoDovizTablo.SQL.Add('order by dtTarih');
  Module.adoDovizTablo.Params[0].AsDateTime := EncodeDate(StrToInt(cbYil.Text), StrToInt(cbAy.Text), StrToInt(cbGun.Text));
  Module.adoDovizTablo.Open();
end;
Cevapla