Principales respuestas
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 :)
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 detallepedidoEn un Form con 2 DGV, copia y pega el siguiente codigo
Option Explicit On
Option Strict On
Imports System.Data.SqlClientPublic 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 SubPrivate 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 ClassUn saludo desde Bilbo
Carlos- Propuesto como respuesta Joyce_ACModerator miércoles, 1 de marzo de 2017 15:18
- Marcado como respuesta Enrique M. MontejoModerator viernes, 3 de marzo de 2017 7:47
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 detallepedidoEn un Form con 2 DGV, copia y pega el siguiente codigo
Option Explicit On
Option Strict On
Imports System.Data.SqlClientPublic 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 SubPrivate 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 ClassUn saludo desde Bilbo
Carlos- Propuesto como respuesta Joyce_ACModerator miércoles, 1 de marzo de 2017 15:18
- Marcado como respuesta Enrique M. MontejoModerator viernes, 3 de marzo de 2017 7:47
-
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 detallepedidoEn un Form con 2 DGV, copia y pega el siguiente codigo
Option Explicit On
Option Strict On
Imports System.Data.SqlClientPublic 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 SubPrivate 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 ClassUn saludo desde Bilbo
Carlos