Selam,
Aşağıdaki gibi bir kodum var. tarih bilgilerini elimle yazdığımda kod çalışıyor ama datetimepicker dan alamıyorum. Neyi gözden kaçırıyorum acaba?
procedure TForm3.BitBtn1Click(Sender: TObject);
var
tarihilk,tarihson : Tdate;
begin
tarihilk :=form2.DateTimePicker1.Date;
tarihson :=form2.DateTimePİcker2.Date;
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE (tarih >= "tarihilk") and
(tarih <= "tarihson")');
form3.Query1.SQL.Add ('order by tarih desc');
form3.Query1.open;
end;
SQL DateTimePicker sorunu..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Genel olarak runtime'da oluşturulan bir SQL cümlesinin hata vermesi durumunda ilk yapılacak şey Query.Open veya Query.ExecSQLsatirlarindan hemen önce ya showmessage(Query1.SQL.text) ile ya da watch yöntemi ile oluşturulan sql cümlesine bakmaktır. Gözel hata görülemiyorsa bu cümle yani caliştirilmak üzere olan bu cümle kopyalanıp SQL explorer gibi bir araç üzerinden doğrudan çalıştırılarak hata burada bulunmaya çalışılmalıdır. Tarih alanlarındaki format farkliliklarindan dolayi kullandığınız yöntem ile bu tür hatalar olması muhtemeldir. Bunun yerine parametre kullanmayi deneyin.
Yani.
gibi.....
Kolay gelsin...
Yani.
Kod: Tümünü seç
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE (tarih >= :tarihilk) and (tarih <= :tarihson)');
form3.Query1.ParamByName('tarihilk').AsDate:=form2.DateTimePicker1.Date;
form3.Query1.ParamByName('tarihson').AsDate:=form2.DateTimePicker2.Date;
Kolay gelsin...
İlginiz için çok teşekkür ederim.
Gece sabaha kadar uğraştım ve en sonunda konuyu şu şekilde çözdüm.
Çalışıyor.
procedure TForm3.BitBtn1Click(Sender: TObject);
var
tarihilk, tarihson : string;
begin
tarihilk :=(formatdatetime('mm', form2.DateTimePicker1.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker1.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker1.Date));
tarihson :=(formatdatetime('mm', form2.DateTimePicker2.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker2.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker2.Date));
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE tarih between ' + quotedstr(tarihilk) + ' and ' + quotedstr(tarihson));
form3.Query1.SQL.Add ('order by tarih desc');
form3.Query1.open;
end;
Gece sabaha kadar uğraştım ve en sonunda konuyu şu şekilde çözdüm.
Çalışıyor.
procedure TForm3.BitBtn1Click(Sender: TObject);
var
tarihilk, tarihson : string;
begin
tarihilk :=(formatdatetime('mm', form2.DateTimePicker1.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker1.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker1.Date));
tarihson :=(formatdatetime('mm', form2.DateTimePicker2.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker2.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker2.Date));
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE tarih between ' + quotedstr(tarihilk) + ' and ' + quotedstr(tarihson));
form3.Query1.SQL.Add ('order by tarih desc');
form3.Query1.open;
end;
Kod: Tümünü seç
where
case
when State = 'C' then case
when captdate IS NOT NULL then captdate
else DATEADD(hour, DATEPART(hour, Timecapt),
DATEADD(mi, DATEPART(mi, Timecapt),
DATEADD(ss, DATEPART(ss, Timecapt), Datecapt)
)
)
end
when State IN ('CR') then case
when captrevdate IS NOT NULL then captrevdate
else DATEADD(hour, DATEPART(hour, Timecaptreverse),
DATEADD(mi, DATEPART(mi, Timecaptreverse),
DATEADD(ss, DATEPART(ss, Timecaptreverse),
Datecapt)
)
)
end
when State IN ('RE') then case
when retdate IS NOT NULL then retdate
else DATEADD(hour, DATEPART(hour, Timereturn),
DATEADD(mi, DATEPART(mi, Timereturn),
DATEADD(ss, DATEPART(ss, Timereturn),
Datereturn)
)
)
end
end
between ? and ?
tskr ederim...