SQL:='Tarih-'+QuotedStr(DateToStr(Today)) niye olmuyor?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

SQL:='Tarih-'+QuotedStr(DateToStr(Today)) niye olmuyor?

Mesaj gönderen huseyinkucuk »

Arkadaşlar, merhaba... Yardımınıza ihtiyacım var...
Aşağıdaki kodda gördüğünüz DB deki tarih alanından günün tarihini çıkartarak kalan süreyi göstermeye çalıştım ama "Dynamic SQL error
expression evaluation not supported" hatasını veriyor...

Kod: Tümünü seç

DataModul.IBDataSet_Alis_Odemeleri.Close;
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('select'); DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_NO,');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ODEME_SEKILLERI.ODEME_SEKLI,');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_ACIKLAMA,');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_MIKTARI,');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI,');  

//////MUHTEMELEN PROBLEM BURDAN KAYNAKLANIYOR...
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('(ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI-'+QuotedStr(DateToStr(Today))+') as KALAN_SURE');
/////////////////////////////////////////////////////////////////////

DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('from');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI,');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ODEME_SEKILLERI,');
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALISLAR');
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('where');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('(ALIS_ODEMELERI.ALIS_ODEME_SEKLI_KODU=ODEME_SEKILLERI.ODEME_SEKLI_NO)');
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('and');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('(ALIS_ODEMELERI.ALIS_ODEMELERI_ALIS_KODU=:ALIS_NO)');
DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('order by');  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_NO');

  if not DataModul.IBDataSet_Alis_Odemeleri.Prepared then
    DataModul.IBDataSet_Alis_Odemeleri.Prepare;

  DataModul.IBDataSet_Alis_Odemeleri.Open;

Kısacası, DB deki tarihten günün tarihini nasıl çıkartabilirim (farkı gün sayısı olarak verse yeterli)? Yardımcı olursanız sevinirim. Kolay gelsin...
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bu fonksiyonla gg/aa/yyyy gibi bir değer döner.
bu tür sql sorgularında yyyy/aa/gg şeklinde bir değer kullanılmalı.
copy fonksiyonunu kullanara gg/aa/yyyy şeklindeki tarihi, yyyy/aa/gg şekline dönüştürüp deneyin. muhtemelen sorun çözülecektir.
saygılarımla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
bence Parametre kullanmak her zaman en güvenlisi olacaktır,
örneğin,

Kod: Tümünü seç

with qDeneme do
 begin
   close;
   sql.clear;
   sql.add('select *from deneme where tarih_alani=:tarih'); 
   ParamByName('tarih').AsDate:=Date;
   active:=True;
 end;
gibi , kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen huseyinkucuk »

nitrokonat ve vkadaman, teşekkür ederim ilgilendiğiniz için...
Nitrokonatın dediği olacak mı diye bi örnek yaptım. Şöyle:

Kod: Tümünü seç

DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI-(2007/02/17) as KALAN_SURE') ;
burda '/' işaretini bölme operatörü olarak alıyo (doğal olarak), aralara '.' koyunca da kabul etmiyo...

Daha sonra vkadaman'ın dediği gibi parametre kullanarak şöyle yaptım:

Kod: Tümünü seç

  DataModul.IBDataSet_Alis_Odemeleri.Close;

  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Clear;

  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('select');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_NO,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ODEME_SEKILLERI.ODEME_SEKLI,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_ACIKLAMA,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_MIKTARI,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI-:GununTarihi as KALAN_SURE') ;
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('from');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ODEME_SEKILLERI,');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALISLAR');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('where');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('(ALIS_ODEMELERI.ALIS_ODEME_SEKLI_KODU=ODEME_SEKILLERI.ODEME_SEKLI_NO)');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('and');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('(ALIS_ODEMELERI.ALIS_ODEMELERI_ALIS_KODU=:ALIS_NO)');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('order by');
  DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEMELERI_NO');

  DataModul.IBDataSet_Alis_Odemeleri.ParamByName('GununTarihi').AsDateTime:=Date;

  DataModul.IBDataSet_Alis_Odemeleri.Open;
bunun sonucunda yine aynı hatayı verdi (expression evaluation not supported)

Calculated sütunla yapabiliyorum bunu aslında ama SQL ile yapmak istiyorum... Yardımlarınız için teşekkürler...
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

hocam quotedstr de yazsaydınız mesela

Kod: Tümünü seç

DataModul.IBDataSet_Alis_Odemeleri.SelectSQL.Add('ALIS_ODEMELERI.ALIS_ODEME_VADE_TARIHI-(quotedstr('2007/02/17')) as KALAN_SURE') ; 
tabi bi de - ile deneyin bu kodu.
umarım olur.
kolay gelsin
Cevapla