Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Quickreport e StringGrid

50 views
Skip to first unread message

LuigiPaolo

unread,
Apr 23, 2013, 3:37:43 PM4/23/13
to
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


Marco Breveglieri

unread,
Apr 23, 2013, 5:15:01 PM4/23/13
to
Il giorno martedì 23 aprile 2013 21:37:43 UTC+2, LuigiPaolo ha scritto:
> Ho due Stringgrid contenenti le seguenti stringhe
> 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

Giacomo Degli Esposti

unread,
Apr 24, 2013, 4:31:31 AM4/24/13
to
Il giorno martedì 23 aprile 2013 21:37:43 UTC+2, LuigiPaolo ha scritto:
> Ho due Stringgrid contenenti le seguenti stringhe
[...]
> 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.
[...]
> Ripeto non con TTable ma solo con StringGrid

Io userei due TClientDataset, riempiti con i dati delle due grid

ciao
Giacomo

Alberto Salvati

unread,
Apr 24, 2013, 5:08:44 AM4/24/13
to
Il tuo punti di vista non è corretto.

La stringgrid è INTERFACCIA UTENTE e non sa assolutamente nulla di relazioni master-detail.
Anche tdbgrid non ne sa nulla: infatti le relazioni master-detail sono definite a livello di tdataset.


> Ora vorrei creare una relazione Master-Details in QuickReport
> tra la StringGrid1 e la StringGrid2 con l'evento on NeedData

correzione: tu vuoi creare una master-detail sui DATI mostrati dalle 2 stringgrid, non delle stringgrid.


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

Con le stringrgid no. Avrai pure:

1) un "qualcosa" dal quale prendi i dati che metti poi nelle 2 grid
2) un set di regole che stabiliscono quali sono gli elementi figli dato un particolare elemento padre.

Dimentica le 2 stringrgid: devi partire da qui.

> Sono giorni che tento tutte le combinazioni sulle bande del QuickReport
> senza risultato.


Prima delle bande di qr devi ragionare sulla struttura dati che poi le bande di qr useranno.

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

Marco Breveglieri

unread,
Apr 24, 2013, 11:02:28 AM4/24/13
to
Il giorno mercoledì 24 aprile 2013 10:31:31 UTC+2, Giacomo Degli Esposti ha scritto:
> Io userei due TClientDataset, riempiti con i dati delle due grid

Ecco, in sintesi, il succo della mia risposta era questo. :D

LuigiPaolo

unread,
Apr 24, 2013, 5:13:53 PM4/24/13
to
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.

?


Alberto Salvati

unread,
Apr 25, 2013, 4:11:25 AM4/25/13
to

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

A.
0 new messages