if Rzradiobutton1.Checked=true and Rzradiobutton3.Checked=true and Rzradiobutton10.Checked=true
then begin
DataModule1.Rapor.Close;
DataModule1.Rapor.SQL.Clear;
datamodule1.Rapor.SQL.Add('select*from ckart,cislem where tarih between '''+DateEdit1.Text+'''and '''+DateEdit3.Text+'''');
datamodule1.Rapor.Open;
form55.ppReport1.Print;
end;
arkadaşlar. bu şekilde iki tarih aralığı döküman alıyorum ama tarih alanım dolu olma zorunda tarih alanım boş olduğu zaman da hata veriyor.ben tarih alanımı boş geçtiğim zaman tarih aralığı yapmadan tamamını döksün bana
umarım anlatabilmişimdir.Biraz sabahtan beri Bilgisayarın başında delphi ile uğraştığım için kafam basmaz oldu.
yardım eden arkadaşlardan şimdiden Allah razı olsun.
Bak tam olarak anlamış değilim ama kafama takılan :
arkadaşlar. bu şekilde iki tarih aralığı döküman alıyorum ama tarih alanım dolu olma zorunda tarih alanım boş olduğu zaman da hata veriyor.ben tarih alanımı boş geçtiğim zaman tarih aralığı yapmadan tamamını döksün bana
Biraz daha açıklama yabalirsen iyi olur;
Mümkünse Tablo yapını yazarmısın;
Tarih giriş alanını normalde nasıl kontrol ediyorsan aynı tekniği kullanabilirsin.En basiti tarih bileşenlerindeki değeri (text olarak..) bir TDateTime tipinde bir değişkene atamak ve try-except ile kontrol ettirmek..Zaten kırıldığı yere de küçük bi kontrol koyarak bu işlem için bir istisna yazabilirsin..
Kolay gelsin.
Blue Alone hocam olayı biraz daha açarmısınız acaba :
Assoft hocam olay şu ben iki tarih aralığı sorgulama yaptırıyorum ve tarih kısımlarına dateedit bileşeni kullandım yani adam raporlama yapcakken dataedit alanları boş geliyo ve adam ondan sonra tarihleri giriyor.tarih alanı boş olduğunda adam girmeyi unuttuğun proğram kırlıyor Olay bu :kolay gelsin.
Tarih bileşenlerindeki tarihin geçerli olup olmadığını kontrol ettikten sonra tarih varsa şart ifadesini bir stringe atamak (aksi halde boşluk atamak) ve sorgunun sonuna bunu ilave edip sorguyu çalıştırmak çözüm olur sanırım.
Eğer yanlış anlamadıysam sende iki adet dateedit var bunlara girilen değerler sorgu yaptırıyorsun ve dateeditlerden birisi boş olursa hata veriyor. Eğer sıkıntın buysa :
if (DateEdit1.text <>'')and(DateEdit2.text <>'')then
begin
if Rzradiobutton1.Checked=true and Rzradiobutton3.Checked=true and Rzradiobutton10.Checked=true
then begin
DataModule1.Rapor.Close;
DataModule1.Rapor.SQL.Clear;
datamodule1.Rapor.SQL.Add('select*from ckart,cislem where tarih between '''+DateEdit1.Text+'''and '''+DateEdit3.Text+'''');
datamodule1.Rapor.Open;
form55.ppReport1.Print;
end else
begin
Showmessage ('Tarih alanları Boş Olamaz');
end;
end;
selam zaten dateedit bileşeni Rx companentlerinde var.Ve kendisi zaten string halde
neden datetostr(dateedit1.tetx) yazdınızki bu tarihler zaten stringe dönüşmüş durumda kolay gelsin
Sorudan anladığım kadarıyla ilk tarih boş (null) ise select in where kısmı tarih < ikinci_tarih şeklinde, son tarih boş (null) ise tarih > ilk_tarih, her ikisi de boş (null) ise where kısmı olmayacak, tüm kayıtlar dönecek
Selam
Recep Abi yapamadım daha doğrusu istediğim gibi olmadı
ben quury master ve detay tablolarını inner join ile bazı alanlarını birleştirerek raporlama almaya çalışıyom bir sorun teşkil edermiki acaba bu tarihlerle ilgili hadisede.
Ben sadece yukarıda verdiğin query nin where kısmı için demiştim.. Sonuçta join olsa da tarihler arası almaya çalıştığında söylediğim yöntemi kullanmalısın..
Tabiki ne şekilde çözdüğünü buraya yazmalısın hatta bunu adet haline getirmeliyiz. Çünkü bu forumda bu gün itibari ile 1973 üye var eğer bu üyelerden biri bu sorunla karşılaşırsa sorunun neden kaynaklandığını yada çözümün ne olduğunu rahat bulabilsin öyle değil mi ?