Principales respuestas
Ejecución de procedimiento desde Modulo en Visual Basic.net

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
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
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
-
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.
Miguel Arias