procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer;
GUN_SAYISI:integer;
TARIH:tdate;
begin
if StrToIntDef (edit1.text,0) <1 then begin
ShowMessage('Lütfen Gün Sayısı Giriniz');
edit1.SetFocus;
exit;
end;
GUN_SAYISI:=strtoint(edit1.text);
TARIH:=datetimepicker1.date;
for i:= 1 to ( GUN_SAYISI-1 ) do
begin
ADOTable1.insert;
ADOTable1tarih.value :=IncDay(TARIH);
ADOTable1.post;
TARIH:= IncDay(TARIH);
end;
ADOTable1.Insert;
ADOTable1tarih.value:=IncDay(TARIH);
ADOTable1.post;
ADOTable1.requery;
ADOTable1.Last;
end;
Tarih sınırı nasıl olacak belirtmemişsin. Kodu aşağıdaki mantıkta yazdım.
Tarihler eşitse kayıt girilmiyor ve uyarı veriyor.
Örneğin;
Tarihler 30.05.2014 ve 31.05.2014 olarak girilirse, sadece 31.05.2014 tarihi kaydediliyor. Senin kodundan ilk tarihi dahil etmediğini anlıyorum.
procedure TForm1.Button1Click(Sender: TObject);
var Tarih: TDate;
begin
if DateTimePicker1.Date >= DateTimePicker2.Date then
begin
ShowMessage('İlk tarih son tarihten farklı ve küçük olmalıdır.');
Exit;
end;
Tarih := DateTimePicker1.Date + 1; // ilk tarihi dahil etmediğimizi anlıyorum.
while Tarih <= DateTimePicker2.Date do
begin
ADOTable1.Insert;
ADOTable1.FieldByName('TARIH').AsDateTime := Tarih; // ADOTable1tarih 'i anlamadığım için böyle yazdım
ADOTable1.FieldByName('ACIKLAMA').AsString := '';
ADOTable1.Post;
Tarih := Tarih + 1;
end;
ADOTable1.Requery;
ADOTable1.Last;
end;
procedure TSERVIS_SABLONU_PENCERE.btn1Click(Sender: TObject);
var
Tarih: TDate;
begin
if dtp1.Date >= dtp2.Date then
begin
ShowMessage('İlk tarih son tarihten farklı ve küçük olmalıdır.');
Exit;
end;
Tarih := dtp1.Date; // ilk tarihi dahil etmediğimizi anlıyorum.
while Tarih <= dtp2.Date+1 do
begin
qrySERVIS_HAREKETLERI_DB.Insert;
qrySERVIS_HAREKETLERI_DB.FieldByName('TARIH').value :=Tarih;
qrySERVIS_HAREKETLERI_DB.FieldByName('GUZERGAH_ID').AsString:= qryGUZERGAHLAR_DB.FieldByName('GUZERGAH_ID').Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('FIRMA_ID').AsString:=qryGUZERGAHLAR_DB.FieldByName('FIRMA_ID').Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('ARAC_ID').AsString:=qryGUZERGAHLAR_DB.FieldByName('ARAC_ID').Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('FIRMA_FIYAT').AsString:=qryGUZERGAHLAR_DB.FieldByName('FIRMA_FIYATI').Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('KIRALIK_FIYAT').AsString:=qryGUZERGAHLAR_DB.FieldByName('KIRALIK_FIYATI').Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('DONEM_YIL').AsString:=KULLANICI_KONTROL_PENCERE.QRY_CALISILAN_FIRMALAR_DBCALISILAN_YIL.Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('EKLEYEN').AsString:=KULLANICI_KONTROL_PENCERE.QRY_KULLANICI_DBKULLANICI_ADI.Text;
qrySERVIS_HAREKETLERI_DB.FieldByName('CALISILAN_FIRMA').AsString:=KULLANICI_KONTROL_PENCERE.CALISILAN_FIRMA_KOD.Text;
qrySERVIS_HAREKETLERI_DB.Post;
Tarih := Tarih + 1;
end;
qrySERVIS_HAREKETLERI_DB.Requery;
qrySERVIS_HAREKETLERI_DB.Last;
end;
O zaman bir hatan var. while döngüsündeki şarta göre hepsini kaydetmesi lazım. Varsa bir hata Adotable'ın insert ve post sırasıyla alakalıdır. Debug ederek kontrol edebilirsin. Muhtemelen ilk tarih kaydını, bir sonraki döngüde atıyor.
Ben prensip olarak kimseye kod yazmam, "balık tutmak" örneğini hatırlayın. soruna çözüm yolunu vermişin, hatta bilerek "IncDay(TARIH);" yazmadım çünkü verdiğin kodda sen kullanmışsın
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!