domingo, 13 de junio de 2010

Metodo Compute de un DataTable con filtros

Ahora, lo que haremos será utilizar filtros en el método Compute.


Siguiendo con nuestro ejemplo anterior, supongamos que deseemos obtener el promedio de hombres o mujeres; nuestra sentencia quedaría de la siguiente manera:
DT.Compute("AVG(Promedio)", "(Sexo = 'M')")   'Promedio de calificaciones de mujeres
DT.Compute("AVG(Promedio)", "(Sexo = 'H')")   'Promedio de calificaciones de hombre


También podemos tener mas de una condición utilizando los operadores AND ú OR, por ejemplo, con la siguiente sentencia obtendriamos el promedio de hombres que se llaman Manuel.
DT.Compute("AVG(Promedio)", "(Sexo = 'H') AND (Nombre = 'Manuel')")


Aquí también tenemos la opción de utilizar el operador LIKE de la misma manera en que se utiliza en las sentencias SQL, por ejemplo, con la siguiente línea podremos saber cuantos alumnos tienen un nombre que comienza con la letra A.
DT.Compute("COUNT(Nombre)", "(Nombre LIKE 'A%')")


También hay que considerar que cuando nuestro DataTable no encuentre registros que cumplan las restricciones que estamos poniendo nos devolverá un valor nulo.


ne...

Método Compute de un DataTable

Ahora veremos las funciones más importantes del método Compute de un DataTable, tales como Count, Max, Min y Avg.


Para ello, crearemos un listado de alumnos con sus respectivos promedios y a partir de esos promedios haremos nuestros cálculos.


Nuestro DataTable estará formado por los campos Nombre, Sexo y Promedio.


Con la siguiente línea obtendremos el promedio de calificaciones de nuestros alumnos.
DT.Compute("AVG(Promedio)", "")


Con la siguiente línea obtendremos la calificación máxima de los alumnos
DT.Compute("MAX(Promedio)", "")


Con la siguiente línea obtendremos la calificación mínima de los alumnos
DT.Compute("MIN(Promedio)", "")


Con la siguiente línea obtendremos el número de alumnos
DT.Compute("COUNT(Nombre)", "")


Con la siguiente línea obtendremos la suma de las calificaciones de los alumnos
DT.Compute("SUM(Promedio)","")


Por ahora no estamos usando ningun filtro, más adelante veremos como utilizarlos.