Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/11/2012, 07:34
Avatar de jhonwilliams
jhonwilliams
 
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Respuesta: ¿Cómo ordenar un combo box? (Correctamente))

Tienes dos post con el mismo tema?

Acabo de sacar el rato para mirar tu codigo, la verdad antes no lo hice porque la forma en que lo pegaste me daba pereza, me obliga a abrir visual studio para poder pegarlo y leerlo de forma mas amigable:

Código VB.NET:
Ver original
  1. Dim Resultados As DataSet
  2.         Dim DA As SqlDataAdapter
  3.         Dim Con As SqlConnection
  4.         Try
  5.             Con = New SqlConnection(Conexion)
  6.             Con.Open()
  7.             DA = New SqlDataAdapter(Query, Con)
  8.             Resultados = New DataSet
  9.             DA.Fill(Resultados, "Resultado")
  10.             NumRegistros = Resultados.Tables(0).Rows.Count()
  11.             If NumRegistros = 0 Then
  12.                 Resultados.Tables.Add()
  13.                 'Resultados.Tables(0).Rows.Add()
  14.                 Return Resultados
  15.             End If
  16.             Return Resultados
  17.             Con.Close()
  18.             DA = Nothing
  19.             Con = Nothing
  20.         Catch ex As Exception
  21.         End Try
  22.         Resultados = Nothing
  23.         Return Resultados

Hay un par de lineas con las que YO no estoy de acuerdo y son las siguientes:

Código VB.NET:
Ver original
  1. NumRegistros = Resultados.Tables(0).Rows.Count()

Para que asignar el RowCount a una variable si puede hacer la pregunta directamente asi:

Código VB.NET:
Ver original
  1. If Resultados.Tables(0).Rows.Count() = 0 Then


Y lo veo raro es porque 2 linas antes hacer el DA.Fill(Resultados, "Resultado") por lo cual creo que se hace inecesario agregar la tabla, sabiendo que el fill ya la agrego y lleno.

Y encuando al Return solo pondria y tu funcion me quedaria mas o menos asi (los parametros siguen iguales ya que no se que logica de negocio usas):

Código VB:NET:
Ver original
  1. Public Shared Function RecuperarDeSQL(ByVal Query As String, ByVal Conexion As String, Optional ByRef NumRegistros As Integer = 0) As DataSet
  2.         Dim Resultados As DataSet
  3.         Dim DA As SqlDataAdapter
  4.         Dim Con As SqlConnection
  5.  
  6.         Con = New SqlConnection(Conexion)
  7.  
  8.         Try
  9.             Con.Open()
  10.             DA = New SqlDataAdapter(Query, Con)
  11.             Resultados = New DataSet
  12.             DA.Fill(Resultados, "Resultado")
  13.  
  14.             If Resultados.Tables.Count() = 0 Then
  15.                 Resultados.Tables.Add()
  16.             End If
  17.  
  18.             DA = Nothing
  19.             Con = Nothing
  20.         Catch ex As Exception
  21.  
  22.         Finally
  23.             Con.Close()
  24.         End Try
  25.  
  26.         Return Resultados
  27.     End Function

Como puedes ver, cambien la linea de la condicion donde preguntas si hay registros para agregar una tabla, me imagino que necesitas retornar una en blanco, ahora pregunto Si el numero de tablas es igual a 0 la agregamos.

Y la conexion se cierra en el Finally del Try esta seccion se ejecuta siempre, haya o no un error previo, eso asegura que la conexion siempre se cierre y no quede abierta por si algo ocurre antes de llegar a esa, como estaba antes.

Tambien elimine la linea Resultados = Nothing para que borrarla si necesitas retornarla?

Fijates si las modficaciones realizadas ayudan a solucionar el problema y me comentas.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)

Última edición por jhonwilliams; 13/11/2012 a las 07:39