Yazdırma ve Sorgulama ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Yazdırma ve Sorgulama ile ilgili

Mesaj gönderen selman »

selamunaleykum

Kod: Tümünü seç


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.
assoft

Mesaj gönderen assoft »

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;
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Aleyküm selam.

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.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

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.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Şöyle ki;

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.

Kod: Tümünü seç

 if tarihvar then
   tmpStr := 'Where tarih between...'
 else
   tmpStr := EmptyStr
 ...SQL.Add (tmpStr);
gibi...

Kolay gelsin..
assoft

Mesaj gönderen assoft »

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 :

Kod: Tümünü seç

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;
inşallah yanlış anlamamışım...
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
assoft hocam
verdiğiniz olayda hata verdi yine aynı hata
hata ise şu

Kod: Tümünü seç

conversiyon error from strings". ."
hatasını verdi.
Bluealone hocam sizin yöntemi daha deneyemedim. Kolay gelsin
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

datetostr(dateedi1.text)
type
Tform1 = class(Tform)
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

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
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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 :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

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.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

tşk ederim yardımcı olmaya çalışan herkese:sorunumu çözdüm elh.isteyen varsa buraya yazabilirim.
assoft

Mesaj gönderen assoft »

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 ?
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
olay aslında sql sorgulamamdan kaynaklanıyordu .bende.tarih alanlara params atayarak olay çözüldü
Kod:

Kod: Tümünü seç

datamodule1.Rapor.parambyname('tarih1').Value := dateedit1.Date; 
datamodule1.Rapor.parambyname('tarih2').value := dateedit3.Date; 
bu şekilde.Kolay gelsin.
Cevapla