Report Viewer in C# Express 2008

lunedì 27 aprile 2009 - 00.41

arguros Profilo | Newbie

Ciao a tutti,

Ho trovato questo forum dopo aver cercato per due giorni come produrre un report con C# express.
Ho seguito il consiglio di Matteo, ma sfortunatamente non ho avuto successo.

Ho cercato di sviluppare un report in Visual Web Developer per poi utilizzarto in C# Express, ma non funziona. Vi spiego il problema.
Ho installato la versione 2008 di Report Viewer e il Report Viewer Control (2008) sul mio PC. (La versione 2005 non si installa)

1) in VWD creo un DataSet connesso a northwind Database contenente la sola tabella Employees
2) in VWD utilizzo il Report Viewer Control con una Tabella incoporata che nella parte details ha solo
First Name
Last Name
Title

Il report funziona bene in VWD.

In C#
1) Aggiungo una connessione Microsoft SQL Server Compact 3.5 (.NET Framework Data Provider for Microsoft SQL Server Compact 3.5), al file .sdf di Northwind
2) Creo un dataset connesso a Nortwind con la solo tabella Employees
3) Aggiungo il report creato in VWD
3) Aggiungo il controllo Report Viewer e lo associoa alla tabella nel DataSet.

Il problema e' il report non visualizza FirstNane e LastName, ma il Title si.

Ho provato anche con tutti i campi della tabella, alcuni vengono visualizzati altri no.
Potreste aiutarmi a risolvere il problema se possibile? C'e' qualche problema di incomatibilita'?

Grazie

freeteo Profilo | Guru

Ciao,
non ho esperienze dettagliate in merito, ma penso sia qualche problema sui tipi di campo, oppure i nomi delle colonne che non sono uguali (e nello stesso ordine) con cui compaiono nel report (quindi della datasource che hai usato per disegnare il report).

Proverei a convertire tutto in stringhe temporaneamente, magari usando un "convert(varchar...)" nella query, oppure ancora meglio passare per una collection di oggetti tuoi che abbiano quelle proprietà che visualizzi, e poi passare al report quella lista.
Con un codice di questo tipo:


public static List<OggettoReport> GetDati() { List<OggettoReport> lista = new List<OggettoReport>(); using (SqlConnection conn = new SqlConnection(cnString)) { SqlCommand command = conn.CreateCommand(); command.CommandText = "Select ... from ..."; conn.Open(); SqlDataReader reader = command.ExecuteReader(); while(r.Read()) { lista.Add(BuildObject(r)); } } return lista; } private OggettoReport BuildObject(IDataReader r) { OggettoReport s = new OggettoReport(); s.FirstName = Convert.ToString(r["firstname"]); s.LastName= Convert.ToString(r["lastname"]); ... ... return s; }

dove "OggettoReport" è una classe con le stesse proprietà che corrispondono alle colonne che avevi nel database quando hai disegnato il report, quindi qualcosa come:
public class OggettoReport { public string FirstName { get; set; } public string LastName { get; set; } ... }
e al report appunto gli passi il risultato di "GetDati" ossia la collection degli oggetti.
Prova in questa strada, se cambia qualcosa.


Ciao.

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

arguros Profilo | Newbie

Grazie tanto per il consiglio,
PIerpaolo

freeteo Profilo | Guru

>Grazie tanto per il consiglio,
>PIerpaolo
di nulla, siamo qui per questo.
Solo che non ho capito, hai fatto qualche prova in questa direzione? funziona?

Ciao.

Matteo Raumer
[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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5