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 originalDim Resultados As DataSet
Dim DA As SqlDataAdapter
Dim Con As SqlConnection
Try
Con = New SqlConnection(Conexion)
Con.Open()
DA = New SqlDataAdapter(Query, Con)
Resultados = New DataSet
DA.Fill(Resultados, "Resultado")
NumRegistros = Resultados.Tables(0).Rows.Count()
If NumRegistros = 0 Then
Resultados.Tables.Add()
'Resultados.Tables(0).Rows.Add()
Return Resultados
End If
Return Resultados
DA = Nothing
Con = Nothing
Catch ex As Exception
End Try
Resultados = Nothing
Return Resultados
Hay un par de lineas con las que
YO no estoy de acuerdo y son las siguientes:
Código VB.NET:
Ver originalNumRegistros = 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 originalIf 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 originalPublic Shared Function RecuperarDeSQL(ByVal Query As String, ByVal Conexion As String, Optional ByRef NumRegistros As Integer = 0) As DataSet
Dim Resultados As DataSet
Dim DA As SqlDataAdapter
Dim Con As SqlConnection
Con = New SqlConnection(Conexion)
Try
Con.Open()
DA = New SqlDataAdapter(Query, Con)
Resultados = New DataSet
DA.Fill(Resultados, "Resultado")
If Resultados.Tables.Count() = 0 Then
Resultados.Tables.Add()
End If
DA = Nothing
Con = Nothing
Catch ex As Exception
Finally
End Try
Return Resultados
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