Hola,
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:
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
Muchas gracias por anticipado