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