none
tablas Maestro detalle Editar

    Pregunta

  • Buenas yo aquí de nuevo molestando...

    Tengo 2 tablas una Pedido y la otra Detalle de Pedido, dichas tablas las logro guardar sin ningún problema, en el formulario utilizo un grid para cargar el detalle del pedido y utilizo varios textbox para complementar la información, mi duda es: ¿como mando a llamar la información de dichas tablas y las cargo de nuevo en el grid por si necesito editar algún campo? la parte que se me hace algo compleja el poder llenar el grid, con el procedimiento almacenado no creo tener ningún problema, simplemente seria un update donde @IdPedido = IdPedido

    Mi idea es poder desplegar todos los pedidos en un grid, al seleccionar un pedido en especifico (con doble clic) este me cargue mi formulario de pedidos con la información del Pedido "X"

    a ver si me echan una mano en esto :)

    martes, 28 de febrero de 2017 22:59

Respuestas

  • Hola:
    En este ejemplo no se usan procedimientos almacenados.
    La tabla customers es la equivalente a pedidos, y la tabla orders es la equivalente a detallepedido

    En un Form con 2 DGV, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptadores
                    Dim daCustomers As New SqlDataAdapter("SELECT * FROM Customers", loConexion)
                    ' instanciar datatable
                    Dim mDataTable As New DataTable
                    ' utilizar el dataadapter para llenar el datatable
                    daCustomers.Fill(mDataTable)
                    Me.dgvCustomers.DataSource = mDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub dgvCustomers_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCustomers.CellClick
            If e.RowIndex = -1 Then
                Return
            End If
            ' limpiar los valores del DataGridView
            Me.dgvOrders.DataSource = Nothing
            Dim loFila As DataGridViewRow = Me.dgvCustomers.CurrentRow()
            Dim lsQuery As String = "Select CustomerID, OrderID, OrderDate From Orders Where CustomerID='" & loFila.Cells("CustomerID").Value.ToString() & "'"
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter(lsQuery, loConexion)
                    ' instanciar datatable
                    Dim lDataTable As New DataTable()
                    lDataAdapter.Fill(lDataTable)
                    ' cargar los valores al DataGridView
                    Me.dgvOrders.DataSource = lDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 9:16

Todas las respuestas

  • Hola:
    En este ejemplo no se usan procedimientos almacenados.
    La tabla customers es la equivalente a pedidos, y la tabla orders es la equivalente a detallepedido

    En un Form con 2 DGV, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptadores
                    Dim daCustomers As New SqlDataAdapter("SELECT * FROM Customers", loConexion)
                    ' instanciar datatable
                    Dim mDataTable As New DataTable
                    ' utilizar el dataadapter para llenar el datatable
                    daCustomers.Fill(mDataTable)
                    Me.dgvCustomers.DataSource = mDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub dgvCustomers_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCustomers.CellClick
            If e.RowIndex = -1 Then
                Return
            End If
            ' limpiar los valores del DataGridView
            Me.dgvOrders.DataSource = Nothing
            Dim loFila As DataGridViewRow = Me.dgvCustomers.CurrentRow()
            Dim lsQuery As String = "Select CustomerID, OrderID, OrderDate From Orders Where CustomerID='" & loFila.Cells("CustomerID").Value.ToString() & "'"
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter(lsQuery, loConexion)
                    ' instanciar datatable
                    Dim lDataTable As New DataTable()
                    lDataAdapter.Fill(lDataTable)
                    ' cargar los valores al DataGridView
                    Me.dgvOrders.DataSource = lDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 9:16
  • Hola:
    En este ejemplo no se usan procedimientos almacenados.
    La tabla customers es la equivalente a pedidos, y la tabla orders es la equivalente a detallepedido

    En un Form con 2 DGV, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptadores
                    Dim daCustomers As New SqlDataAdapter("SELECT * FROM Customers", loConexion)
                    ' instanciar datatable
                    Dim mDataTable As New DataTable
                    ' utilizar el dataadapter para llenar el datatable
                    daCustomers.Fill(mDataTable)
                    Me.dgvCustomers.DataSource = mDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub dgvCustomers_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCustomers.CellClick
            If e.RowIndex = -1 Then
                Return
            End If
            ' limpiar los valores del DataGridView
            Me.dgvOrders.DataSource = Nothing
            Dim loFila As DataGridViewRow = Me.dgvCustomers.CurrentRow()
            Dim lsQuery As String = "Select CustomerID, OrderID, OrderDate From Orders Where CustomerID='" & loFila.Cells("CustomerID").Value.ToString() & "'"
            Try
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter(lsQuery, loConexion)
                    ' instanciar datatable
                    Dim lDataTable As New DataTable()
                    lDataAdapter.Fill(lDataTable)
                    ' cargar los valores al DataGridView
                    Me.dgvOrders.DataSource = lDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    creo poder interpretar muy bien el código, lo implementare y lo acoplare a lo que necesito... luego vuelvo y comento que tal me fue! Gracias por al respuesta
    miércoles, 1 de marzo de 2017 16:58