none
Problema manejando variable en capas

    Pregunta

  • Buenas tardes amigo espero puedan ayudarme, estoy trabajando en un sistema de recursos humanos utilizando capas, en donde selecciono una linea determinada en un datagrid y en base al valor seleccionado quiero realizar una búsqueda especifica de ese registro y mostrarlo en otro datagrid, la cosa es que me marca error y no se que este haciendo mal, les comparto mi codigo para ver si pueden ayudarme.

    En mi capa de interfaz tengo el siguiente código que es el que manda a llamar a la función que se encuentra en la capa de negocio

            CapaNegocio.Infonavit(objeto)

    Objeto es donde tengo todos los datos del trabajador seleccionado (Nombre, Apellido, ID etc)

    En mi capa de negocio tengo la siguiente función

        Public Function Infonavit(ByVal objE As CEPersonal) As DataSet
            Return objPer.Infonavit(objE)
        End Function

    aquí recibo el parámetro con los datos del trabajador y mando a llamar a la función de mi capa de datos

         Public Function Infonavit(ByVal objE As CEPersonal) As DataSet
            Dim ds3 As New DataSet
            cn3 = objCon.conectar
            da3 = New SqlDataAdapter("select * from tblInfonavit", cn3)
            da3.Fill(ds3, "Infonavit")
            Return ds3
            ds3.Dispose()
            da3.Dispose()
            cn3.Dispose()
        End Function


    Aquí declaro la función para llenar el datagrid en mi capa de interfaz

    Sub Prestamos()
            Dim capaNegocio As New CNPersonal
            dgInfonavit.DataSource = capaNegocio.Infonavit.Tables("Infonavit")
        End Sub

    y me marca un error que dice "No se especificó un argumento para el parametro objE de Public Function Infonavit (objE As CEPersonal) As DataSet

    Me podrían ayudar e indicarme que estoy haciendo mal?

    Saludos

    viernes, 24 de febrero de 2017 22:43

Respuestas

  • [...]  capaNegocio.Infonavit.Tables("Infonavit")
    [...] me marca un error que dice "No se especificó un argumento para el parametro objE de Public Function Infonavit (objE As CEPersonal) As DataSet

    Fíjate en que el mensaje de error es muy claro: te informa de que se te ha olvidado poner el parámetro de Infonavit. Tal como has definido infonavit, la llamada correcta es así:

     dgInfonavit.DataSource = capaNegocio.Infonavit(objeto).Tables("Infonavit")

    En otras palabras, te falta el (objeto). Aunque, la verdad, no sé por qué has declarado Infonavit de manera que requiera ese objeto, si luego no lo usas para nada dentro de Infonavit.

    sábado, 25 de febrero de 2017 16:32

Todas las respuestas

  • Hola:

     Podrías revisar este articulo:

    Programación en 3 capas 

     En el abordo el tema con un ejemplo muy practico, observa como es que tomo el Id de un registro y como lo envió a funciones de otras capas y como es que utilizo ese Id para regresar información relacionada al mismo.

     

    El ejemplo esta escrito en C#, si desconoces este lenguaje podrías apoyarte con herramientas en linea como esta:

    http://converter.telerik.com/

     La cual te ayuda a darte una idea aproximada sobre el código convertido a Vb.

     Espero que la información te sea de utilidad.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 24 de febrero de 2017 23:28
  • Hola Salvador Sastre Izquierdo,

    Si vas a retornar el resultado de un 'select * from ..' bastaría con usar un DataTable.

    Diferencia entre DataSet y DataTable

    Con lo referente a tu error, es porque al momento de llamar no envías el objeto CEPersonal el cual es solicitado por el método Infonavit como parámetro. Pero ese parámetro nunca es usado, por lo que no tiene sentido colocarlo.

    Public Function Infonavit() As DataTable
        Return objPer.Infonavit()
    End Function
    Public Function Infonavit() As DataTable
        Dim dt As New DataTable
        cn3 = objCon.conectar
        da3 = New SqlDataAdapter("select * from tblInfonavit", cn3)
        da3.Fill(dt)
        Return dt
    End Function

    Y al llamarlo :

    Sub Prestamos()
        Dim capaNegocio As New CNPersonal
        dgInfonavit.DataSource = capaNegocio.Infonavit()
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 25 de febrero de 2017 1:55
  • [...]  capaNegocio.Infonavit.Tables("Infonavit")
    [...] me marca un error que dice "No se especificó un argumento para el parametro objE de Public Function Infonavit (objE As CEPersonal) As DataSet

    Fíjate en que el mensaje de error es muy claro: te informa de que se te ha olvidado poner el parámetro de Infonavit. Tal como has definido infonavit, la llamada correcta es así:

     dgInfonavit.DataSource = capaNegocio.Infonavit(objeto).Tables("Infonavit")

    En otras palabras, te falta el (objeto). Aunque, la verdad, no sé por qué has declarado Infonavit de manera que requiera ese objeto, si luego no lo usas para nada dentro de Infonavit.

    sábado, 25 de febrero de 2017 16:32
  • [...]  capaNegocio.Infonavit.Tables("Infonavit")
    [...] me marca un error que dice "No se especificó un argumento para el parametro objE de Public Function Infonavit (objE As CEPersonal) As DataSet

    Fíjate en que el mensaje de error es muy claro: te informa de que se te ha olvidado poner el parámetro de Infonavit. Tal como has definido infonavit, la llamada correcta es así:

     dgInfonavit.DataSource = capaNegocio.Infonavit(objeto).Tables("Infonavit")

    En otras palabras, te falta el (objeto). Aunque, la verdad, no sé por qué has declarado Infonavit de manera que requiera ese objeto, si luego no lo usas para nada dentro de Infonavit.

    Muchas gracias por tu respuesta me sirvió mucho, y el objeto si lo uso pues en la consulta lo voy a igualar al ID que seleccione, solo que primero estaba probando a traer todos los registros. Muchas gracias
    lunes, 27 de febrero de 2017 16:47
  • Gracias, le voy a dar un repaso.
    lunes, 27 de febrero de 2017 16:50
  • Muchas gracias, en un momento mas le doy un repaso.
    lunes, 27 de febrero de 2017 16:51
  • Lo tendré en cuenta, voy a ver que tal funciona usando DataTable
    lunes, 27 de febrero de 2017 16:51