none
como devolver DataSet desde una funcion a la capa de datos RRS feed

  • Pregunta

  • Buen dia, he implementado una función de tipo DataSet en mi capa de datos que supuestamente utilizaré para llenar un gridview de una pagina aspx, el detalle es que apesar de que mi DataAdapter genera un resultado de filas, el Dataset me returna siempre valor nulo o vacío
    Public Function VentaporFacturar(ByVal session As String) As DataSet
            'Dim dsVF As DataSet = Nothing
            Dim dsVF = New DataSet
    
            pend = "Fpendiente"
            Dim descip As String 'para test *
            If cadenaConexion = "" Then
                tabVentas = "Ventas" & Trim(session)
    
                'uso conexion por default
                Dim Scon As New SqlConnection(ConfigurationManager.ConnectionStrings("gestorFacturasConnectionString").ToString)
                query = "select cantidad,unidad,descripcion,precio,importe from " & tabVentas & " where edo_fact=@porFaturar"
                ord = New SqlDataAdapter(query, Scon)
                ord.SelectCommand.Parameters.AddWithValue("@porFaturar", pend)
    
                'dsVF = New DataSet
                ord.Fill(dsVF, tabVentas)
                '* AQUÍ COMPRUEBO QUE sí LEE FILAS
                descip = dsVF.Tables("Ventas001").Rows(0)(2)
             end if
             Return dsVF'<-Al examinar este objeto muestra conteiner nothing
    
        End Function
    como devería hacerlo?

    La programacion en Microsoft cada ves se torna inalcanzable


    miércoles, 23 de septiembre de 2015 14:47

Respuestas

  • ooh no se que me pasó, seguramente alguien se ha de haber reido jaja, nos suele traicionar la lógica; con razón Leandro ya no respondió, espero no me tome a mal, pero nadie se le ocurrió decirme antes, de que nunca se llenará un objeto con un dataset directamente, yo tenía  el codigo en mi pagina así

    dim obj as ClasCapaDatos
    
    GridViewLinevnta.DataSource= obj.VentaporFacturar(param)

    bueno, tenía que resolverlo en una de mis pruebas basicas

    disculpen el enredo

     

    La programacion en Microsoft cada ves se torna inalcanzable


    viernes, 25 de septiembre de 2015 4:12

Todas las respuestas

  • hola

    si solo vas a retornar los datos de una unica tabla, porque no devuelves un datatable?

    cuando llegas a esta linea

     descip = dsVF.Tables("Ventas001").Rows(0)(2)

    puedes obtener el dato? porque me llama la atencion que devuelve un dataset nulo cuando no fallo antes en esa linea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 23 de septiembre de 2015 14:57
  • hola

    si solo vas a retornar los datos de una unica tabla, porque no devuelves un datatable?

    cuando llegas a esta linea

     descip = dsVF.Tables("Ventas001").Rows(0)(2)

    puedes obtener el dato? porque me llama la atencion que devuelve un dataset nulo cuando no fallo antes en esa linea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Asi es sr. Leandro, pero la sig línea solo la puse para comprobar si mi consulta devuelve datos
    * AQUÍ si logro ver el dato del Datatable
                descip = dsVF.Tables("Ventas001").Rows(0)(2)

    La programacion en Microsoft cada ves se torna inalcanzable


    miércoles, 23 de septiembre de 2015 18:33
  • hola

    pero si alli logras ver el dato como puede ser que ese mismo dsVF en el return ya este en null

    no tendria sentido

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 23 de septiembre de 2015 18:38
  • Ahora si no lo van a creer, porfavor revisen este link, como se comporta mi codigo

    https://youtu.be/aPyEO5P3Ahg

    acá mas claro: https://youtu.be/FyAIYhxoIck

    Tengo instalado visualStudio Express 2010 en windows 8, nunca pensé que un programa no original  provocara éste tipo de fallos en depuracion


    La programacion en Microsoft cada ves se torna inalcanzable


    miércoles, 23 de septiembre de 2015 20:27
  • Hola alfonso_tenicopa,

    Creo que estas confundiendo un poco las cosas, la propiedad Content de un Objeto DataSet no indican que dicho objeto este vacío. La propuedad Content se encarga de obtener el contenedor para el componente. (Se hereda de MarshalByValueComponent.). Lo puedes checar en la documentación: 

    https://msdn.microsoft.com/en-us/library/system.data.dataset%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    Si quieres verificar que un DataSet tenga o no datos, lo puedes hacer validando si tiente por lo menos una Tabla, y si esta tabla tiene por lo menos un Row, que por lo que veo en tu código si traes datos.

    Espero que esto te ayude.

    Saludos,

    @norrojas

    miércoles, 23 de septiembre de 2015 21:04
  • ooh no se que me pasó, seguramente alguien se ha de haber reido jaja, nos suele traicionar la lógica; con razón Leandro ya no respondió, espero no me tome a mal, pero nadie se le ocurrió decirme antes, de que nunca se llenará un objeto con un dataset directamente, yo tenía  el codigo en mi pagina así

    dim obj as ClasCapaDatos
    
    GridViewLinevnta.DataSource= obj.VentaporFacturar(param)

    bueno, tenía que resolverlo en una de mis pruebas basicas

    disculpen el enredo

     

    La programacion en Microsoft cada ves se torna inalcanzable


    viernes, 25 de septiembre de 2015 4:12