Delphi Can

Orjinalini görmek için tıklayınız: Tarih Sorgulama
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Arkadaşlar Merhaba ;

Programda DateTimePicker1 ve DateTimePicker2 var ve normal tarih aralığı giriyoruz "01-02-2019 / 01-02-2019" sonuç sıfır dönüyor SQL de baktığımda bu tarihli kayıtlar var sebebi ne olabilir ? Yardımcı olabilir misiniz? 


EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');

EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date;
(02-04-2019, Saat: 05:33)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar Merhaba ;

Programda DateTimePicker1 ve DateTimePicker2 var ve normal tarih aralığı giriyoruz "01-02-2019 / 01-02-2019" sonuç sıfır dönüyor SQL de baktığımda bu tarihli kayıtlar var sebebi ne olabilir ? Yardımcı olabilir misiniz? 


EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');

EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date;

sql tarafında baktığın  tarih formatı ile  datetimepicker tarih formatı aynı mı ?
@OZCANK   Aşağıdaki yapıyı bir denermisin
bu  yapıda programın hata verecekmi yoksa çalışacakmı çünkü 2 satırda yazdığım sadece veri tipleri dönüşümü yapılabiliyormu diye yazdım.


EFaturaRapor.SQL.Add('WHERE  DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker1.Date));
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker2.Date));

Eğer üstteki çalışıyorsa muhtemelen veritabanından gelen tarih kısmı datetime şeklinde ozaman aşağıdaki şekilde kullanabilirsin


EFaturaRapor.SQL.Add('WHERE  DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date
Merhaba,
database tarafındaki kayıtlarda saat bilgisi de kayıtlı ise gelmeme sebebi olabilir.
01.02.2019 00:00:01
01-02-2019/01-02-2019 aralığı dışında olur.
çünkü 01-02-2019 00:00:00 olarak düşünülür.
tarihi 01-02-2019/02-02-2019 olarak dener misiniz
Selamlar

ben bir butona yazdım kodu. Sen kendine göre düzenleyebilirsin.

procedure Tfrmmain.sBitBtn5Click(Sender: TObject);
var tarih1, tarih2: string;
begin

 tarih1 :=copy(datetostr(DateTimePicker1.Date),7,4) + '-' + copy(datetostr(DateTimePicker1.Date),4,2) + '-' + copy(datetostr(DateTimePicker1.Date),1,2);
 tarih2 :=copy(datetostr(DateTimePicker2.Date),7,4) + '-' + copy(datetostr(DateTimePicker2.Date),4,2) + '-' + copy(datetostr(DateTimePicker2.Date),1,2);
 qryveri.SQL.Text :='select * from tagverileri where (tarih between'''+tarih1+''' and '''+tarih2+''')';
 qryveri.Open;

end;
(02-04-2019, Saat: 09:40)Merhaba ; Öncelikle teşekkür ederim. Kodlarını denedim. Şöyle bir hata verdi ;"EConvertError   with message     \24.03.2019 09:15:11'    is not a valid date" adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]@OZCANK   Aşağıdaki yapıyı bir denermisin
bu  yapıda programın hata verecekmi yoksa çalışacakmı çünkü 2 satırda yazdığım sadece veri tipleri dönüşümü yapılabiliyormu diye yazdım.

//Hata burda veriyor
EFaturaRapor.SQL.Add('WHERE  DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker1.Date));
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker2.Date));

Eğer üstteki çalışıyorsa muhtemelen veritabanından gelen tarih kısmı datetime şeklinde ozaman aşağıdaki şekilde kullanabilirsin

//Hata vermiyor fakat sonuçu sıfır dönüyor.
EFaturaRapor.SQL.Add('WHERE  DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date
Merhaba,

EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date+EncodeTime(0,0,0,0);
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date+EncodeTime(23,59,59,999);

olarak dener misin
Ben MSSQL de şu şekilde kullanıyorum,

Kod:
FIS_.SQL.Add('WHERE TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR2.Date)+' 23:59:59'', 102)');
(04-04-2019, Saat: 12:43)m_ekici Adlı Kullanıcıdan Alıntı: [ -> ]Ben MSSQL de şu şekilde kullanıyorum,

Kod:
FIS_.SQL.Add('WHERE TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR2.Date)+' 23:59:59'', 102)');


SQL Server'de güvenli tarih formatı:
http://www.delphican.com/showthread.php?...50#pid5750
Arkadaşlar ; Yardımlarınız için Emeğinize yüreğinize sağlık, Allah Razı olsun hepinize teşekkür ediyorum.
Sorunun cevabına gelince şu şekilde kod gönderen m_ekici ve csunguray arkadaşımızın yazdığını kullandım ve sorun çözüldü.

EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',DateTimePicker1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',DateTimePicker2.Date)+' 23:59:59'', 102)');

Sayfalar: 1 2