iki tarih arası sorgu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

iki tarih arası sorgu

Mesaj gönderen sako »

Aşağıdaki kod ile 7 gün öncesi ile bugün arasında sorgu yapmak istiyorum ama hiç alakası olmayan bir sonuç çıkıyor. Kod şöyle.

vaktiyaklasan.close;
vaktiyaklasan.SelectSQL.clear;
vaktiyaklasan.SelectSQL.Add('select* from anatablo where (HATIRLATMATARIHI BETWEEN :ilktar AND :sontar)');
vaktiyaklasan.ParamByName('ilktar').value:=datetostr(Now-7); // 7 gün öncesi
vaktiyaklasan.ParamByName('sontar').Value:=datetostr(now); //bugün
vaktiyaklasan.open;
vaktiyaklasan.FetchAll;

Neden yanlış sonuç dönüyor acaba ?
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: iki tarih arası sorgu

Mesaj gönderen brs »

Mask Edit ile istenilen tarihler arasıda veri çekiyorum (Databasedeki tarih alanını kontol et istersen) kolay gelsin

Kod: Tümünü seç

          with Form1.Playlist do
          begin
            Close;
            SQL.Clear;
            SQL.Add('Select * From Playlist Where YAYINTARIHI BETWEEN :Tarih1 AND :Tarih2');
            ParamByName('Tarih1').value := FormatDateTime('yyyy-mm-dd', StrToDate(MaskEdit1.Text));
            ParamByName('Tarih2').value := FormatDateTime('yyyy-mm-dd', StrToDate(MaskEdit2.Text));
            Prepared := True;
            Open;
            if IsEmpty then // Kayıt yoksa
            begin
              Label1.Caption := 'Belirtilen Tarihler Arasında Kayıt Bulunamadı!';
            end
            else

İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: iki tarih arası sorgu

Mesaj gönderen tayipk »

burda önemli olan tablonuzdaki HATIRLATMATARIHI alan tipi ve barındırdığı bilgilerdir. örneğin alan tipiniz datetime ise ve tarih formatı 2014-08-25 00:00:00 şeklinde görünüyor ise

Kod: Tümünü seç

vaktiyaklasan.SelectSQL.Add('set dateformat dmy select* from anatablo where HATIRLATMATARIHI BETWEEN :ilktar AND :sontar');
şeklinde düzeltirseniz sorununuz düzelebilir birde aynı alanda hem tarih hemde saat barındırıyorsanız bu sefer parametre değerlerinde saat bilgisinede yer vermeniz gerekecektir.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: iki tarih arası sorgu

Mesaj gönderen greenegitim »

firebirde aşağıdaki kodla bu haftaki kayıtları listeletebiliyorum haftanın başlangıç gününü + 1 diyerek pazartesiden pazara kadar olan kayıtları listeletebiliyorum

Kod: Tümünü seç

 select *
 from FATURA
 where FATURATARIHI between
         cast('now' as date) - extract(weekday from cast('now' as date)) +1;
         and
         cast('now' as date) - extract(weekday from cast('now' as date))+ 7 ;      

Mücadele güzelleştirir!
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: iki tarih arası sorgu

Mesaj gönderen sako »

Arkadaşlar HATIRLATMATARIHI alanı varchar olarak tanımlı. Yazmayı unutmuşum bu arada. Kusura bakmayın
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mysterious
Üye
Mesajlar: 14
Kayıt: 10 Mar 2015 01:56
Konum: KONYA / Ereğli

Re: iki tarih arası sorgu

Mesaj gönderen mysterious »

kolay gelsin
ben iki tarih arası sorgulama yapabiliyorum ama bir türlü dbgrid de sonuçları gösteremiyorum neyden kaynaklana bilir baglantılar dogru formumda 1 tane adoquery 1 tane adotable 1 tane dbgrid ve 2 adet datetimepicker var yardımcı olursanız çok sevinirim kafayı yiyecem kodlar şu şekilde

Kod: Tümünü seç

     
        RBTARIH_GUERY.Close;
        RBTARIH_GUERY.SQL.Clear;
        RBTARIH_GUERY.SQL.Add('SELECT * FROM [marketim_pro].[dbo].[KASA_HAREKET_TABLOSU] WHERE KASA_HAREKET_TARIHI BETWEEN :Tar1 AND :Tar2');
        RBTARIH_GUERY.Parameters.ParamByName('Tar1').DataType := ftDate;
        RBTARIH_GUERY.Parameters.ParamByName('Tar1').Value:=DateToStr(DateTimePicker1.Date);
        RBTARIH_GUERY.Parameters.ParamByName('Tar2').DataType := ftDate;
        RBTARIH_GUERY.Parameters.ParamByName('Tar2').Value:=DateToStr(DateTimePicker2.Date);
        RBTARIH_GUERY.Open;

        if RBTARIH_GUERY.IsEmpty then//Kayıt yoksa
          begin
              Label2.Caption:='Belirtilen Tarihler Arasında Kayıt Bulunamadı!';
          end
        else
          begin
              Label2.Caption:='kayıt var!';
          end;
kayıt var diyor ama dbgridde listelemiyor
Bütün uyuyanları uyandırmaya bir tek uyanık yeter.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: iki tarih arası sorgu

Mesaj gönderen brs »

Kayıt var diyorsa ve "kayıt varsa" kodlarda o zaman sorun yok, kayıtları listelemek için nasıl kod kullanıyorsunuz???


Kod: Tümünü seç

 if RBTARIH_GUERY.IsEmpty then//Kayıt yoksa
          begin
              Label2.Caption:='Belirtilen Tarihler Arasında Kayıt Bulunamadı!';
          end
        else
          begin
LİSTELEME KODLARI

          end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: iki tarih arası sorgu

Mesaj gönderen brs »

Bu arada küçük tavsiyem delphi code işleminde ctrl + d yap kodlar düzenlesin...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arası sorgu

Mesaj gönderen ertank »

sako yazdı:Arkadaşlar HATIRLATMATARIHI alanı varchar olarak tanımlı. Yazmayı unutmuşum bu arada. Kusura bakmayın
Merhaba,

Eğer tarih değerleri ise öncelikle alan tipini tabloda "timestamp" bezeri bir değer yapmanı öneririm. Bunu yapamıyor isen HATIRLATMATARIHI alanını SQL içinde "CAST" ederek tarih tipine çevir. Bu çevrilmiş değeri kullan. Sorgu ilk verdiğin hali ile senin istediğin sonucu vermeyecektir. Bu da normaldir.
Kullanıcı avatarı
mysterious
Üye
Mesajlar: 14
Kayıt: 10 Mar 2015 01:56
Konum: KONYA / Ereğli

Re: iki tarih arası sorgu

Mesaj gönderen mysterious »

hocam adoqueryi datasource bagladım dbgridi de aynı datasource bagladım adoquery de yapılan sorgu datasource listeledigi zaman otomatik olarak dbgridde listelenmiş olmayacak mı acaba yalnış mı biliyorum
Bütün uyuyanları uyandırmaya bir tek uyanık yeter.
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: iki tarih arası sorgu

Mesaj gönderen ihalilcoban »

mysterious yazdı:hocam adoqueryi datasource bagladım dbgridi de aynı datasource bagladım adoquery de yapılan sorgu datasource listeledigi zaman otomatik olarak dbgridde listelenmiş olmayacak mı acaba yalnış mı biliyorum
Doğru biliyorsun. Bağlantılarında sorun olmadığı sürece dbgrid de sorguna uygun kayıtlar listelenecektir.
Kullanıcı avatarı
mysterious
Üye
Mesajlar: 14
Kayıt: 10 Mar 2015 01:56
Konum: KONYA / Ereğli

Re: iki tarih arası sorgu

Mesaj gönderen mysterious »

evet hocam ama bir türlü listelemiyor aynı duruyor nerden kaynaklanabilir bir türlü çözemedim yada başka türlü yapabilirmiyim iki tarih arası sorguyu
Bütün uyuyanları uyandırmaya bir tek uyanık yeter.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: iki tarih arası sorgu

Mesaj gönderen brs »

Gözümüzden bir şey kaçmış olabilir, projenizi paylaşırsanız bi bakalım...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: iki tarih arası sorgu

Mesaj gönderen esistem »

ertank yazdı:
sako yazdı:Arkadaşlar HATIRLATMATARIHI alanı varchar olarak tanımlı. Yazmayı unutmuşum bu arada. Kusura bakmayın
Merhaba,

Eğer tarih değerleri ise öncelikle alan tipini tabloda "timestamp" bezeri bir değer yapmanı öneririm. Bunu yapamıyor isen HATIRLATMATARIHI alanını SQL içinde "CAST" ederek tarih tipine çevir. Bu çevrilmiş değeri kullan. Sorgu ilk verdiğin hali ile senin istediğin sonucu vermeyecektir. Bu da normaldir.
@ertank gerekli cevabı vermiş, dediği şekilde denedinizmi?
Kullanıcı avatarı
mysterious
Üye
Mesajlar: 14
Kayıt: 10 Mar 2015 01:56
Konum: KONYA / Ereğli

Re: iki tarih arası sorgu

Mesaj gönderen mysterious »

buyrun hocam projenin sorunlu formu kodlar içinde
Dosya ekleri
kasa_form.rar
(14.54 KiB) 97 kere indirildi
Bütün uyuyanları uyandırmaya bir tek uyanık yeter.
Cevapla