none
Mostrar datos de una tabla en un TextBox AUTOMATICAMENTE

    Pregunta

  • Base de datos en acces...

    Tengo 3 TextBox el primero es el primary key(algo asi), si yo cambio o borro algo automaticamente los 2 textbox de abajo cambiaran a sus respectivos valores. Es algo asi como los botones buscar que hice.Aqui el codigo:

    Private Sub buscarIdProducto()
            Dim consulta As String
            Dim lista As Byte
    
            If txtBuscar.Text <> "" Then
                consulta = "SELECT * FROM Venta WHERE IdProducto ='" & txtBuscar.Text & "'"
                Da = New OleDb.OleDbDataAdapter(consulta, conexion)
                DS = New DataSet
                Da.Fill(DS, "Venta")
                lista = DS.Tables("Venta").Rows.Count
                If lista <> 0 Then
                    dVentas.DataSource = DS
                    dVentas.DataMember = "Venta"
                    'Cargar los datos encontrados donde corresponda
                    txtIdVenta.Text = DS.Tables("Venta").Rows(0).Item("IdVenta")
                    txtIdFactura.Text = DS.Tables("Venta").Rows(0).Item("NoFactura")
                    txtIdProducto.Text = DS.Tables("Venta").Rows(0).Item("IdProducto")
                    nCantidad.Text = DS.Tables("Venta").Rows(0).Item("Cantidad_Venta")
                    txtImporte.Text = DS.Tables("Venta").Rows(0).Item("Importe_Venta")
                Else
                    MsgBox("No hay resultados", vbInformation, "Atencion")
                    txtBuscar.Clear()
                    txtBuscar.Focus()
                End If
            End If
        End Sub

    Pero en vez de que me cargue los valores en un datagrid quiero que solo se actualice los textbox. Tengo solo este codigo para bosquejar lo que deseo hacer (si me entienden). Espero su ayuda.


    • Editado C0ldman lunes, 28 de noviembre de 2016 11:54
    lunes, 28 de noviembre de 2016 11:53

Respuestas

  • C0ldman,

    Puedes usar la clase OleDbDataReader para iterar por los resultados obtenidos (en tu caso se espera cero o una fila devuelta):

    Private Sub buscarIdProducto()
    	If Not String.IsNullOrEmpty(txtBuscar.Text) Then
    		Dim ConsultaSQL As String = "SELECT * FROM Venta WHERE IdProducto = ?"
    
    		Dim cmd As New OleDbCommand(ConsultaSQL, Conexion)
    		cmd.Parameters.AddWithValue("@p1", txtBuscar.Text)
    
    		Dim reader As OleDbDataReader = cmd.ExecuteReader()
    
    		If reader.HasRows Then
    			If reader.Read Then
    				txtIdVenta.Text = reader.GetString(0)
    				txtIdFactura.Text = reader.GetString(1)
    				'Otras asignaciones
    			End If
    		Else
    			MessageBox.Show("No se han encontrado coincidencias")
    		End If
    	End If
    End Sub
    


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Laura CeglzModerator lunes, 28 de noviembre de 2016 16:52
    • Marcado como respuesta C0ldman viernes, 2 de diciembre de 2016 12:17
    lunes, 28 de noviembre de 2016 15:20