È possibile leggere il valore di una formula a runtime?

giovedì 15 luglio 2010 - 11.45

dema Profilo | Newbie

Ciao a tutti, sono nuovo di questo forum e parto subito con il mio crucio più grande

tramite un report di CR, devo creare un PDF di fatture (i cui dati
sono letti dal db)e a runtime recuperare a che pagina inizia e a che pagina
finisce ogni fattura. La mia idea era quella di inserire delle formule nelle
quali salvo i numeri delle pagine e durante l’esecuzione del mio programma
trovare un metodo della CRAXDRT.dll (libreria che utilizzo per gestire l’
esportazione) per leggere queste formule.

Per creare il PDF uso questo codice:

Dim crxReport As CRAXDRT.Report
...
Set crxReport = CreateReport(sProfileName, sSQLQuery, sReportPath, sSelectedReport, arFormulas)
...
crxReport.PaperSize = crPaperA4
crxReport.ExportOptions.DestinationType = crEDTDiskFile
crxReport.ExportOptions.DiskFileName = sFilePDF
crxReport.ExportOptions.FormatType = crEFTPortableDocFormat
crxReport.DisplayProgressDialog = bDisplayProgressDialog
Call crxReport.Export(False)

Dopo il quale, facendo diversi tentativi tutti infruttuosi, ho provato ad
usare:

- CRAXDRT.Report.GetReportVariableValue, che però utilizzandolo mi da l’errore
70, praticamente mi dice che non ho i permessi
- CRAXDRT.Report.FormulaFields.GetItemByName("nome formula").Value che non da
errori ma non mi ritorna il valore che mi aspetto, ma stringa vuota

Se faccio CRAXDRT.Report.FormulaFields.GetItemByName("nome formula").Text riesco a recuperare il testo della formula, cioè il pseudocodice CR che definisce la formula, ma non riesco a recuperare il valore risultato di queslla formula, come se stassi cercando di leggerlo nel momento sbagliato, quando la formula non è ancora eseguita e non ha calcolato il valore eppure lo stò facendo alla fine di tutto, sopo aver adirittura esportato il risultato del report in un file PDF!!

Qualc'uno può aiutarmi please????

freeteo Profilo | Guru

Ciao, perdona il ritardo nella risposta.

>Se faccio CRAXDRT.Report.FormulaFields.GetItemByName("nome formula").Text
>riesco a recuperare il testo della formula, cioè il pseudocodice
>CR che definisce la formula, ma non riesco a recuperare il valore risultato di queslla formula
a quanto ne so io, non c'è modo, l'unica cosa che riesci a fare da codice è appunto quella che hai visto anche tu, modificare (o leggere) i valori "codice" dei campi formula con la proprietà "Text" ma chiaramente non è il valore reale.

Io ho usato questa proprietà per modificare i campi formula come mostrato in questo esempio:
http://www.dotnethell.it/tips/ModificheRuntimeCrystal.aspx

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

dema Profilo | Newbie

Ti ringrazio, ma il mio problema è diverso da quello illustrato nel link che mi hai passato, devo leggere i valori della formula, li invece si agisce modificando il text.

Cmq ho risolto con una "pezza", praticamente eseguo una doppia esportazione, oltre a PDF esporto anche a RTF e da questo secondo file, con le librerie di Office o le API di OpenOffice, estraggo le informazioni che mi servono facendo una ricerca nel testo dei tag che identificano le formule che devo leggere.

Non è che mi esalti come soluzione perchè è proprio un accrocchio, ma sai come si dice:
...the show must go on!

Ciao

freeteo Profilo | Guru

>Ti ringrazio, ma il mio problema è diverso da quello illustrato
>nel link che mi hai passato, devo leggere i valori della formula,
>li invece si agisce modificando il text.
Sì infatti ti avevo anticipato che non era possibile farlo a mio avviso


>Non è che mi esalti come soluzione perchè è proprio un accrocchio,
>ma sai come si dice:
>...the show must go on!
immagino è abbastanza un accrocchio, ma non credere, ogni tanto vanno bene anche quelli, anche perchè spesso l'utente che lo usa non ha la percezione di cosa c'è dietro...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

dema Profilo | Newbie

>immagino è abbastanza un accrocchio, ma non credere, ogni tanto
>vanno bene anche quelli, anche perchè spesso l'utente che lo
>usa non ha la percezione di cosa c'è dietro...

parole sante!! Infatti per evitare che se ne accorgano a elaborazione terminata cancello pure tutti i file RTF in modo da non lasciare traccia.

Cmq sono un pò un perfezionista e quando non riesco a trovare la soluzione che mi aggrada mi resta sempre un pò l'amaro in bocca

freeteo Profilo | Guru

>Cmq sono un pò un perfezionista e quando non riesco a trovare
>la soluzione che mi aggrada mi resta sempre un pò l'amaro in
>bocca
ti capisco benissimo, io sono come te...ma qualche volta devo scendere a compromessi, per mancanze altri magari, proprio come questa che non ti da accesso ai valori veri e propri ma solo alla parte di design del report...
Con gli anni mi è capitato di farne di "porcherie" di cui ancora mi vergogno...ma quando non dipende da te non hai alternative...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5