Vereis, para optimizar el codigo, ahora me lo estoy revisando y creo que sería posible mejorarlo, por eso acudo a vuestra ayuda.
Tengo un modulo en que carga datos en un combobox después de hacer una consulta a una BD.
El caso es que el codigo de ejecución de la consulta es redundante, con lo que ahora estoy motando una función dentro del propio modulo para optimizar el codigo.
Tengo 14 cases, con lo cual, imaginad tener el mismo codigo 14 veces. 14 * 3 lineas cada vez = 42 lineas que podría suprimir si creo la función:
Ahora mismo está así.
Código VB .NET:
Ver original
Case 1 'este caso carga los datos de una tabla consulta = "select ..... from ..... where ..... = 1" cmd = New OleDb.OleDbDataAdapter(consulta, cnn) dt = New DataTable cmd.Fill(dt) For i = 0 To dt.Rows.Count - 1 Formulario_Quejas.combobox1.Items.Add(dt.Rows(i).Item(0)) Next Case 2 'este caso carga los datos de otra tabla consulta = "select ..... from ..... where ..... = 2" cmd = New OleDb.OleDbDataAdapter(consulta, cnn) dt = New DataTable cmd.Fill(dt) For i = 0 To dt.Rows.Count - 1 Formulario_Quejas.combobox2.Items.Add(dt.Rows(i).Item(0)) Next Case 3 (...)
Ahora está así:
Código VB .NET:
Ver original
Case 1 'este caso carga los datos de una tabla total=ejecuta_consulta("select ..... from ..... where ..... = 1") For i = 0 To total - 1 Formulario_Quejas.combobox1.Items.Add[COLOR="Red"](dt.Rows(i).Item(0))[/COLOR] Next Case 2 'este caso carga los datos de otra tabla total=ejecuta_consulta("select ..... from ..... where ..... = 2") For i = 0 To total - 1 Formulario_Quejas.combobox2.Items.Add[COLOR="Red"](dt.Rows(i).Item(0))[/COLOR] Next Case 3 (...) Public Function ejecuta_consulta(ByVal consulta As String) as string Dim cmd As OleDb.OleDbDataAdapter Dim dt As DataTable 'conectamos a la base de datos conexion.conecta() try cmd = New OleDb.OleDbDataAdapter(consulta, cnn) dt = New DataTable cmd.Fill(dt) return dt.rows(0).item(0) catch ex as exception messagebox.show(ex.message) finally conexion.desconecta() end try End function
El problema está en el for que hay en el primer sub, ya que no puede leer del datatable, que está en el Function y claro, el Function solo devuelve el total de datos, no devuelve los datos en si como para leerlos 1 a 1.
Como lo podría solucionar?
Un cordial saludo y Felices Fiestas a todos :)