none
Combox enlazado con Access RRS feed

  • Pregunta

  • Buenas

    Me han estado ayudando en el Post para poder poner en dos tablas diferentes los datos.

    lo que me han dicho es que como tengo una consulta nueva que mejor abra un nuevo post


    Mi pregnta es la siguiente, lo que quiero es que en un combox aparezca el campo nombre que es el campo en comun entre las dos tablas y que al seleccionar al marcar el nombre quiero que los textbox cambien referentes a lo que he puesto antes. O sea si pongo escojo un nombre en el combox en el textbox de apellido se ponga su apellido y en el del sexo lo mismo eso de las tres tablas que tengo.

    Aqui os pongo el codigo que tengo hecho hasta el momento

    'FORM1
    
    Imports System.Data.OleDb
    Imports System.IO
    
    Public Class DD35_Creacion_de_Fichas
        Private Function TraerNombres() As DataTable
            Try
                Using cnn As New OleDbConnection("CADENACONEXION")
                    Dim sqlbuscar As String
                    sqlbuscar = "SELECT Codigo, Nombre FROM Tabla1"
                    Dim cmd As New OleDbCommand(sqlbuscar, cnn)
                    Dim da As New OleDbDataAdapter(cmd)
                    Dim dt As New DataTable()
                    da.Fill(dt)
                    Return dt
                End Using
            Catch ex As Exception
                Throw
            End Try
    
    
        End Function
    
       
       
    
        
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim arr() As Byte = General.ReadBinaryFile(abrirarchivo.FileName)
            If (arr Is Nothing) Then
              
                Return
            End If
    
    
            Using cmd As New OleDbCommand()
                cmd.CommandText = _
                   "UPDATE Tabla1 SET Nombre=@nombre,Apellido=@apellido,Imagen=@imagen WHERE Codigo=@codigo"
                With cmd
                    .Parameters.AddWithValue("@nombre", Nombre.Text)
                    .Parameters.AddWithValue("@apellido", Apellido.Text)
                    .Parameters.Add(New OleDbParameter("@imagen", OleDbType.Binary)).Value = arr
                    .Parameters.AddWithValue("@codigo", TextBox11.Text)
                End With
                General.ExecuteAction(cmd)
            End Using
    
            Using cmd2 As New OleDbCommand()
                cmd2.CommandText = _
                   "UPDATE Tabla2 SET Nombre=@nombre,Edad=@Edad,Sexo=@sexo WHERE Codigo=@codigo"
                With cmd2
    
                    .Parameters.AddWithValue("@nombre", Nombre.Text)
                    .Parameters.AddWithValue("@edad", edad.Text)
                    .Parameters.AddWithValue("@sexo", sexo.Text)
                    .Parameters.AddWithValue("@codigo", TextBox11.Text)
                End With
                General.ExecuteAction(cmd2)
            End Using
    
    
           
    
            
             
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
            Using cmd As New OleDbCommand()
                cmd.CommandText = "SELECT COUNT(*) + 1 FROM Tabla1"
    
                Dim value As Object = General.ExecuteScalar(cmd)
                TextBox11.Text = Convert.ToString(value)
    
    
                Call limpiar()
    
            End Using
            Using cmd As New OleDbCommand()
                cmd.CommandText = "SELECT COUNT(*) + 1 FROM Tabla2"
    
                Dim value As Object = General.ExecuteScalar(cmd)
                TextBox11.Text = Convert.ToString(value)
    
    
                Call limpiar()
    
            End Using
    
    
        End Sub
    
        Public Sub limpiar()
            Nombre.Clear()
        End Sub
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            With abrirarchivo
                .Filter = "Fotografias(*.jpg)|*.jpg"
                If (abrirarchivo.ShowDialog = DialogResult.OK) Then
                    ImagenPictureBox.Load(abrirarchivo.FileName)
                End If
            End With
        End Sub
    end class

    'CLASS
    
    Imports System.Data.OleDb
    
    Module General
    
        Public CADENACONEXION As String = _
            "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
            Application.StartupPath & "\basedatos.mdb"
    
        Public Function GetDataTabla() As DataTable
    
            ' Devuelve un objeto DataTable con los datos de la tabla
            ' DD35 ordenados por el campo Codigo.
            '
            Try
                Using cnn As New OleDbConnection(CADENACONEXION)
    
                    Dim cmd As OleDbCommand = cnn.CreateCommand()
                    cmd.CommandText = "SELECT * FROM DD35 ORDER BY Codigo"
    
                    Dim da As New OleDbDataAdapter(cmd)
                    Dim dt As New DataTable("DD35")
                    da.Fill(dt)
    
                    Return dt
    
                End Using
    
            Catch ex As Exception
                ' Devolvemos el error al procedimiento llamador
                Throw
    
            End Try
    
        End Function
    
        Public Function Extraer(ByVal codigo As Integer) As Byte()
    
            Try
                Using cnn As New OleDbConnection(CADENACONEXION)
    
                    Dim cmd As OleDbCommand = cnn.CreateCommand()
                    cmd.CommandText = "SELECT imagen FROM DD35 WHERE Codigo=@codigo"
                    cmd.Parameters.AddWithValue("@codigo", codigo)
    
                    cnn.Open()
    
                    Dim value As Object = cmd.ExecuteScalar()
    
                    If (value Is DBNull.Value) Then
                        ' No existen datos
                        Return Nothing
    
                    Else
                        ' Devolvemos el valor convertido en
                        ' un array de Byte.
                        Return CType(value, Byte())
    
                    End If
    
                End Using
    
            Catch ex As Exception
                Throw
    
            End Try
    
        End Function
    
        Public Function ExecuteScalar(ByVal cmd As OleDbCommand) As Object
    
            ' Esta función sirve para ejecutar el método ExecuteScalar
            ' del objeto Command pasado.
    
            If (cmd Is Nothing) Then
                Throw New ArgumentNullException("cmd")
            End If
    
            Try
                Using cnn As New OleDbConnection(CADENACONEXION)
    
                    cmd.Connection = cnn
    
                    cnn.Open()
    
                    Return cmd.ExecuteScalar()
    
                End Using
    
            Catch ex As Exception
                Throw
    
            End Try
    
        End Function
    
        Public Function ReadBinaryFile(ByVal fileName As String) As Byte()
    
            ' Si no existe el archivo, abandono la función.
            '
            If (Not (IO.File.Exists(fileName))) Then Return Nothing
    
            Try
                ' Creamos un objeto Stream para poder leer el archivo especificado.
                '
                Using fs As New IO.FileStream(fileName, IO.FileMode.Open, IO.FileAccess.Read)
    
                    ' Creamos un array de bytes, cuyo límite superior se corresponderá
                    ' con la longitud en bytes de la secuencia menos una unidad.
                    '
                    Dim length As Int32 = Convert.ToInt32(fs.Length - 1)
    
                    Dim data() As Byte = New Byte(length) {}
    
                    ' Al leer la secuencia, se rellenará la matriz.
                    '
                    fs.Read(data, 0, length)
    
                    ' Devolvemos el array de bytes.
                    '
                    Return data
    
                End Using
    
            Catch ex As Exception
                ' Devolvemos la excepción al procedimiento llamador.
                '
                Throw
    
            End Try
    
        End Function
    
        Public Function ExecuteAction(ByVal cmd As OleDbCommand) As Integer
    
            ' Esta función sirve para ejecutar cualquier consulta
            ' SQL de acción (INSERT INTO, UPDATE o DELETE) que
            ' se pase en el comando.
    
            If (cmd Is Nothing) Then
                Throw New ArgumentNullException("cmd")
            End If
    
            Try
                Using cnn As New OleDbConnection(CADENACONEXION)
    
                    cmd.Connection = cnn
    
                    cnn.Open()
    
                    Return cmd.ExecuteNonQuery()
    
                End Using
    
            Catch ex As Exception
                Throw
    
            End Try
    
        End Function
    
    End Module
    




    • Cambiado Enrique M. Montejo martes, 4 de diciembre de 2012 11:43 acceso a datos (De:Lenguaje VB.NET)
    viernes, 12 de octubre de 2012 17:45

Todas las respuestas

  • Mandar a llamar tu fucion TraerNombre en el evento Load de tu formulario no te funciona?

    Private Sub Form1_Load(...) Dim dt As DataTable = TraerNombres()

    ComboBox1.DataSource = dt

    ComboBox1.DisplayMember = "Nombre"

    ComboBox1.ValueMember = "Codigo" End Sub




    Saludos desde Monterrey, N.L. México Luis Escobar :D

    viernes, 12 de octubre de 2012 18:26
  • kuando abro el form que es un form hijo en la parte del codigo

    Private Function TraerNombres() As DataTable
            Try
                Using cnn As New OleDbConnection("CADENACONEXION")
                    Dim sqlbuscar As String
                    sqlbuscar = "SELECT Codigo, Nombre FROM Tabla1"
                    Dim cmd As New OleDbCommand(sqlbuscar, cnn)
                    Dim da As New OleDbDataAdapter(cmd)
                    Dim dt As New DataTable()
                    da.Fill(dt)
                    Return dt
                End Using
            Catch ex As Exception
              'Justo aki sale el error
                Throw
            End Try

    Al final en Throw sale el error siguiente

    El formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 0.

    y no se abre el form


    EDIR: Por cierto HOLA XD
    • Editado _Morrocos viernes, 12 de octubre de 2012 19:21
    viernes, 12 de octubre de 2012 19:21
  • Oye!!!, pero el codigo es un EJEMPLO nada mas, en realidad tienes que reemplazar:

    Using cnn As New OleDbConnection("CADENACONEXION")

    "CADENADECONEXION" por tu cadena de conexion real, osea con la cual te conectas a tu BD.

    En tu caso veo que la tienes almacenada en una variable, en esta :

    Public CADENACONEXION As String = _
            "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
            Application.StartupPath & "\basedatos.mdb"

    Entonces el codigo quedaria asi:

    Using cnn As New OleDbConnection(CADENACONEXION)

    Sin las comillas dobles.

    Pruebalo y comentas como te fue!


    Saludos desde Monterrey, N.L. México Luis Escobar :D


    viernes, 12 de octubre de 2012 19:25
  • Pero si te fijas en la clase General tengo declarada la cadena de conexion y se llama CADENACONEXION. JAJAJJAJa era por culpa las comillas

    Por fin se visualiza. Pero ahora no se porque no me guarda en la base de datos podrias mirar haber si he hecho algo mal. Porfavor

    viernes, 12 de octubre de 2012 21:01
  • Porque dices que no guarda? te manda algun error?, en alguna parte se detiene?. Prueba poniendo un BreackPoint para que veas que valores se van mandando a los parametros y tambine para ver en que punto se detiene tu aplicacion...


    Saludos desde Monterrey, N.L. México Luis Escobar :D

    viernes, 12 de octubre de 2012 21:28
  • Pues no pasa nada, no guarda no pasa nada kual crees que debe ser el problema
    viernes, 12 de octubre de 2012 21:50
  • Porque dices que no guarda? te manda algun error?, en alguna parte se detiene?. Prueba poniendo un BreackPoint para que veas que valores se van mandando a los parametros y tambine para ver en que punto se detiene tu aplicacion..

    Saludos desde Monterrey, N.L. México Luis Escobar :D

    viernes, 12 de octubre de 2012 22:22
  • Que es un BreackPoint??

    cuando digo que no guarda me refiero a que yo aprieto el boton y no pasa nada. no manda ningun error XD

    viernes, 12 de octubre de 2012 23:02

  • otra cosa como muestro los campos relacionados con el combox??
    sábado, 13 de octubre de 2012 13:01
  • Porfavor podeis ayudarme???
    lunes, 15 de octubre de 2012 9:22
  • Hola Amigo:

    Un Breack Point, es una herramienta que nos proporciona el Vs con el cual le indicamos al compilador en que linea de codigo debe de detenerse, para asi nosotros poder analizar por ejemplo el valor que van adquiriendo las variables o controles:

    Breakpoints and Debugging Tools

     Intenta poner los breack point en las lineas correspondientes a tu metodo de insercion  para ver si entra a esas lineas.

     Aqui, seguire al pendiente! :-)


    Saludos desde Monterrey, N.L. México Luis Escobar :D

    lunes, 15 de octubre de 2012 15:01
  • Hola Amigo:

    Un Breack Point, es una herramienta que nos proporciona el Vs con el cual le indicamos al compilador en que linea de codigo debe de detenerse, para asi nosotros poder analizar por ejemplo el valor que van adquiriendo las variables o controles:

    Breakpoints and Debugging Tools

     Intenta poner los breack point en las lineas correspondientes a tu metodo de insercion  para ver si entra a esas lineas.

     Otra cosa, si tu problema inicial ya fue resuelta, lo mas correcto es que marques las respuestas que te ayduaron a llegar a la solucion.

     Aqui, seguire al pendiente! :-)


    Saludos desde Monterrey, N.L. México Luis Escobar :D


    lunes, 15 de octubre de 2012 15:02