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:)