CRYSTAL REPORT - COLONNE E RIGHE DINAMICHE

lunedì 20 febbraio 2006 - 18.10

yag2 Profilo | Newbie

SALVE MI trovo a sviluppare un rerport con vb e crystal XI in cui ho

una struttura dinamica sia delle colonne che delle righe in più ho dei dati che non possono essere direttamente pescati dal db
ma devono essere elaborati via codice.

quindi la situazione questa

ho le colonne dimamiche per ogni colonne dovrei avere altre n (4 sotto colonne)
e per ognuna di queste una riga

graficamente una cosa del genere

x--|---c1----|----c2----|----cn----|
x--|c1a-c2b||c1a-c2b||c1a-c2b|
r1-|xxxxxxxxxxxxxxxxxxxxxxxx|
r2-|xxxxxxxxxxxxxxxxxxxxxxxx|
rn-|xxxxxxxxxxxxxxxxxxxxxxxx|


mi serve una mano per capire come gestire questa situazione dimamicamente

grazie ciao

freeteo Profilo | Guru

ciao,
per risolvere problemi di questo genere crystal mette a disposizione 1 oggetto chesi chiama "cross-tab" (it: campi incrocciati) dove graficamente vai ad aggingere le colonne e le righe ed entrambe possono variare.
Ad esempio se hai utenti,spese,clienti come colonne di 1a datatable, puoi mettere utenti come colonna e clienti come righe, poi metti il campo spese come campo da valutare e lui a forma matriciale ti fa gli intrecci...

Inoltre (esattamente come vuoi fare tu) puoi mettere dei campi che ti funzionino da sottocolonne, facendo cosi' 1a sorta di "raggruppamento" , basta aggiungere all'insieme colonne e ci pensa lui...

con questo strumento, è l'unico modo che hai di avere colonne dinamiche, altrimenti lavori con i raggruppamenti etc e definisci il solito template e poi nella zona dettagli metti i valori che vuoi e quindi si comporta come il classico che non è quello che ti interessa ovviamente...

Prova a darci 1occhiata...ciao

ps:non ho ancora usato a fondo la versione XI ma ho visto che questi oggetti rimangono,vista anche la loro importanza ;-) ed anche con l'aggiunta di altre funzionalita'...
Matteo Raumer
MCAD.net - net addicted :-)
http://blogs.dotnethell.it/freeteo

yag2 Profilo | Newbie

io sto cercando di usare quell'oggetto

ma non capisco come fare via codice e neanche design time ci sono riuscito
ti pasto un pò di codice:

Set CRXSection = CRXReport.Sections.Item("RH")
Set CRXCrossTab = CRXSection.ReportObjects(1)
CRXCrossTab.BorderColor = RGB(255, 0, 0)
CRXCrossTab.HasDropShadow = True

With CRXCrossTab
'Here we add the fields for the Xtab. In this case
'we specify the fields by their database field index.
.ColumnGroups.Add CRXReport.Database.Tables(2).Fields(2)
Set oTabGroup = .ColumnGroups(1)
oTabGroup.EnableSuppressSubtotal = True


.ColumnGroups.Add CRXReport.Database.Tables(2).Fields(3)
.ColumnGroups.Add CRXReport.Database.Tables(2).Fields(3)
.ColumnGroups.Add CRXReport.Database.Tables(2).Fields(3)

.RowGroups.Add CRXReport.Database.Tables(2).Fields(1)

'.SummaryFields.Add CRXReport.Database.Tables(1).Fields(3)
End With

freeteo Profilo | Guru

ciao,
sinceramente non mi sono mai avventurato a modificare a customizzare la crosstab via codice, piuttosto mi sono sempre affidato a campi formula nel caso ne avessi bisogno
Ad ogni modo via editor di Crystal puoi impostare 1po di proprieta' formattando la crosstab e specificandogli 1po di raggruppamenti come ti dicevo prima:


788x503 17Kb


i cerchi indicao come facendo il drag&drop dei campi del database come riga o colonna puoi giorcare con i raggruppamenti...
è questa cosa che ti manca ho hai bisogno d'altro ? siamo sempre qui...

ciao
Matteo Raumer
MCAD.net - net addicted :-)
http://blogs.dotnethell.it/freeteo

yag2 Profilo | Newbie

grazie gentilissimo si non è proprio questo quello che mi server

a me serve :

una colonna dinamica e questo lo ottengo traquillamente con quel componente

poi sotto di questa me ne servono altre 4

tipo:
x|colonna
x|-------
x|1234
r|valori per le quattro colonne



io ci sto provando anche dall'editor ma non ho scamo non trvovo soluzione
se non è chiaro rispiego

sono qua :-)

yag2 Profilo | Newbie

ho trovato nella cartella di crystal un esempio
questo
/sample/en/reports/feature examples/CrossTab.rpt

che in parte fa quello che vorrei fare io ma non riesco a riprodurlo

yag2 Profilo | Newbie

Ok credo di aver trovato il modo di fare quello che voglio Almeno lo spero.

Però c'è un problema ed è questo:

tutti i dati che stanno sull db non possono essere usati direttamente ma devo fare delle pre elaborazioni via codice

ora con una tabella non problem perchè creo un recordset virtuale e gli passo quello con
MReport.Database.SetDataSource rs
etc.

ma con più tabelle ? o meglio come strutturo il mio recordset per gestire una tale situazione ?

freeteo Profilo | Guru

ciao,
se la cosa è possibile (e li devi valutare tu) io ti consiglierei di usare i campi formula cosi' puoi far fare elaborazioni al report e metterli poi nelle "cross-tab", altirmenti alternative non ce ne sono, fai operazioni da codice e poi gli passi di datasource alle tabelle con DataTable che hai elaborato via codice

ciao

Matteo Raumer
MCAD.net - net addicted :-)
http://blogs.dotnethell.it/freeteo

yag2 Profilo | Newbie

>ciao,
>se la cosa è possibile (e li devi valutare tu) io ti consiglierei
>di usare i campi formula cosi' puoi far fare elaborazioni al
fin qui ci sono ma mi sto perdendendo ne senso che non riesco a capire che elavorazioni fare

>report e metterli poi nelle "cross-tab", altirmenti alternative
>non ce ne sono, fai operazioni da codice e poi gli passi di datasource
>alle tabelle con DataTable che hai elaborato via codice
>
qua mi sono perso come faccio a passarli le tabelle con datatable ?

anche la mia idea era di usare le formule ma mi sto perdendo io ho visto in quel file che lui usa tabelle differenti e riesce a legarle ugualmente nel senso i dati nell cross-tab vengono mostrati
se ci provo io con due tabelle di prova non vedo niente almeno che i campi non fanno parte della stessa tabella
sai dirmi come mai ?

misterwolf Profilo | Newbie

se posso aggiungere una richiesta...dovendo mettere per colonne un elenco di record come faccio a dirgli ad esempio nella prima colonna metti il dal primo a decimo record..nella seconda dall'undicesimo al 20°..etc.??
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5