iki tarih arası sorgulama

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

iki tarih arası sorgulama

Mesaj gönderen tuna »

select * from REZERVASYON WHERE KORT=1 and (BASLANGIC <= '05.02.2009 14:30:00' and BITIS >= '05.02.2009 15:30:00')

Yukarıdaki sorguyu bir türlü beceremedim arkadaşlar.

Problem şu iki adet fieldım var biri BASLANGIC diğeri BITIS datetime veri tipindeler.

içerlerinde tarih ve ssat yazıyor. İstediğim şu verdiğim sorgu aralığında kayıt varmı yokmu. Ama birtürlü istediğim olmuyor.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: iki tarih arası sorgulama

Mesaj gönderen unicorn64 »

muhtemelen tarih formatından kaynaklı hata alıyorsunuz.
daha detaylı cevap için imzama bakın lütfen...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: iki tarih arası sorgulama

Mesaj gönderen tuna »

Ben hata alıyorum diye yazmadım ki. Hata olsa bende yazmasını bilirim. İmzandaki yazılar benim sorum için geçerli değil kanaatindeyim.
Benim sorunum istediğim sonuç gelmiyor. Sorgulama yapıyor fakat belirttiğim saat tarih aralığı değil filan. Varsa bunu sorgulamanın başka bir yöntemi onu sormuştum.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: iki tarih arası sorgulama

Mesaj gönderen unicorn64 »

vb, vs diye özellikle yazmıştım ama neyse. bence "Ama birtürlü istediğim olmuyor" da aynı gruptan ve imzama bakın diye bunun için demiştim.

sorgunuz tarih formatı dışında doğru gibi 5.2.2009 tarihinden önce başlayıp bitmemiş kayıtları getirmesi gerek.

where kısıtını şu şekilde düzenlermisin

Kod: Tümünü seç

(BASLANGIC <= '2009-02-05 14:30:00' and BITIS >= '2009-02-05 15:30:00')
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: iki tarih arası sorgulama

Mesaj gönderen conari »

anladığım kadarı ile bir saatlik bir arayı raporlamaya çalışıyorsunuz.

Kod: Tümünü seç

(BASLANGIC >='2009-02-05 14:30:00' and BITIS <= '2009-02-05 15:30:00')
olmalı.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
chasteeer
Üye
Mesajlar: 15
Kayıt: 24 Nis 2009 01:18

Re: iki tarih arası sorgulama

Mesaj gönderen chasteeer »

Merhaba,
Benimde benzer bir sorunum var.
Ben stok programı yapıyorum.Bilgileri yazıp kaydediyorum ve dbgrid te görünüyor.Tarih sorgulama yapacagım bu girişler ile ilgili.Ama arkdasın dediği gibi değil.Sadece 2 tarih arasında ki girişleri göstersin bana..
Bunun için ne kullanmalıyım ?

Kod: Tümünü seç

adoquery.SQL.Add('SELECT * from tablo WHERE (tarih BETWEEN :Tar1 and :Tar2)');
adoquery.Parameters.ParamByName('Tar1').Value := DateTimePicker1.Date;
adoquery.Parameters.ParamByName('Tar2').Value := DateTimePicker2.Date; 
Eğer bu kod benim dediğimi kaşılıyorsa ne gibi ekleme yapmam lazım forumuma ?(Buton,component olarak )
Teşekkürler..

Forumları gezerken bir kod daha buldum.İşime yarar mı acaba ?

Kod: Tümünü seç

   1.
      procedure TForm1.sButton6Click(Sender: TObject);
   2.
      begin
   3.
          if (sdateEdit1.Modified=false) and (sdateEdit2.Modified=false) Then
   4.
          ShowMessage('En Az Bir Parametre Girmelisiniz')
   5.
          else if sdateEdit1.Modified=false Then
   6.
          begin
   7.
            Query1.SQL.Clear;
   8.
            Query1.SQL.Add('Select * from FATURA Where FATURATARIH<=:FAT');
   9.
            Query1.Params[0].AsDate:=StrToDate(sdateEdit2.Text);
  10.
            Query1.Open;
  11.
          end
  12.
          else if sdateEdit2.Modified=false Then
  13.
          begin
  14.
            Query1.SQL.Clear;
  15.
            Query1.SQL.Add('Select * from FATURA Where FATURATARIH>=:FAT');
  16.
            Query1.Params[0].AsDate:=StrToDate(sdateEdit1.Text);
  17.
            Query1.Open;
  18.
          end
  19.
          else
  20.
          begin
  21.
            Query1.SQL.Clear;
  22.
            Query1.SQL.Add('Select * from FATURA Where FATURATARIH>=:FAT and FATURATARIH<=:FAT2');
  23.
            Query1.Params[0].AsDate:=StrToDate(sdateEdit1.Text);
  24.
            Query1.Params[1].AsDate:=StrToDate(sdateEdit2.Text);
  25.
            Query1.Open;
  26.
      end; 
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: iki tarih arası sorgulama

Mesaj gönderen conari »

Gride Tablo bağladı iseniz olmaz.
ADOquery bağlamalısın.
bir adoquery,bir datasource,bir dbgrid, bir buton, 2 datetimepicker yeterli
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
beylerbeyi
Üye
Mesajlar: 1
Kayıt: 06 May 2009 02:15

Re: iki tarih arası sorgulama

Mesaj gönderen beylerbeyi »

procedure TForm10.BitBtn2Click(Sender: TObject);
var
sorgu:String;

begin
Form1.Close;

sorgu:=('select * from borcalacak WHERE (tarih BETWEEN :Tar1 and :Tar2)');
Form1.CommandText:=sorgu;
Form1.Parameters.ParamByName('Tar1').Value := DateToStr(DateTimePicker2.Date);
Form1.Parameters.ParamByName('Tar2').Value := DateToStr(DateTimePicker3.Date);
Form1.Open;

bu kodu denersen sana yardımcı olacaktır
chasteeer
Üye
Mesajlar: 15
Kayıt: 24 Nis 2009 01:18

Re: iki tarih arası sorgulama

Mesaj gönderen chasteeer »

CommandText ne oluyor acaba ?
chasteeer
Üye
Mesajlar: 15
Kayıt: 24 Nis 2009 01:18

Re: iki tarih arası sorgulama

Mesaj gönderen chasteeer »

http://tinypic.com/r/16jg0av/5
http://i43.tinypic.com/16jg0av.jpg

bu hata neyden kaynaklanıyor acaba lütfen yardım edin kafayı yiyeceğim :((
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: iki tarih arası sorgulama

Mesaj gönderen conari »

Parametreye değer atamamışsın sanırım.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
chasteeer
Üye
Mesajlar: 15
Kayıt: 24 Nis 2009 01:18

Re: iki tarih arası sorgulama

Mesaj gönderen chasteeer »

Kodum şu şekilde;

begin
if (Edit2.Modified=false) and (Edit3.Modified=false) Then
ShowMessage('En Az Bir Parametre Girmelisiniz')
else if Edit2.Modified=false Then
begin
Query1.SQL.Clear;
Query1.SQL.Add('Select * from Clothes_Hasan_DB Where Date<=:date');
Query1.Params[0].AsDate:=StrToDate(Edit3.Text);
Query1.Open;
end
else if Edit3.Modified=false Then
begin
Query1.SQL.Clear;
Query1.SQL.Add('Select * from Clothes_Hasan_DB Where Date>=:date');
Query1.Params[0].AsDate:=StrToDate(Edit2.Text);
Query1.Open;
end
else
begin
Query1.SQL.Clear;
Query1.SQL.Add('Select * from Clothes_Hasan_DB Where Date>=:date and date<=:date2');
Query1.Params[0].AsDate:=StrToDate(Edit2.Text);
Query1.Params[1].AsDate:=StrToDate(Edit3.Text);
Query1.Open;
end;
end;
end.

Ama hata nerede :(
Paradox ta yapıyorum
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: iki tarih arası sorgulama

Mesaj gönderen tuna »

Date olarak değilde string olarak göndermeyi deneyebilirsin.

Query1.SQL.Clear;
Query1.SQL.Add('Select * from Clothes_Hasan_DB Where Date<=:date');
Query1.Params[0].AsString:=Edit3.Text;
Query1.Open;

emin değilim ama denemekte fayda var.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: iki tarih arası sorgulama

Mesaj gönderen conari »

Paradox ile ilgili ise MS SQL servera niye soruyorsunuz hocam.
Queryinin Parametre listesine tıklayın orada parametrelerin type(sanırım bu idi) alanını Date olarak seçin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
chasteeer
Üye
Mesajlar: 15
Kayıt: 24 Nis 2009 01:18

Re: iki tarih arası sorgulama

Mesaj gönderen chasteeer »

Yardımcı olan herkese teşekkür ederm.Biraz kitaplardan biraz da netten araştırarak çok güzel kod buldum.Filtreleme yöntemi ile 2 tarih arası sorgulama yapıyorum ve radiogroup ile birden fazla seçim yapabiliyorum filtreleme için (Barkod No,Stock vs...)
Simdi geriye kaldı güzel bir search kodu bulmak..
Filtreleme;

Kod: Tümünü seç

var
m:String;
begin
if radiogroup1.itemindex=0 then
begin
maskedit1.editmask:='!999999;1;-';
maskedit2.editmask:='!999999;1;-';
table1.indexname:='ProductCodeindeksi';
m:='ProductCode';
end;
if radiogroup1.itemindex=1 then
begin
Maskedit1.editmask:='!99/99/0000;1;_';
maskedit2.editmask:='!99/99/0000;1;_';
table1.indexname:='Dateindeksi';
m:='Date';
end;
Burada ben sadece numara ve tarih filtreleyebiliyorum.İsim filtrelemek için kodta ne gibi değişiklik yapmak lazım ?
Cevapla