Mysql İki Tarih Arası Sorgulama ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen bkantur »

Bu kodu biraz daha kısaltma şansım var mı acaba ?

Kod: Tümünü seç

var
  SL: TStringList;
  gun :integer;
  ay, yil, hatir_tarih : string;
begin
  SL := TStringList.Create;
  try
    SL.Delimiter := '-';
    SL.DelimitedText := sstatusbar1.panels[0].text;
    yil   := SL.Strings[0];
    ay    := SL.Strings[1];
    gun   := StrToInt(SL.Strings[2]);
    gun   := gun + 3;
    hatir_tarih := yil + '-' + ay + '-' + IntToStr(gun);
    with kontrolQRY do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT islem_tarihi, konu FROM hatirlatma WHERE islem_tarihi BETWEEN :tarih1 and :tarih2 ');
      params.parambyname('tarih1').value  := sstatusbar1.panels[0].text;
	    params.parambyname('tarih2').value := hatir_tarih;
      Active:=true;
      Open;
      kontrolQRY.First;
      while not kontrolQRY.Eof do
      begin
        smemo2.lines.Add( kontrolQRY.fieldbyname('islem_tarihi').AsString +#32+ 'Tarihinde' +#32+ kontrolQRY.fieldbyname('konu').AsString +#32+ 'Konulu Hatırlatmanız Var');
        kontrolQRY.Next;
      end;
    end;
  finally
    SL.Free;
  end;
end;
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen brs »

Ben MaskEdit kullanıyordum, istersen DateTimePicker kullanabilirsiniz...

Kod: Tümünü seç

 
 begin
        try
          with Arsiv do
          begin
            Close;
            SQL.Clear;
            SQL.Add('Select * From list Where TARIH 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 := 'Kayıt Bulunamadı!';
            end
            else
            begin
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Re: Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen bkantur »

Buradaki amacım bugünün tarihinden başlayıp bu tarihten sonraki 3 günü sorgulayıp listelemek. Bu kodlar ile istediğime ulaşabiliyorum ama daha kısa bir yolu var mı bunu öğrenmek istedim bu konuda yardımcı olabilir misin?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen mrmarman »

Parametre işlemine kadar gelip okyanusu aşmışsınız. Dereyi de biz geçirelim.. :wink:
IncDay() fonksiyonu için USES'a DateUtils ekleyiniz.

dtTarih'e de gerek yok ama açıklayıcı olsun diye tanımladım. Tanımlamayı kaldırıp dtTarih gördüğünüz yerlere direkt Int(Now) yazmanız yeterli.

Kod: Tümünü seç

var
  dtTarih : TDate;
begin
  dtTarih := Int(Now); // INT() fonksiyonunu burada bugünün tarihinin Saat = 00:00:00 halini almak için kullandık...
  with kontrolQRY do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('SELECT islem_tarihi, konu FROM hatirlatma WHERE islem_tarihi BETWEEN :tarih1 and :tarih2 ');
    params.parambyname('tarih1').DataType := ftDate;
    params.parambyname('tarih1').value    := dtTarih;
    params.parambyname('tarih2').DataType := ftDate;
    params.parambyname('tarih2').value    := IncDay(dtTarih, 3); 
    Active:=true;
    kontrolQRY.First;
    while not kontrolQRY.Eof do
    begin
      smemo2.lines.Add( kontrolQRY.fieldbyname('islem_tarihi').AsString +#32+ 'Tarihinde' +#32+ kontrolQRY.fieldbyname('konu').AsString +#32+ 'Konulu Hatırlatmanız Var');
      kontrolQRY.Next;
    end;
  end;
end;
Resim
Resim ....Resim
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Re: Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen bkantur »

Hocam çok teşekkür ederim. İsteklerimi farklı ve uzun yollarla çözmeye çalışıyorum ama daha öğrenecek ve katedilecek çok yolum var. Çok sağ olun.
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: Mysql İki Tarih Arası Sorgulama ?

Mesaj gönderen cengaver »

Bu da benden olsun, belki farklı bir bakış açısı getirir;

Kod: Tümünü seç

var
  SL: TStringList;
  hatir_tarih : string;
  function TQ(aString: String): String;
  begin
    result := QuotedStr(Trim(aString));
  end;
begin
  SL := TStringList.Create;
  SL.Delimiter := '-';
  SL.DelimitedText := sstatusbar1.panels[0].text;
  hatir_tarih := Format('%s-%s-%d', [SL.Strings[0], SL.Strings[1], StrToIntDef(SL.Strings[2], 1{!}) + 3 ]);
  with  kontrolQRY do begin
        Close;
        SQL.Clear;
        SQL.Text := format('SELECT islem_tarihi, konu FROM hatirlatma WHERE islem_tarihi BETWEEN %s and %s', [TQ(sstatusbar1.panels[0].text), TQ(hatir_tarih)]);
        Open;
        while not Eof do begin
              smemo2.Lines.Add( format('"%s" Tarihinde "%s" konulu hatırlatmanız var', [FieldByName('islem_tarihi').AsString, FieldByName('konu').AsString]) );
              Next;
        end;
  end;
end;
Cevapla