Newsgroup: it.comp.lang.delphi
Titolo: Quickreport e StringGrid

Ho due Stringgrid contenenti le seguenti stringhe
 
StringGrid1(Master)
 
aaaaa
 
bbbbb
 
ccccc
 
ddddd
 
StringGrid2(Details)
 
aaaaa a1
 
aaaaa a2
 
aaaaa a3
 
bbbbb b1
 
bbbbb b2
 
bbbbb b3
 
ccccc c1
 
ccccc c2
 
ccccc c3
 
ddddd d1
 
ddddd d2
 
ddddd d3
 
Ora vorrei creare una relazione Master-Details in QuickReport
 
tra la StringGrid1 e la StringGrid2 con l'evento on NeedData
 
ci sono riuscito usando però Tabelle di database,vorrei invece farlo senza 
tabelle ma
 
solo con le due StringGrid,è possibile farlo?Mi sa di no.
 
Sono giorni che tento tutte le combinazioni sulle bande del QuickReport 
senza risultato.
 
In pratica vorrei che risultasse una struttura così:
 
?
 
aaaaa
 
a1
 
a2
 
a3
 
bbbbb
 
b1
 
b2
 
b3
 
ecc. ecc.
 
Grazie per una eventuale risposta o consiglio.
 
Ripeto non con TTable ma solo con StringGrid
 
 

 Ripeto non con TTable ma solo con StringGrid
 
La *TStringGrid* è un controllo visuale che non ha nulla a che vedere con i controlli disponibili in QuickReport: devi copiare i tuoi dati almeno in un DataSet di qualche tipo da rendere disponibile nel report stesso, tramite *TDataSource*, per poterli stampare.
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

 Ripeto non con TTable ma solo con StringGrid
 
Io userei due TClientDataset, riempiti con i dati delle due grid
 
ciao
Giacomo
 

 Ripeto non con TTable ma solo con StringGrid
 
Giusto qlc precisiazione: 
 
1) TTable si usa solo per database fileserver come paradox o eventualmente access. Per i db client/server si usa TQuery/TAdoQuery/TSqlQuery.
 
 
2) mettere sullo stesso piano TTable e StringGrid è sbagliato in quanto sono oggetti che fanno cose diverse; questa cosa è un po come mettere a paragone un tostapane ed un lettore mp3.
 
 
3) Usare dei clientdataset di appoggio è una tecnica decisamente comoda.
Ma questa tecnica non è un MUST: è un qualcosa che PUOI fare ma non è detto che DEVI fare. 
Io con ReportBuilder ho costruito stampe anche complesse senza passare da alcun dataset ma usando strutture dati definite da me.
 
 
 
A.

 Io userei due TClientDataset, riempiti con i dati delle due grid
 
Ecco, in sintesi, il succo della mia risposta era questo. :D


Grazie per le vostre risposte.
 
Sono riuscito a risolvere il problema per vie traverse usando solo la
 
StringGrid1
 
ColA ColB
 
aaaaa a1
 
aaaaa a2
 
aaaaa a3
 
bbbbb b1
 
bbbbb b2
 
bbbbb b3
 
ccccc c1
 
ccccc c2
 
ccccc c3
 
ddddd d1
 
ddddd d2
 
ddddd d3
 
?
 
?
 
dal momento che le righe SubDetail della ColB le conosco a priori
 
ho caricato in una banda Detail tutta la ColA
 
nella banda SubDetails tutta la ColB,poi con decine di IF
 
sullo evento BeforePrint della Detail
 
ho calcolato a manina quali righe della ColA dovevo nascondere
 
(PrintBand:=False)
 
ed ho ottenuto quello che volevo cioè:
 
aaaaa (notare questa riga è sopra a1 e non sulla stessa linea!!)
 
a1
 
a2
 
a3
 
bbbbb
 
b1
 
b2
 
b3
 
ecc. ecc.
 
Dal momento che le righe della ColA al massimo nella mia applicazione 
saranno 250x3
 
o 250x4 o 250x5 (3-4-5 ecc sono il numero di righe della ColB in riferimento 
ai valori unici della ColA)
 
si può fare per una sola volta il calcolo a manina (devo trovare il modo con 
una funzione di trovare
 
quali sono le righe da righe da nascondere,tenendo presente che i valori 
della ColB saranno sempre fissi ,
 
non ci sarà per esempio
 
aaaa a1
 
aaaa a2
 
aaaa a3
 
bbbb b1
 
bbbb b2
 
bbbb b3
 
bbbb b4 questa riga non ci sarà mai se <aaaa> contiene 3 righe
 
ma sarà così:
 
aaaa a1
 
aaaa a2
 
aaaa a3
 
bbbb b1
 
bbbb b2
 
bbbb b3
 
Lo sapevo benissimo che ci vogliono i DataSet(sono venti anni che programmo 
con Delphi...e i DataBase e FastReport,QuickReport
 
lo uso solo in questa mia applicazione perchè è leggero)
 
Ho provato nei giorni scorsi ad usare il ClientDataSet,purtroppo per ogni 
mia
 
StringGrid (ne ho 50 in codesta applicazione,che serve a calcolare i turni 
con un particolare algoritmo nei tornei di Scacchi,dama e altri)mi sarei 
dovuto creare un CDS,quando invece per ogni torneo uso un solo file di testo 
in cui ho tutti i dati conglobati e cryptati.
 
Mi chiedevo solo se con qualche via traversa era possibile ottenere la 
struttura di cui sopra non solo per poche centinaie di righe
 
ma per un numero indefinito di righe.
 
?
 
 

 
..bastava associare a ogni stringa di grid1 una tstringlist degli elementi figli.
Questo tramite la property objects di TSTringList.
 
A.