Modificare Intestazione delle colonne con vb.net 2005 e CR XI R2

martedì 19 dicembre 2006 - 14.46

mf8502 Profilo | Newbie

Salve a tutti,

stò utilizzando CR per la prima volta con VB.Net 2005.

Avrei la necessità di modificare le intestazioni da codice delle colonne del report.
Il report è costruito con CR XI R2, partendo da delle view create con su db SQL Express 2005.

In VB.Net utilizzo il controllo CrystalReportViewer

Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.DatabaseName = "db"
myConnectionInfo.UserID = "user"
myConnectionInfo.Password = "pwd"
myConnectionInfo.ServerName = "SQLEXPRESS"
Dim reportPath As String = "C:\demo\demo.rpt"
myCrystalReportViewer.ReportSource = reportPath
SetDBLogonForReport(myConnectionInfo)

Qualcuno mi può aiutare ?

Grazie in anticipo !

freeteo Profilo | Guru

ciao,
per farlo devi usare dei campi formula, da mettere al posto delle intestazioni testuali classiche che ti aggiunge di default quando aggiungi un campo nella sezione dettagli.
Dopodiche le cambi tu da codice, senza problemi infatti ci puoi accedere cosi':

mioreport.DataDefinition.FormulaFields["intestazione1"].Text = " 'ciao' ";

e via via per tutte le intestazioni che ti servono...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

mf8502 Profilo | Newbie

Ciao Matteo,

grazie per la risposta, ho seguito la tua indicazione, ma
fra le proprietà ed i metodi dell'oggetto CrystalReportViewer
non trovo .DataDefinition.FormulaFields.
Mi sai dire come posso raggiungere queste proprietà.

Grazie

mf8502 Profilo | Newbie

Ciao,

ho letto in altri post alcune indicazioni su
Report.DataDefinition.FormulaFields che mi hanno indicato la soluzione.

Ho creato un nuovo oggetto
Dim Report As New CrystalDecisions.CrystalReports.Engine.ReportDocument

ed ora riesco a modificare la descrizione, ma se inserisco la stringa in questo
modo:

Report.DataDefinition.FormulaFields("provadaniele").Text = " Prova di testo "

posso inserire solo numeri, altrimenti ricevo un messaggio di errore.

Se la inserisco cosi:

Report.DataDefinition.FormulaFields("provadaniele").Text = " 'Prova di testo' "

funziona correttamente.

Hai per caso un'idea del perchè

Grazie

freeteo Profilo | Guru

ciao,
il comportamento è corretto, inquanto quella proprieta' "text" è di fatto il codice che scriveresti dentro alla formula quando si apre l'editor di formula a designa-time di un report.
Quindi nel caso tuo, devi dirgli che la formula non faccia calcoli o altro, deve solo tornare una stringa "ciao", e in crystal le stringhe le puoi scrivere con uno o 2 apici, ovviamente con uno vai meglio finche' scrivi il codice, ma è lo stesso...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

mf8502 Profilo | Newbie

Ciao Matteo,

Grazie infinite per l'aiuto.

A presto

freeteo Profilo | Guru

di niente!
se ti è stata utile qualche risposta per risolvere,accettala che cosi' marchiamo il thread come risolto.Grazie
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

3sponde Profilo | Newbie

scusate ma sono bloccato dallo stesso problema

Dim report As New mioreport
report.DataDefinition.FormulaFields("TITOLO").Text = "PROVA DI FUNZIONAMENTO"
reportviewer.ReportSource = report
report.Load()


il report mi riporta il valore preimpostato anche se subito prima del load mi risulta
>? report.DataDefinition.FormulaFields("TITOLO")
{CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition}
FormulaName: "{@TITOLO}"
Kind: FormulaField {2}
Name: "TITOLO"
NumberOfBytes: 14
Text: "PROVA DI FUNZIONAMENTO"
UseCount: 1
ValueType: StringField {11}


grazie in anticipo





p.s. scusate ma ho risolto.
occorre "OVVIAMENTE" fare il load del report prima delle modifiche delle formule !
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