Hola a todos.
Veréis, estoy haciendo un módulo en .net que hace un montón de consultas. Todo esto es para un formulario que muestra resultados, cada resultado aparece en un label.
El caso es que son tantas que me ocupan un montón de líneas de código. Pero a efectos de optimización creo que está mal, no se... creo que algo estoy haciendo mal.
Os puedo pegar el código para que veáis a ver si se pudiera hacer algo para mejorarlo? No estoy muy ducho en cuanto consultas en vb.net y claro, lo hago lo mejor que se...
Código VB .NET:
Ver originalPublic Sub carga_datos_estadisticas
With Formulario_estadisticas
''cargamos los datos
'total encuestas
.total_1.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja;")
.total_2.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuario WHERE (((servicio.se_nombre)='Ropero'));")
.total_3.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuario WHERE (((servicio.se_nombre)='Cocina'));")
.total_4.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuario WHERE (((servicio.se_nombre)='Limpieza'));")
'solucionadas
.total_5.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuari WHERE (((queja.qu_solucionada)='1'));")
.total_6.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuari WHERE (((servicio.se_nom)='Ropero') AND ((queja.qu_solucionada)='1'));")
.total_7.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuari WHERE (((servicio.se_nom)='Cocina') AND ((queja.qu_solucionada)='1'));")
.total_8.Text = consulta.select_count("select queja.qu_identificador FROM (servicio INNER JOIN usuarios ON servicio.se_identificador = usuarios.us_servicio) INNER JOIN queja ON usuarios.us_identificador = queja.qu_usuari WHERE (((servicio.se_nom)='Limpieza') AND ((queja.qu_solucionada)='1'));")
'porcentaje
.total_9.Text = calcula_porcentaje(.total_5.Text, .total_1.Text)
.total_10.Text = calcula_porcentaje(.total_6.Text, .total_2.Text)
.total_11.Text = calcula_porcentaje(.total_7.Text, .total_3.Text)
.total_12.Text = calcula_porcentaje(.total_8.Text, .total_4.Text)
'total usuarios
.total_13.Text = consulta.select_count("SELECT usuarios.us_identificador FROM usuarios;")
.total_14.Text = consulta.select_count("SELECT usuarios.us_identificador, usuarios.us_servicio FROM usuarios WHERE (((usuarios.us_servicio)=1));")
.total_15.Text = consulta.select_count("SELECT usuarios.us_identificador, usuarios.us_servicio FROM usuarios WHERE (((usuarios.us_servicio)=2));")
.total_16.Text = consulta.select_count("SELECT usuarios.us_identificador, usuarios.us_servicio FROM usuarios WHERE (((usuarios.us_servicio)=3));")
'relación usuarios/incidencias
.total_17.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=1;")
.total_18.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=2;")
.total_19.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=3;")
.total_20.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=4;")
.total_21.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=5;")
.total_22.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=6;")
.total_23.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=7;")
.total_24.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=8;")
.total_25.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=9;")
.total_26.Text = consulta.select_count("SELECT queja.qu_identificador FROM queja where queja.qu_usuario=10;")
'total motivos
.total_27.Text = consulta.select_count("SELECT motivo.mo_identificador FROM motivo;")
.total_28.Text = consulta.select_count("SELECT motivo.mo_identificador FROM motivo WHERE (((motivo.mo_tipo)=1)) OR (((motivo.mo_tipo)=2)) OR (((motivo.mo_tipo)=3));")
.total_29.Text = consulta.select_count("SELECT motivo.mo_identificador FROM motivo WHERE (((motivo.mo_tipo)=4));")
.total_30.Text = consulta.select_count("SELECT motivo.mo_identificador FROM motivo WHERE (((motivo.mo_tipo)=5));")
End With
End Sub
Para los que se lo estén preguntando, la función Consulta.select_count contiene lo siguiente:
Código VB .NET:
Ver originalPublic Function select_count(ByVal consulta As String) As Integer
'conectamos a la base de dades
conexion.conecta()
Try
cmdcount = New OleDb.OleDbDataAdapter(consulta, conexion.cnn)
dtcount = New DataTable
cmdcount.Fill(dtcount)
Return dtcount.Rows.Count
Catch ex As Exception
mensaje.mensaje_error_ok("Error: " & ex.Message)
Finally
conexion.desconecta()
End Try
End Function
Se podría mejorar para que no sean tantas? Quiero decir... se podría optimizar el código?
Muchas gracias por la ayuda