Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İki Tarih Arası Sorgulama
#11
Veri tabanındaki TARIH alanının tipi nedir? datetime olması gerekiyor.
Cevapla
#12
@Mikdad

Aşağıdaki kod örneğine göre yeniden düzenleyip bir çalıştırır mısınız ? 

Sorun ve ihtimalen eklenmesi gerekenler :
  1. Kendi örneğinizde BETWEEN ifadesini yazmayı unutmuşsunuz, 
  2. MSACCESS veritabanı sürümüne Date tipi gibi özel parametrelerin Data tipinin de tanımlanmasını istenebiliyor.

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  With FDISLEM do
  begin
    SQL.Clear;
    SQL.Add('select * from ISLEM');
    SQL.Add('WHERE TARIH BETWEEN :ilktarih and :sontarih');

    ParamByName('ilktarih').DataType  := ftDate;
    ParamByName('ilktarih').Value     := StrToDateTime( MaskEdit1.Text );

    ParamByName('sontarih').DataType  := ftDate;
    ParamByName('sontarih').Value     := StrToDateTime( MaskEdit2.Text );

    Active := TRUE;
  end;
//...
end;

Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#13
(15-05-2023, Saat: 16:59)Mikdad Adlı Kullanıcıdan Alıntı: Selamun aleykum Hocalarım, 
Access veritabannı

Firedac ana Tablom ( Tablo Adı Vefa)
Delphi ide de firedac query ismi FDVefa

Detail Tablom ise ( ISLEM) ( sorgulanacak alan TARIH)
Delphi ide de firedac query ismi  FDISLEM


Detail tablomdaki tarih alanında iki tarih arası sorgulama yapmak istiyorum. 
yardımcı olabilir misiniz?


Aşağıdaki fonksiyonları kullanarak tarihinizi Access'in kabul edebileceği şekilde formatlayabilirsiniz.

function QuotedSQLDate(ADate: TDateTime): String;
begin
  Result := 'CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd', ADate)) + ')';
end;

function QuotedSQLDateTime(ADateTime: TDateTime): String;
begin
  Result := 'CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', ADateTime)) + ')';
end;
WWW
Cevapla
#14
Hocalarım Allah razı olsun, tüm verdiğiniz kodları denedim, maskeditler yerine Edit te kullandım, hep aynı hata, 
access vt ISLEM tablosunda TARIH alanı tarih/saat seçili. alt taraftan özellik kısmında da kısa tarih olarak belirledim.  ama hala aşağıdaki hatayı veriyor.


Ek Dosyalar Resimler
       
Cevapla
#15
parametre kullanmak candır gerisi heyecandır derler.
Tarihi string olarak kullanınca ayraç ne olacak hangi formatta olacak karmaşası yaşamanız doğal.

Bir de parametre ile deneyin isterseniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#16
(22-05-2023, Saat: 09:29)Mikdad Adlı Kullanıcıdan Alıntı: Hocalarım Allah razı olsun, tüm verdiğiniz kodları denedim, maskeditler yerine Edit te kullandım, hep aynı hata, 
access vt ISLEM tablosunda TARIH alanı tarih/saat seçili. alt taraftan özellik kısmında da kısa tarih olarak belirledim.  ama hala aşağıdaki hatayı veriyor.

Benim cevabım işinize yaramadı mı? Denemekte veya anlamakta zorluk mu çektiniz?

SELECT * FROM TABLE1 WHERE TARIH1 >= CDATE('2023-01-31') AND TARIH1 <= CDATE('2023-02-28')

Delphi ile kodlarsak:

Query1.SQL.Text := 'SELECT * FROM TABLE1 WHERE TARIH1 >= CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', DateEdit1.Date)) + ') AND TARIH1 <= CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', DateEdit2.Date)) + ')'
WWW
Cevapla
#17
(22-05-2023, Saat: 10:23)csunguray Adlı Kullanıcıdan Alıntı:
(22-05-2023, Saat: 09:29)Mikdad Adlı Kullanıcıdan Alıntı: Hocalarım Allah razı olsun, tüm verdiğiniz kodları denedim, maskeditler yerine Edit te kullandım, hep aynı hata, 
access vt ISLEM tablosunda TARIH alanı tarih/saat seçili. alt taraftan özellik kısmında da kısa tarih olarak belirledim.  ama hala aşağıdaki hatayı veriyor.

Benim cevabım işinize yaramadı mı? Denemekte veya anlamakta zorluk mu çektiniz?

SELECT * FROM TABLE1 WHERE TARIH1 >= CDATE('2023-01-31') AND TARIH1 <= CDATE('2023-02-28')

Delphi ile kodlarsak:

Query1.SQL.Text := 'SELECT * FROM TABLE1 WHERE TARIH1 >= CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', DateEdit1.Date)) + ') AND TARIH1 <= CDATE(' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', DateEdit2.Date)) + ')'

hocam bu seferde hiç tepki vermiyor. tabloyu kapatıyor sorgulama yapmıyor. 
ben delpide yeniyim, çok fazla kod yazamıyorum. projeler üzerinden kendimi geliştiriyorum. bu projeyi de yaşlı ve engelli bireylerin ev temizliği yaptığımız haneler için kullanıyorum. iki tarih arası rapor isteniyor. 
aslında tam anlamı ile ihtiyaç duyduğum şey
combobox1 den Temizlik Yapıldı veya Adreste Bulunamadı gibi bir seçim yapıp daha sonra iki tarih belirtip sorgulayıp fastreport tan çıktı almak. ama bir türlü yapamadım.
Cevapla
#18
Ben bu şekilde kullanıyorum. SQL serverdaki tarih düzenine göre hata alıyor olabilirsin.

SIP_.SQL.Add('AND TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd', IncDay (TARIH1, -1) )+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd', TARIH2 )+' 23:59:59'', 102)');
Cevapla
#19
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
ab,cd : STRING;
begin
ab := FormatDateTime ('yyyy mm dd', StrToDate(MaskEdit1.Text));
cd := FormatDateTime ('yyyy mm dd', StrToDate(MaskEdit2.Text));
ab := AnsiReplaceText(ab,' ','-');
cd := AnsiReplaceText(cd,' ','-');

FDISLEM.sql.Add('select * from ISLEM');
FDISLEM.sql.Add('WHERE TARIH >=:ilktarih and TARIH <=:sontarih');
FDISLEM.ParamByName('ilktarih').Value := ab+(' 00:00:00');
FDISLEM.parambyname('sontarih').Value := cd+(' 23:59:59');
FDISLEM.open;
end;

bu şekilde çalıştır
Cevapla
#20
Destek Olan Tüm Hocalarımdan Allah Razı Olsun. Hakkınızı Helal Edin lütfen. Aşağıdaki kod ile sorunumu çözdüm. Başka bir dostumuzun ihtiyacı olur diye kodu yazıyorum.
begin
        FDISLEM.Close;
    FDISLEM.SQL.Clear;
    FDISLEM.SQL.Text:='select * from ISLEM where TARIH between :tar1 and :tar2';
    if RzComboBox_Durumu.Text<>'' then
    begin
        FDISLEM.SQL.Text:= FDISLEM.SQL.Text+' and YAPILAN_ISLEM=:PARYAPILAN_ISLEM';
         FDISLEM.Params.ParamByName('PARYAPILAN_ISLEM').AsString:=RzComboBox_Durumu.Text;
    end;

    FDISLEM.Params.ParamByName('tar1').AsDate:=DateEdit_ilktarih.Date;
       FDISLEM.Params.ParamByName('tar2').AsDate:=DateEdit_sontarih.Date;
       FDISLEM.Open;

end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  2 Tarih arası periyodik tarih parçalama fonksiyonu adelphiforumz 4 940 17-02-2025, Saat: 17:33
Son Yorum: adelphiforumz
  cxgrid sorgulama ercanskose 3 870 09-11-2024, Saat: 10:09
Son Yorum: ercanskose
  Formlar Arası Geçiş delphiX14 2 755 06-12-2023, Saat: 21:57
Son Yorum: delphiX14
  Tarih Guncelleme Trigger OZCANK 2 1.401 24-05-2023, Saat: 17:06
Son Yorum: OZCANK
  WebBrowser ile Forma Veri Gönderme ve Sorgulama adnansirca 5 3.642 02-03-2023, Saat: 17:15
Son Yorum: adnansirca



Konuyu Okuyanlar: 1 Ziyaretçi