Ciao,
ma "reporti" è un ArrayList? usa una DataTable che sei più sicuro sulla conformità del tipo gestito dal report...perchè visto l'errore sembra che lui poi vada a ricostruirsi un datatable interna basata sugli elementi che gli hai passati, e venga settato qualche valore a nullo su un campo che non lo supporta.
Ma secondo me evita quasi sempre di usare ArrayList perchè non sei tipizzato, se lavori ad oggetti mettili in una List<T> (dove T è il tuo tipo di oggetto ovviamente) altrimenti usa DataTable, creandotela anche a codice se hai bisogno, ad esempio:
DataTable table = new DataTable();
table.Columns.Add("id",typeof(int));
table.Columns.Add("descrizione",typeof(string));
...
table.Rows.Add(1,"ciao");
....etc...
Ciao.
Matteo Raumer
[MCAD, MVP Visual C#]
http://blogs.dotnethell.it/freeteo