Este asunto es de los que te pueden tener una mañana entretinido como un bobo mientras intentas averiguar qué #%$# está pasando...
Hoy estuve tocando una aplicación vieja escrita en .NET 1.1. El caso es que el programador había metido una campo calculado en un DataTable que incluía una división, así:
tabla.Columns.Add( new DataColumn( "Rentabilidad", typeof(decimal), "Beneficio / Ingresos");
El problemilla es que algunos registros tienen los ingresos a cero, por lo que en cuanto creabas el campo se obtenía una divisón por cero, claro.
Lo primero que se te ocurre hacer (parte de meterlo en la consulta de la base de datos, que es lo primero que este programador debería haber hecho) es lo siguiente:
tabla.Columns.Add( new DataColumn( "Rentabilidad", typeof(decimal), "IIF(Ingresos = 0, 0, Beneficio / Ingresos)");
Es decir, que si los ingresos son diferentes a cero que haga la divisón, si no que no la haga. Vale, el problema es que simplemente esto no funciona y sigues obteniendo todo...
[Más]