none
Ejecución de procedimiento desde Modulo en Visual Basic.net RRS feed

  • Pregunta

  • Buenas noches Señores, espero me puedan apoyar con este problema que tengo, soy nuevo vb.net tengo  conocimientos vba, por lo que funciona bien en vba, aqui en vb.net no, estoy tratando de llamar al procedimiento  "CargarDG_Contribuyentes", y no carga el datagriview, pero si lo pongo en el entorno del formulario si carga normal, no se que estoy haciendo mal?

    Imports System.Data.OleDb
    Public Class FormDBContribuyentesvb

        Private Sub FormDBContribuyentesvb_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Try
                conextarDBC.Open()
                Call CargarDG_Contribuyentes() ''''AQUI LLAMO AL PROCEDIMIENTO
                ' MsgBox("Conectado a la BD", vbInformation, "Correcto")
            Catch ex As Exception
                MsgBox("Error al conectar con la BD", vbCritical, "Sin conextarseDBEmpresas")
            End Try
        End Sub

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Imports System
    Imports System.Data
    Imports System.Data.OleDb

    Module Modulo_DBContribuyentes
        Public Sub CargarDG_Contribuyentes()
            Dim adaptador As New OleDb.OleDbDataAdapter
            Dim registros As New DataSet
            Dim consulta As String

            consulta = "select * from DBContribuyentes"
            adaptador = New OleDb.OleDbDataAdapter(consulta, conextarDBC)
            registros.Tables.Add("DBContribuyentes")
            adaptador.Fill(registros.Tables("DBContribuyentes"))
            FormDBContribuyentesvb.DataGridView1.DataSource = registros.Tables("DBContribuyentes")
            With FormDBContribuyentesvb.DataGridView1
                .Columns("RUC").Width = 85
                .Columns("RAZON_SOCIAL").Width = 250
                .Columns("RAZON_SOCIAL").HeaderText = "RAZON SOCIAL"
                .Columns("REGIMEN").Width = 115
                .Columns("USUARIO").Visible = False
                .Columns("CLAVE").Visible = False
                .Columns("DIRECCION").Width = 300
                .Columns("TERMINAL").Visible = False
                .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            End With
        End Sub
    End Module

    Gracias por su apoyo.

    Miguel Angel


    Miguel Arias

    jueves, 27 de febrero de 2020 1:47

Respuestas

  • Casi seguro que el error está en esta línea:

    FormDBContribuyentesvb.DataGridView1.....

    Si vienes de programar en otras variantes de VB en lugar de VB.NET, estás acostumbrado a que FormDBContribuyentesvb sea tanto el nombre de la clase del formulario como el nombre de la instancia del formulario. Es decir, en esas versiones de VB el compilador automáticamente realiza de manera interna una instrucción como esta:

    Dim FormDBContribuyentesvb As New FormDBContribuyentesvb()

    y por lo tanto el nombre "FormDBContribuyentesvb" representa tanto la instancia (lo que está a la izquierda) como la clase (lo que está a la derecha).

    Pero en VB.NET esto no es automático. No se genera una instancia con el nombre de la clase, salvo que la generes tú expresamente.

    Tienes que buscar cuál es el sitio del programa en el que abriste el formulario, y ahí te encontrarás algo como esto:

    Dim nombreDeLaInstancia As New FormDBContribuyentesvb()

    y entonces lo que tienes que poner en tu módulo es

    nombreDeLaInstancia.DataGridView1.....

    Fíjate que se usa la instancia del formulario y no el nombre de la clase del formulario.

    Por supuesto, si esa variable "nombreDeLaInstancia" es privada y no es accesible desde el módulo, primero tendrás que reorganizar el código de forma que esa variable la hagas llegar hasta el módulo de alguna manera.

    Si el método del módulo lo estás llamando desde el propio formulario, hay una forma sencilla de hacerle llegar esa instancia, porque dentro del formulario se conoce como "Me":

    Call CargarDG_Contribuyentes(Me)

    y luego dentro del método CargarDG_Contribuyentes() declaras un parámetro para recibir ese valor:

    Public Sub CargarDG_Contribuyentes(instanciaDelFormulario As FormDBContribuyentesvb)

    y entonces llamas al DG como

    instanciaDelFormulario.DataGridView1.DataSource = ....

    No te olvides de marcar el DataGridView1 como "Public" en el diseño del formulario.

    • Propuesto como respuesta Pablo Rubio jueves, 27 de febrero de 2020 15:30
    • Marcado como respuesta Miguelvb.net2019 jueves, 27 de febrero de 2020 15:31
    jueves, 27 de febrero de 2020 7:44

Todas las respuestas

  • Casi seguro que el error está en esta línea:

    FormDBContribuyentesvb.DataGridView1.....

    Si vienes de programar en otras variantes de VB en lugar de VB.NET, estás acostumbrado a que FormDBContribuyentesvb sea tanto el nombre de la clase del formulario como el nombre de la instancia del formulario. Es decir, en esas versiones de VB el compilador automáticamente realiza de manera interna una instrucción como esta:

    Dim FormDBContribuyentesvb As New FormDBContribuyentesvb()

    y por lo tanto el nombre "FormDBContribuyentesvb" representa tanto la instancia (lo que está a la izquierda) como la clase (lo que está a la derecha).

    Pero en VB.NET esto no es automático. No se genera una instancia con el nombre de la clase, salvo que la generes tú expresamente.

    Tienes que buscar cuál es el sitio del programa en el que abriste el formulario, y ahí te encontrarás algo como esto:

    Dim nombreDeLaInstancia As New FormDBContribuyentesvb()

    y entonces lo que tienes que poner en tu módulo es

    nombreDeLaInstancia.DataGridView1.....

    Fíjate que se usa la instancia del formulario y no el nombre de la clase del formulario.

    Por supuesto, si esa variable "nombreDeLaInstancia" es privada y no es accesible desde el módulo, primero tendrás que reorganizar el código de forma que esa variable la hagas llegar hasta el módulo de alguna manera.

    Si el método del módulo lo estás llamando desde el propio formulario, hay una forma sencilla de hacerle llegar esa instancia, porque dentro del formulario se conoce como "Me":

    Call CargarDG_Contribuyentes(Me)

    y luego dentro del método CargarDG_Contribuyentes() declaras un parámetro para recibir ese valor:

    Public Sub CargarDG_Contribuyentes(instanciaDelFormulario As FormDBContribuyentesvb)

    y entonces llamas al DG como

    instanciaDelFormulario.DataGridView1.DataSource = ....

    No te olvides de marcar el DataGridView1 como "Public" en el diseño del formulario.

    • Propuesto como respuesta Pablo Rubio jueves, 27 de febrero de 2020 15:30
    • Marcado como respuesta Miguelvb.net2019 jueves, 27 de febrero de 2020 15:31
    jueves, 27 de febrero de 2020 7:44
  • Casi seguro que el error está en esta línea:

    FormDBContribuyentesvb.DataGridView1.....

    Si vienes de programar en otras variantes de VB en lugar de VB.NET, estás acostumbrado a que FormDBContribuyentesvb sea tanto el nombre de la clase del formulario como el nombre de la instancia del formulario. Es decir, en esas versiones de VB el compilador automáticamente realiza de manera interna una instrucción como esta:

    Dim FormDBContribuyentesvb As New FormDBContribuyentesvb()

    y por lo tanto el nombre "FormDBContribuyentesvb" representa tanto la instancia (lo que está a la izquierda) como la clase (lo que está a la derecha).

    Pero en VB.NET esto no es automático. No se genera una instancia con el nombre de la clase, salvo que la generes tú expresamente.

    Tienes que buscar cuál es el sitio del programa en el que abriste el formulario, y ahí te encontrarás algo como esto:

    Dim nombreDeLaInstancia As New FormDBContribuyentesvb()

    y entonces lo que tienes que poner en tu módulo es

    nombreDeLaInstancia.DataGridView1.....

    Fíjate que se usa la instancia del formulario y no el nombre de la clase del formulario.

    Por supuesto, si esa variable "nombreDeLaInstancia" es privada y no es accesible desde el módulo, primero tendrás que reorganizar el código de forma que esa variable la hagas llegar hasta el módulo de alguna manera.

    Si el método del módulo lo estás llamando desde el propio formulario, hay una forma sencilla de hacerle llegar esa instancia, porque dentro del formulario se conoce como "Me":

    Call CargarDG_Contribuyentes(Me)

    y luego dentro del método CargarDG_Contribuyentes() declaras un parámetro para recibir ese valor:

    Public Sub CargarDG_Contribuyentes(instanciaDelFormulario As FormDBContribuyentesvb)

    y entonces llamas al DG como

    instanciaDelFormulario.DataGridView1.DataSource = ....

    No te olvides de marcar el DataGridView1 como "Public" en el diseño del formulario.

    Gracias Alberto, seguí tus indicaciones y me funciono perfecto, muchas gracias.

    Miguel Arias

    jueves, 27 de febrero de 2020 15:33