Access veritabanında iki tarih arasında listeleme yapmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Access veritabanında iki tarih arasında listeleme yapmak
benim sorum şöyle.
Access veritabanım var.
burda 1 tane kayit_tarihi isimli alanım var.
ben form üzerinde 1 adet buton 2 adet edit ve 2 adet datetimepicker koydum.
butona basınca datetimepickerlarda belirttiğim tarihleri editlara yazmak ve belirtilen tarihler arasında listeleme yapmak istiyorum.
delphide daha acemi olduğum için yapamadım.
yardımlarınızı bekliyorum.
herkese kolay gelsin
Access veritabanım var.
burda 1 tane kayit_tarihi isimli alanım var.
ben form üzerinde 1 adet buton 2 adet edit ve 2 adet datetimepicker koydum.
butona basınca datetimepickerlarda belirttiğim tarihleri editlara yazmak ve belirtilen tarihler arasında listeleme yapmak istiyorum.
delphide daha acemi olduğum için yapamadım.
yardımlarınızı bekliyorum.
herkese kolay gelsin
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
Kod: Tümünü seç
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >=:tarih1 and kayit_tarihi <=:tarih2');
adoquery1.params[0].asdate := datetimepicker1.date;
adoquery1.params[1].asdate := datetimepicker2.date;
adoquery1.open;
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
bu kodu ben anlayamadım (herhalde stored procedure deki input parametresi senin prosedure'ün yok veya içinde o input parametren yok) ama sen şu şekilde yapsan da olur. (Eğer procedure kullanmıyorsan.)kadirkurtoglu yazdı:Kod: Tümünü seç
adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select * from TABLO'); adoquery1.sql.add('where kayit_tarihi >=:tarih1 and kayit_tarihi <=:tarih2'); adoquery1.params[0].asdate := datetimepicker1.date; adoquery1.params[1].asdate := datetimepicker2.date; adoquery1.open;
ben alttaki gibi yapıyorum...
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >='+39#+datetimepicker1.date +39#+'and kayit_tarihi <='+39#+datetimepicker2.date+39#);
adoquery1.open;
bu şekilde bir dene istersen
En son baypipox tarafından 09 Nis 2007 11:36 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
@baypipox
- Bu şekilde olmaz.
1.- DateTimePicker'in DATE tipinde çıktısı vardır. Sen String tipindeymiş gibi işleme almışsın. Kendin bu şekilde kullandığına emin misin ?
2.- ( tek tırnak işareti ) koymaya çalışıyorsun 39# şeklinde değil #39 yani # karakteri kod öncesinde olmalı.
3.- Veritabanı tarih alanı DATE tipinde ise, bu işlemi direkt yapamazsın, SQL sorgu içerisinde de karşılaştırması yapılan BETWEEN'den sonraki tarihleri, iki tane # karakteri arasına alman gerekir.
4.- Yerine göre de AY ile GUN'ü de yer değiştiremen gerekebilmektedir
5.- Ayraç olarak / karakteri kullanmak gerekebilmektedir.
- Sonuç : Bunu bu şekilde denemek daha büyük sorunlarla boğuşmak demektir. Parametre kullanımı bu olumsuzların önüne geçecektir.
- Bu şekilde olmaz.
1.- DateTimePicker'in DATE tipinde çıktısı vardır. Sen String tipindeymiş gibi işleme almışsın. Kendin bu şekilde kullandığına emin misin ?
2.- ( tek tırnak işareti ) koymaya çalışıyorsun 39# şeklinde değil #39 yani # karakteri kod öncesinde olmalı.
3.- Veritabanı tarih alanı DATE tipinde ise, bu işlemi direkt yapamazsın, SQL sorgu içerisinde de karşılaştırması yapılan BETWEEN'den sonraki tarihleri, iki tane # karakteri arasına alman gerekir.
4.- Yerine göre de AY ile GUN'ü de yer değiştiremen gerekebilmektedir
5.- Ayraç olarak / karakteri kullanmak gerekebilmektedir.
- Sonuç : Bunu bu şekilde denemek daha büyük sorunlarla boğuşmak demektir. Parametre kullanımı bu olumsuzların önüne geçecektir.
muharrem abi haklısın ben onu başka işler için kullanıyormuşum.
Bu arada böyle bir yanlış yaptığım için çok utandım (39#) düzeltmelerin için saol abi.
Bu işler içinde fireberdde stored procedure'deki parametreme alttaki gibi bir gönderim yapmışım.... Pardon..
(ama sanki ben onu o şekilde başka bir yerde kullanmışım gibi hatırlıyom veya biraz değişiğini)
Bu arada böyle bir yanlış yaptığım için çok utandım (39#) düzeltmelerin için saol abi.
Bu işler içinde fireberdde stored procedure'deki parametreme alttaki gibi bir gönderim yapmışım.... Pardon..
(ama sanki ben onu o şekilde başka bir yerde kullanmışım gibi hatırlıyom veya biraz değişiğini)
Kod: Tümünü seç
datam.SP_Ariza_Raporu.close;
datam.SP_Ariza_Raporu.ParamByName('ip_tarih1').asdatetime:=DateTimePicker1.Date;
datam.SP_Ariza_Raporu.ParamByName('ip_tarih2').asdatetime:=DateTimePicker2.Date;
datam.SP_Ariza_Raporu.Open;
bir türlü yapamadım ya.iki tarih arası listeleme bu kadar zormudur ya.Değdim gibi delphide daha yeniyim.
2 tane datetimepicker olacak.butona basınca kayıt_tarihi alanıdaki kayıtları getirecek.
aşağıdaki sorguda 39#kısmında ")" expected but identifer 'date' found mesajı veriyor.
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >='+39#+datetimepicker1.date +39#+'and kayit_tarihi <='+39#+datetimepicker2.date+39#);
adoquery1.open;
aşağıdaki kodda
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >=:tarih1 and kayit_tarihi <=:tarih2');
adoquery1.params[0].asdate := datetimepicker1.date;
adoquery1.params[1].asdate := datetimepicker2.date;
adoquery1.open;
params kısmında hata veriyor.
adoquery kısmını query kullanarak yaptım.
query nin params kısmına field ekledim.
0
1
diye fakat yine olmadı.
arkdaşlar biliyorum çok uğraştıryorum sizi ama insan yapamayınca şevki kırılıyor.
2 tane datetimepicker olacak.butona basınca kayıt_tarihi alanıdaki kayıtları getirecek.
aşağıdaki sorguda 39#kısmında ")" expected but identifer 'date' found mesajı veriyor.
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >='+39#+datetimepicker1.date +39#+'and kayit_tarihi <='+39#+datetimepicker2.date+39#);
adoquery1.open;
aşağıdaki kodda
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from TABLO');
adoquery1.sql.add('where kayit_tarihi >=:tarih1 and kayit_tarihi <=:tarih2');
adoquery1.params[0].asdate := datetimepicker1.date;
adoquery1.params[1].asdate := datetimepicker2.date;
adoquery1.open;
params kısmında hata veriyor.
adoquery kısmını query kullanarak yaptım.
query nin params kısmına field ekledim.
0
1
diye fakat yine olmadı.
arkdaşlar biliyorum çok uğraştıryorum sizi ama insan yapamayınca şevki kırılıyor.
Kod: Tümünü seç
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO');
AdoQuery1.SQL.add('where kayit_tarihi BETWEEN :tarih1 and :tarih2');
AdoQuery1.Parameters.Parambyname('tarih1').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih1').Value := datetimepicker1.date;
AdoQuery1.Parameters.Parambyname('tarih2').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih2').Value := datetimepicker2.date;
AdoQuery1.Open;
valla bende access deki bu tarih kıstasını o zaman lar çözememiştim şöle bir uzunca yol ile halletmiştim ozamanlar.



Kod: Tümünü seç
procedure TfrmRapor.BtnRaporgorClick(Sender: TObject);
var
tarih1, tarih2 :String;
ay1,ay2,gun1,gun2,yil1,yil2:integer;
begin
Frmrapquery.Active:=False;
SayQuery.Active:=False;
ay1:=MonthOf(DateTimePicker1.Date);
gun1:=DayOf(DateTimePicker1.Date);
yil1:=YearOf(DateTimePicker1.Date);
ay2:=MonthOf(DateTimePicker2.Date);
gun2:=DayOf(DateTimePicker2.Date);
yil2:=YearOf(DateTimePicker2.Date);
tarih1:='#'+IntToStr(ay1)+'/'+IntToStr(gun1)+'/'+IntToStr(yil1)+'#';
tarih2:='#'+IntToStr(ay2)+'/'+IntToStr(gun2)+'/'+IntToStr(yil2)+'#';
Frmrapquery.SQL.Clear;
SayQuery.SQL.Clear;
Frmrapquery.SQL.text:='SELECT TBLISTEK_ANA.ISTEK_SECIM, count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA'+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+''+
' group by TBLISTEK_ANA.ISTEK_SECIM ;';
SayQuery.SQL.text:='SELECT count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA '+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+';';
SayQuery.Active:=True;
Frmrapquery.Active:=True;
end;
Bir kelimenin anlamını öğretsen bile yeter..



arkadaşlar benim databesim acceess database.
Bunun için sanırım iki tarih arası listeleme de access tarih için # koynak gerekiyor.
ama bir türlü yapamadım.
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO');
AdoQuery1.SQL.add('where kayit_tarihi BETWEEN :tarih1 and :tarih2');
AdoQuery1.Parameters.Parambyname('tarih1').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih1').Value := datetimepicker1.date;
AdoQuery1.Parameters.Parambyname('tarih2').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih2').Value := datetimepicker2.date;
AdoQuery1.Open;
yukarıdaki kodu denedim kıpırdama yok.
aşağıdaki kodu yazıyorum
Monthof da hata veriyor
procedure TfrmRapor.BtnRaporgorClick(Sender: TObject);
var
tarih1, tarih2 :String;
ay1,ay2,gun1,gun2,yil1,yil2:integer;
begin
Frmrapquery.Active:=False;
SayQuery.Active:=False;
ay1:=MonthOf(DateTimePicker1.Date);
gun1:=DayOf(DateTimePicker1.Date);
yil1:=YearOf(DateTimePicker1.Date);
ay2:=MonthOf(DateTimePicker2.Date);
gun2:=DayOf(DateTimePicker2.Date);
yil2:=YearOf(DateTimePicker2.Date);
tarih1:='#'+IntToStr(ay1)+'/'+IntToStr(gun1)+'/'+IntToStr(yil1)+'#';
tarih2:='#'+IntToStr(ay2)+'/'+IntToStr(gun2)+'/'+IntToStr(yil2)+'#';
Frmrapquery.SQL.Clear;
SayQuery.SQL.Clear;
Frmrapquery.SQL.text:='SELECT TBLISTEK_ANA.ISTEK_SECIM, count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA'+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+''+
' group by TBLISTEK_ANA.ISTEK_SECIM ;';
SayQuery.SQL.text:='SELECT count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA '+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+';';
SayQuery.Active:=True;
Frmrapquery.Active:=True;
end;
yapamıyorum ya ne zormuş ya bu iş.
Bunun için sanırım iki tarih arası listeleme de access tarih için # koynak gerekiyor.
ama bir türlü yapamadım.
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO');
AdoQuery1.SQL.add('where kayit_tarihi BETWEEN :tarih1 and :tarih2');
AdoQuery1.Parameters.Parambyname('tarih1').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih1').Value := datetimepicker1.date;
AdoQuery1.Parameters.Parambyname('tarih2').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih2').Value := datetimepicker2.date;
AdoQuery1.Open;
yukarıdaki kodu denedim kıpırdama yok.
aşağıdaki kodu yazıyorum
Monthof da hata veriyor
procedure TfrmRapor.BtnRaporgorClick(Sender: TObject);
var
tarih1, tarih2 :String;
ay1,ay2,gun1,gun2,yil1,yil2:integer;
begin
Frmrapquery.Active:=False;
SayQuery.Active:=False;
ay1:=MonthOf(DateTimePicker1.Date);
gun1:=DayOf(DateTimePicker1.Date);
yil1:=YearOf(DateTimePicker1.Date);
ay2:=MonthOf(DateTimePicker2.Date);
gun2:=DayOf(DateTimePicker2.Date);
yil2:=YearOf(DateTimePicker2.Date);
tarih1:='#'+IntToStr(ay1)+'/'+IntToStr(gun1)+'/'+IntToStr(yil1)+'#';
tarih2:='#'+IntToStr(ay2)+'/'+IntToStr(gun2)+'/'+IntToStr(yil2)+'#';
Frmrapquery.SQL.Clear;
SayQuery.SQL.Clear;
Frmrapquery.SQL.text:='SELECT TBLISTEK_ANA.ISTEK_SECIM, count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA'+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+''+
' group by TBLISTEK_ANA.ISTEK_SECIM ;';
SayQuery.SQL.text:='SELECT count (TBLISTEK_ANA.TARIH) FROM TBLISTEK_ANA '+
' WHERE TBLISTEK_ANA.TARIH between '+tarih1+' And '+tarih2+';';
SayQuery.Active:=True;
Frmrapquery.Active:=True;
end;
yapamıyorum ya ne zormuş ya bu iş.
@memoli79
- Göndermiş olduğum kodun çalışmaması gibi bir durum olmaz. Yaklaşımın ışığında daha basit bir kaç test noktası belirledim. Bunları deneyeceksin. Her test için müsatkil bir Tbutton koy ve o butona bastığında test işlemi olsun. BU üçlü test yaptığın hatayı ortaya çıkartacak.
1. TABLO isimli tablonda kayit_tarihi alanının içeriğini görmek için test amaçlı aşağıdaki kodu dene.
- Burada kayit_tarihi alanının dolu olup olmadığını kontrol et ve örnek iki tane tarihi (tarih aralığı testi için) bir kağıda not et.
2. Tarih aralığı kontrolü yaptığın DateTimePicker1 ve DateTimePicker2 yerine bu not aldığın tarihleri yazacaksın.
- Not aldığın tarihler 01.01.2007 ve 03.03.2007 olsaydı şöyle olacaktı. (Bu sadece örnek sen kendi örneğini kullanacaksın).
- Burada o iki tarih aralığını liste halinde göreceksin.
3. Daha önce verdiğim kodu kullanmaya hazırsın.
- DateTimePicker1 nesnesinde bir kenara not aldığın ve 2. aşamada listesini alabildiğin başlangıç tarihini, DateTimePicker2 nesnesine de yine not aldığın ikinci tarihi seçip sorgulamayı gerçekleştir.
- Bu adımda liste alamazsan sorunlar
a. Formunda daha fazla DateTimePicker var ve sen seçim yaptıkların olan değil başka iki tanesini kullanıyorsun. Örneğin DateTimePicker5 ve DateTimePicker6'da seçim yapıyorsun ama DateTimePicker1 ve DateTimePicker2'yi sorguluyorsun.
b. DateTimePicker1 ve DateTimePicker2 değerlerin sorgudan hemen önce yazdığın hatalı başka bir koddan ötürü seçilenden başka değerler alıyor.
- Göndermiş olduğum kodun çalışmaması gibi bir durum olmaz. Yaklaşımın ışığında daha basit bir kaç test noktası belirledim. Bunları deneyeceksin. Her test için müsatkil bir Tbutton koy ve o butona bastığında test işlemi olsun. BU üçlü test yaptığın hatayı ortaya çıkartacak.
1. TABLO isimli tablonda kayit_tarihi alanının içeriğini görmek için test amaçlı aşağıdaki kodu dene.
Kod: Tümünü seç
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO ORDER BY kayit_tarihi');
AdoQuery1.Open;
- Burada kayit_tarihi alanının dolu olup olmadığını kontrol et ve örnek iki tane tarihi (tarih aralığı testi için) bir kağıda not et.
2. Tarih aralığı kontrolü yaptığın DateTimePicker1 ve DateTimePicker2 yerine bu not aldığın tarihleri yazacaksın.
- Not aldığın tarihler 01.01.2007 ve 03.03.2007 olsaydı şöyle olacaktı. (Bu sadece örnek sen kendi örneğini kullanacaksın).
Kod: Tümünü seç
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO');
AdoQuery1.SQL.add('where kayit_tarihi BETWEEN :tarih1 and :tarih2');
AdoQuery1.Parameters.Parambyname('tarih1').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih1').Value := StrToDate( '01.01.2007' );
AdoQuery1.Parameters.Parambyname('tarih2').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih2').Value := StrToDate( '03.03.2007' );
AdoQuery1.Open;
3. Daha önce verdiğim kodu kullanmaya hazırsın.
Kod: Tümünü seç
ShowMessageFmt('Sorgusu Yapılan Tarih Aralığı %s - %s', [ DateToStr(datetimepicker1.date), DateToStr(datetimepicker1.date)]);
AdoQuery1.Close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.add('select * from TABLO');
AdoQuery1.SQL.add('where kayit_tarihi BETWEEN :tarih1 and :tarih2');
AdoQuery1.Parameters.Parambyname('tarih1').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih1').Value := datetimepicker1.date;
AdoQuery1.Parameters.Parambyname('tarih2').DataType := ftDate;
AdoQuery1.Parameters.Parambyname('tarih2').Value := datetimepicker2.date;
AdoQuery1.Open;
ShowMessageFmt(Listelenen Tarih Aralığı %s - %s', [ DateToStr(datetimepicker1.date), DateToStr(datetimepicker1.date)]);
- Bu adımda liste alamazsan sorunlar
a. Formunda daha fazla DateTimePicker var ve sen seçim yaptıkların olan değil başka iki tanesini kullanıyorsun. Örneğin DateTimePicker5 ve DateTimePicker6'da seçim yapıyorsun ama DateTimePicker1 ve DateTimePicker2'yi sorguluyorsun.
b. DateTimePicker1 ve DateTimePicker2 değerlerin sorgudan hemen önce yazdığın hatalı başka bir koddan ötürü seçilenden başka değerler alıyor.
arkadaşlar sonunda oldu.İki tarih arsı listeleniyor.
database access olduğu için separator kullandım.
formda 2 tane datetimepicker ve bir adet buton ile yapılan kod aşağıdaki gibidir.
DateSeparator := '/';
ShortDateFormat := 'dd/mm/yyyy';
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('SELECT * FROM arsivtbl');
ADOQuery1.sql.add('WHERE Kayit_tarihi BETWEEN #' + FormatDateTime('mm/dd/yyyy', dtp1.Date) + '#');
ADOQuery1.SQL.Add(' and #' + FormatDateTime('mm/dd/yyyy', dtp2.Date) + '#');
ADOQuery1.Active := True;
database access olduğu için separator kullandım.
formda 2 tane datetimepicker ve bir adet buton ile yapılan kod aşağıdaki gibidir.
DateSeparator := '/';
ShortDateFormat := 'dd/mm/yyyy';
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('SELECT * FROM arsivtbl');
ADOQuery1.sql.add('WHERE Kayit_tarihi BETWEEN #' + FormatDateTime('mm/dd/yyyy', dtp1.Date) + '#');
ADOQuery1.SQL.Add(' and #' + FormatDateTime('mm/dd/yyyy', dtp2.Date) + '#');
ADOQuery1.Active := True;
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Faydalı olması dileğimle..
Saygılar..
Kod: Tümünü seç
Uses DateUtils, ..., ..., ....
var
C: TADOQuery;
begin
.
.
.
// Bu ayki veriler...
C.SQL.Text := 'SELECT * FROM T1 WHERE DATEDIFF("m", Tar, :A) = 0';
C.Parameters.ParamByName('A').Value := Now;
C.Open;
.
.
.
// Geçen ayki veriler...
C.SQL.Text := 'SELECT * FROM T1 WHERE DATEDIFF("m", Tar, :A) = 1';
C.Parameters.ParamByName('A').Value := Now;
C.Open;
.
.
.
// Bir gün öncesinin verileri...
C.SQL.Text := 'SELECT * FROM T1 WHERE DATEDIFF("d", Tar, :A) = 1';
C.Parameters.ParamByName('A').Value := Now;
C.Open;
.
.
.
// Bu günün verileri...
C.SQL.Text := 'SELECT * FROM T1 WHERE DATEDIFF("d", Tar, :A) = 0';
C.Parameters.ParamByName('A').Value := Now;
C.Open;
.
.
.
// Alternatif: Bu aykiler
C..SQL.Text := 'SELECT * FROM T1 WHERE TAR >= :A AND TAR <= :B ';
C.Parameters.ParamByName('A').Value := StartOfTheMonth(Now);
C.Parameters.ParamByName('B').Value := EndOfTheMonth(Now);
C.Open;
.
.
.
// Alternatif: Geçen aykiler
C..SQL.Text := 'SELECT * FROM T1 WHERE TAR >= :A AND TAR <= :B ';
C.Parameters.ParamByName('A').Value := StartOfTheMonth(IncMonth(Now, -1));
C.Parameters.ParamByName('B').Value := EndOfTheMonth(IncMonth(Now, -1));
C.Open;
.
.
.
// İki tarih Arası
// DTP1 ve DTP2; DateTimePicker'dır...
C..SQL.Text := 'SELECT * FROM T1 WHERE TAR >= :A AND TAR <= :B ';
C.Parameters.ParamByName('A').Value := DTP1.Date;
C.Parameters.ParamByName('B').Value := DTP2.Date;
C.Open;
.
.
.
end;