Tengo que mostrar en un formulario menú Inicial la información que se obtiene de una base de datos. Esto lo tengo que hacer a través de un hilo que actúa como intermediario y se ocupa de crear la conexión a la base de datos y de obtener esos datos y mostrarlos en unos label del menú inicial. El problema es que no consigo mostrarlo, no sé porqué...
¿es necesario hacer una instancia del menú inicial desde la clase que contiene el hilo?
¿cómo podría hacer que se comunicaran?
adjunto código por si puede servir de ejemplo:
Formulario MenuInicial
Código:
Public Class MenuInicial Inherits System.Windows.Forms.Form Dim ThreadLeerBD Public Property manejaLabel1(ByVal val) As String Get Return Label1.Text End Get Set(ByVal Value As String) 'MessageBox.Show("Llego hasta aquí") Label1.Text = val End Set End Property Private Sub BLeerBD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLeerBD.Click ThreadLeerBD = New System.Threading.Thread(AddressOf ClaseLeerBD.EjecutaHiloBD) End Sub End Class
Código de la Clase LeerBD
Código:
Muchas gracias por anticipado Imports System.Data.OleDb Imports System Imports System.Data Imports System.Timers Public Class ClaseLeerBD Inherits System.Windows.Forms.Form Dim ThreadLeerBD Public Sub New() MyBase.New() End Sub Public Shared Sub EjecutaHiloBD() 'Definir en primer lugar una referencia a System.Data.dll Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Super.Pinwi\Mis documentos\Mis bases de datos\numeros\numeros.mdb") Dim objAcciones As New OleDbCommand Dim dt As DataTable Dim objAdapter 'Variable de bucle Dim i As Integer 'Para conocer el número de filas Dim n As Integer 'Cadenas temporales para nombre y numero Dim sNombre As String Dim nNumero As Integer Dim Form1 = New Form Try objConn.Open() objAdapter = New OleDbDataAdapter("SELECT * FROM numeros ORDER BY numero", objConn) dt = New DataTable objAdapter.Fill(dt) n = dt.Rows.Count objAcciones.Connection = objConn If n = 0 Then MessageBox.Show("No se ha encontrado ningún registro que coincida con la selección") Else For i = 0 To n - 1 'Asignar a las variables el contenido del registro sNombre = dt.Rows(i)("nombre").ToString nNumero = dt.Rows(i)("numero").ToString Form1.manejaLabel1 = sNombre Form1.Update() Next End If Catch ex As Exception MessageBox.Show(Err.Description, "Información del sistema") End Try End Sub End Class
