1

Konu: Rapor Sayfasında Bölümler

Arkadaşlar ilk defa bir rapor sayfası hazırlayacağım. Benim sorum şöyle diyelim ki A4 kağıda öğrenci ÖSS karnesi hazırlayacağız. Kağıdı kullanım açısından yatay ve dikey 2'şer olmak üzere 4 bölüme ayırdığınızı hayal edin.
Diyelim ki sol üst tarafı öğrenci kişisel bilgileriyle doldurduk. Sağ üstte kalan bölüme daha önceki sınavlardan aldığı tüm puanları yerleştirebilir miyim. Sol alt taraftaki bölümü Her bir dersten yaptığı Doğru Yanlış sayılarını koyup Sağ alt köşeyi de sınavdaki her konudan başarılarını yerleştirebilir miyiz.
Yani bir sayfada bir öğrenciye ait farklı tablolardan derlenen bilgileri birden fazla detail band kullanarak veya başka yöntemle (alt alta yazmak zorunda kalmadan) sayfayı serbest kullanabilir miyim.

Benzer sorunla karşılaşan, fikri, çözüm önerisi olan var mı ?

Teşekkürler.

2

Re: Rapor Sayfasında Bölümler

Aklıma şöyle çözüm geldi. Sanırım her bölümde kullanacağın bilgiler farklı tablolarda. Her öğrenciye ait gerkli bölüm bilgilerini ayrı cursorlarda ve tek bir satır (record) olarak topla sonra mesala detail bandı a4 boyu kadar genişletip bu cursorlardaki bilgileri isteğin gibi yerleştir.

Biraz zor galiba  smile

3

Re: Rapor Sayfasında Bölümler

Hem de oldukça zor. Sen de benim gibi eski DOS Fox'çularındansın galiba smile

Başka yolu yok mu acaba ?

4

Re: Rapor Sayfasında Bölümler

bildiğim kadarı ile yok.... yapabilen varsa benim  de işime yarar çözümü..

5

Re: Rapor Sayfasında Bölümler

N tane yolu var.

1) Array, obje ve UDF kullan. Rapor için her detay satırı kontrol eden cursor kaydına eş. Yani toplam 5 kayıtlı bir cursor varsa 5 kere detay bantı kullanılacak demek. Onun dışında içeriğin gerçekte nereden geldiği önemli değil.

create cursor xx (x L)
for ix = 1 to 5
  insert into xx values (.f.)
endfor
report form ...

dediğinde o raporun detay bandı 5 kere tekrarlayacak. Cursorda sadece .F. var ama içeriği tamamen dışardıdan gelebilir. Mesela o bolumlerden birisinde:

Matematik 100
Turkce 99
...

gostermen gerekiyorsa maximum ders sayısı da 20 ise:

Visual Fox Pro
function dersNotlari(tnOgrID, taDers)

select dersadi, puan from dersler where ogrenciId = m.tnOgrId into array taDers
dimension taDers[20,2]
local ix
for ix=_tally +1 to 20
taDers[m.ix,1] = ""
taDers[m.ix,2] = 0
endfor

Rapor icinde 20*2 field koyarsın. Deyimleri aDers[1,1], aDers[1,2] ... aDers[20,1],aDers[20,2] olur.
Ya da:
GetDers(1,crsRapor.OgrId), GetDers(2,crsRapor.OgrId)....

Courier New gibi bir font ile tamamı DOS'taki gibi düz metin olabilir.
Obje kullanırsan daha kolay, tek objede N adet tabloyu alanlarıyla birlikte array olarak tutabilirsin.

2) VFP9 ile tablo ilişkileri ve birden fazla bant kullanabilirsin (emailime ulaşabilseydim, daha bugün müşterilerden birisi bakmam için bir rapor sayfasının goruntusunu postalamış, tam istediğin şey gibi. Sana gonderirdim. VFP9 multiple band ile birçok tablodan oluşan rapor. Unutmazsam yarın buraya kopyelerim). VFP9 raporlarında ilişkili tablolarla biraz oynarsan yaparsın.

3) HTML rapor. XML ve XSL birlikte kullanılarak (XMLAdapter, MSXML.DOMDocument) ya da tablolarda scan..endscan ile yazılabiliyor. Oldukca ugrastırıyor ama cok değişik raporlar yaratılabiliyor.

4) Word ve/veya Excel otomasyon. Kullanıcıların hemen hemen hepsinde ofis var. Onceden hazırlanmış kalıpları VFPden doldurup basabilirsin.

Başka yollar da var ama biraz kaçık olmak gerekiyor hiç soylemeyeyim daha iyi:)

6

Re: Rapor Sayfasında Bölümler

raporlara oldum olası ısınamadım. bence en güzeli word veya excelde bir şablon oluşturup onların içine yazdırmak. Ayrıca MS Office programlarının içindeki objeleri ve eventleri foxdan kontrol etmek de kolay.

Adesso 2008 (Code Name : Phoenix)

7

Re: Rapor Sayfasında Bölümler

üsdadım dediğinizi yapmak mümkündür.Anladığım kadarı ile konu analizli sınav sonuç karnesi yapmak istiyorsunuz.Bu konu ile ilgili şöyle bir çözüm getirmek mümkün.Kendi projemden size örnek vereyim.
rapor 4bölümden oluşuyor.

1.Bölümde öğrenci bilgileri veriliyor
2.Bölümde listelenmek istenen sınavla ilgili puan ve doğru yanlış net bilgileri veriliyor
3.Bölümde,öğrencinin daha önceden girdiği sınavlardan aldığı puanlar yer alıyor
4. Son bölümde ise seçilen sınavın ders ve konulara göre analiz bilgileri yer alıyor(3 kolon halinde 100-150 satır bilgi alacak şekilde,öss de bu kadar konudan soru çıkabiliyor)

Burada dikkat etmen gereken temel olay aslında konu analiz tablosudur.Her sınavdan sonra sistem her öğrenci için konu analizini yapıp bu tabloya yazmaktadır. rapor dosyası oluşturulurken(KONUANALIZ.DBF) esas alınarak,öğrenci numarasına göre guruplama yapılmalıdır.(wizard/repord vizard/group total wizard).Dolayısı ile hangi sınavın karnesini alacaksan otomatik olarak o sınava ait,konu analizlerini otomatik olarak detaya getirmiş oluyorsun.

2.Aşamada (KONUANALIZ.DBF) de sınav numaraları kayıtlı olduğundan,listesini aldığın sınav ile ilgili bilgileri(doğru,yanlış, net, puan vs),sınav tablosunu rapora ekleyip,gerekli relatonları oluşturup raporda "PAGE HEADER" bölümüne yerleştirip sınav bilgilerini vermiş oluyorsun.

3.Aşamada  (KONUANALIZ.DBF) de öğrenci numarası kayıtlı olduğundan "Öğrenci" tablosunu forma ekleyip gerekli bilgileri  "PAGE HEADER" a yerleştirip,öğrenci bilgilerini vermiş oluyorsun

4.Aşama ise Geçmiş sınavlar ile ilgili bilgiler vermek oluyor ki,Bence en zor olan kısım burasıdır.Burada öğrencinin almış olduğu puanlar sınav tablosunda kayıtlı ve birden fazla kayıt olduğundan,Bunu sistemde "SINAVTEMP.DBF" isimli bir geçici tablo ile her öğrenci için tek bir satırda tüm sınavları topluyorum.Ve bu bilgileride yukardaki mantıkta "PAGE HEADER" a ekleyip gerekli bilgileri veriyorum.
Burada zaten önceki sınavlar ile ilgili verilecek bilgiye aryılan alana ancak 20-25 sınav bilgisi sığabilmektedir.O yüzden tek bir satırda geçici bir tabloda birleştirmenin çok bir zararı yok gibi geliyor bana.Bu raporu foxpro 6 da bu şekilde yapmıştım.4.Aşama belki foxpro 9 da daha basit bir şekilde yapılabilir.Rapor çalıştığı için çok fazlada değiştirme ihtiyacı hissetmedim.
  Umarım yardımcı olabilmişimdir.Kolay gelsin

En büyük sermaye nakit,nakit sermaye vakittir...

8

Re: Rapor Sayfasında Bölümler

Arkadaşlar hepinize çok teşekkürler.
Ofis Otomasyonu ile yapmak, hazır bir excel şablonuna karne bastırmak (benim açımdan) çok kolay. Hatta zaten sınavın her türlü analizlerini Excel'e yazdırıyordum.

Visual Fox'ta yeni olduğum için ve sık sık bu gibi durumlarla karşılaşacağım için Fox'un raporlamasını da iyice öğreneyim dedim ama anladığım kadarıyla Fox'un raporlaması diğer tüm özellikleri kadar esnek değil.

Neyzen arkadaşım, rica etsem yaptığın raporun yazıcıdan çıkmış görünümü varsa jpeg olarak vs. örnek olması açısından maille gönderebilir misin.

Çetin Hocam, büyük ihtimalle senin 4. yöntemi kullanacağım ama bahsettiğin örnek rapor görüntüsünü de görürsem fena olmaz.

9

Re: Rapor Sayfasında Bölümler

XFRX in script özelliği ile aynı foxpro dos ta olduğu gibi istediğin gibi istediğin şekilde rapor dizayn edebilir ve excel, word, html, pdf, open office, bmp, jpeg, xml vs çok çeşitli şekillerde çıktı gönderebilirsin. ancak ücretli. ben kullanıyorum. ona karşı bir seçenek daha var frx2any. bir iki seçenek daha var ama bu ikisi en iyisi.
http://www.eqeus.com/

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

10

Re: Rapor Sayfasında Bölümler

Subreport özelliği var mı ve kullandın mı acaba ?
Yani rapor içine başka bir rapor gömülebiliyor mu, ne derece başarılı ?
Benim en çok istediğim sayfayı serbest kullanabileyim. Mesela soldaki uzayıp giden raporun sağ tarafına frame gibi bir şey açıp başka bir cursorden bir rapor(cuk), bir grafik vs. ekleyebileyim.

Eğer tavsiye ediyorsan ücreti önemli değil alabilirim. Deneme sürümü ve kısıtlama var mıdır acaba bir test etsem.

11

Re: Rapor Sayfasında Bölümler

Birisi bana nasil goruntu koyabilecegimi soylerse hemen gonderiyorum:)

12

Re: Rapor Sayfasında Bölümler

EVET, BENDE DAHA ÖNCE RESİM EKLEMEK İSTEDİM AMA BECEREMEMİŞTİM smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

13

Re: Rapor Sayfasında Bölümler

cetinbasoz yazdı:

Birisi bana nasil goruntu koyabilecegimi soylerse hemen gonderiyorum:)


l = Evaluate([xfrx("XFRX#DRAW")])
        l.addpicture(......

bunun dışında drawtext,drawpicture,drawrectangle vs.. vs.. birçok methot'u var. aynı foxpro dos ta olduğu gibi tamamen kodla istediğin gibi sayfa oluşturuyorsun. windowstaki standart sayfaları kullanmak zorunda değilsin.

ayrıca mesela vfp reportları için de chain özelliği preview anında da destekleniyor (vfp'de sadece yazdırırken).

diğer arkadaşın söylediği rapor içinde rapor da var. rapor üzerinde bir field ı tıklıyorsun. yeni bir alt rapor açılıyor veya istersen rapordaki bir cari kodu tıklıyorsun onun cari kartı açılıyor.

merak eden demosunu indirip iyice inceler ve içine sinince alır.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

14

Re: Rapor Sayfasında Bölümler

http://rapidshare.com/files/63874574/ra … k.GIF.html

adresine yukledim. Isteyen indirip bakabilir.
1) Ben rapor dizayninda oldum olasi kotuyumdur (formda da oyle:). Dizaynin kotulugune takilmayin.
2) Musterinin gizliligini korumak icin logo ve isimlerin uzerini kapattim.
3) Orada her renk aslinda fakli bir tablodan geliyor.
4) Bu gonderdikleri ornek tam sayfaya sigdigi icin boyle. Normalde alt tablolarla birlikte sigarsa ikinci kayit baslayacakti, ya da daha fazla alt kayit olsa sonraki sayfada devam edecekti (mutlaka tek ya da 2 sayfada olacak raporlar mumkun).

15

Re: Rapor Sayfasında Bölümler

konuyu hortlatayım

Visual Fox Pro
create cursor crsmak ( mak c(4),kapasite n(8,2),performans n(8,2))

insert into crsmak ("M001" , 82.21 ,93.94)
insert into crsmak ("M002" , 65.10 , 68.47)
insert into crsmak ("M003" , 44.58 , 100.00)
 
create cursor crsPERSONEL ( perkod c(4),kal n(8,2),performans n(8,2))
insert into crsPERSONEL ("P001" , 99.97 , 87.14)
insert into crsPERSONEL ("P002" , 99.51 , 100.00)
insert into crsPERSONEL ("P003" , 99.98 , 74.12)

bu şekilde birbirinden bağımsız 2 tabloyu
bir raporda 2 sütun olarak yazdırabilirmiyim, buna benzer uygulaması olan arkadaşlar örnek verebilirmi

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

16

Re: Rapor Sayfasında Bölümler

Tarik,
Bu cok kolay aslinda ve eski surumlerde bile olur (hatta fox 2x'te bile):

Visual Fox Pro
create cursor crsmak ( mak c(4),kapasite n(8,2),performans n(8,2))

insert into crsmak values ("M001" , 82.21 ,93.94)
insert into crsmak values ("M002" , 65.10 , 68.47)
insert into crsmak values ("M003" , 44.58 , 100.00)
 
create cursor crsPERSONEL ( perkod c(4),kal n(8,2),performans n(8,2))
insert into crsPERSONEL values ("P001" , 99.97 , 87.14)
insert into crsPERSONEL values ("P002" , 99.51 , 100.00)
insert into crsPERSONEL values ("P003" , 99.98 , 74.12)
insert into crsPERSONEL values ("P004" , 1.1 , 2.2)
 
Create Cursor dummy (dummy i)
For ix = 1 to Max(Reccount('crsMak'), Reccount('crsPersonel'))
    Insert into dummy values (m.ix)
endfor
Set Relation to dummy into crsMak, dummy into crsPersonel

Burada (dummy dosyasini kullanan) bir rapor yarat. Ilk sutuna crsMak'tan gelen alanlari ekle crsMak.Mak, crsMak.Kapasite ... gibi ve onlarin PrintWhen'ine:

Visual Fox Pro
!empty(crsMak.Mak)

koy. Sonra ikinci sutuna crsPersonel alanlarini crsPersonel.Perkod ... diye ekle. Onlarin printwhen'ine de:

Visual Fox Pro
!empty(crsPersonel.perkod)

koy. Bitti:)

17

Re: Rapor Sayfasında Bölümler

çetin bey çok teşekkür ederim,
bende report propertisten kolon ekleyip detail1,detail2 ekleyip yapmaya çalışmıştım ve sonuç olarak işin içinden çıkamamıştım smile
daha pratik yolu varmış. bilmeyince böyle oluyor işte smile
gösterdiğiniz yol ile hem pratik hemde güzel oldu
ilginiz için çok teşekkür ederim

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)