DataGrid con datos de dos tablas relacionadas diferentes

02/03/2005 - 21:05 por enorso | Informe spam
Alguien podria decirme, si es posible, cual seria el procedimiento para ver
en un datagrid datos de dos tablas existentes en un mismo dataset. Por
ejemplo una tabla pedidos y una tabla proveedores, en la tabla pedidos existe
un campo proveedor en el que almacena el codigo del proveedor.
Se trata de ver en el datagrid los datos de la tabla pedidos pero en la
columna proveedor en lugar de ver el codigo, que no nos dice nada, tendriamos
que poder visualizar el nombre del proveedor que está en la tabla proveedores.

Preguntas similare

Leer las respuestas

#1 J. Carlos Herrrero
02/03/2005 - 21:32 | Informe spam
Hola:
Prueba esto

Private Sub btnXXX_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnXXX.Click
Private loConexion As SqlConnection
Private loDataSet As DataSet
Private loDataAdapter As SqlDataAdapter
Dim lsQuery As String
lsQuery = "Select PEDIDOS.CAMPO1, PEDIDOS.CAMPO2, PROVEEDOR.NOMBRE"
lsQuery = lsQuery & " from PEDIDOS"
lsQuery = lsQuery & " inner join PROVEEDOR on
PEDIDOS.PROVEEDOR=PROVEEDOR.ID_PROVEEDOR"
'crear la conexion
loConexion = New SqlConnection
loConexion.ConnectionString = TuCadenaConexion
'crear el DataAdapter
loDataAdapter = New SqlDataAdapter(lsQuery, loConexion)
'crear el data set
loDataSet = New DataSet
'Actualizamos el DataGrid con el Recordset
'vaciar el dataset
loDataSet.Clear()
'El método Fill abre y cierra automaticamente la conexion
loDataAdapter.Fill(loDataSet, "PRUEBA")
'enlazar el dataset con el datagrid
'en DataSource se asigna el dataset
'en DataMember el nombre de la tabla del dataset que se mostrara en el grid
Me.DataGrid.DataSource = loDataSet
Me.DataGrid.DataMember = "PRUEBA"
End Sub

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"enorso" escribió en el mensaje
news:
Alguien podria decirme, si es posible, cual seria el procedimiento para
ver
en un datagrid datos de dos tablas existentes en un mismo dataset. Por
ejemplo una tabla pedidos y una tabla proveedores, en la tabla pedidos
existe
un campo proveedor en el que almacena el codigo del proveedor.
Se trata de ver en el datagrid los datos de la tabla pedidos pero en la
columna proveedor en lugar de ver el codigo, que no nos dice nada,
tendriamos
que poder visualizar el nombre del proveedor que está en la tabla
proveedores.
Respuesta Responder a este mensaje
#2 enorso
02/03/2005 - 21:59 | Informe spam
Carlos, lo primero agradecerte el esfuerzo, el problema es que la tabla
pedidos y la tabla proveedores estan en dos origenes de datos diferentes con
conexiones diferentes. El tema sería hacer esa consulta pero dentro del
dataset quizas generando una nueva tabla, un dataview o algo parecido. La
pregunta es ¿Sería posible realizar una consulta como la que me has escrito
sobre dos tablas de un mismo dataset para bien crear una nueva tabla dentro
del mismo dataset o crear un dataview?

Saludos desde Asturias
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
02/03/2005 - 23:11 | Informe spam
Si tienes las relaciones correspondientes definidas en el datase agrega una
columna dinamica que traiga el campo que quieres de la tabla relacionada.
Por ejemplo:

' ProveedorPedido es el nombre de la relacion entre tablas definida en el
DataSet
pedido.Columns.Add("NombreProveedor", GetType(String),
"Parent(ProveedorPedido).Nombre")

Si no tienes hecha la relacion, entonces deberas hacerla. Por ejemplo:

Dim relacionProveedorPedido As New DataRelation("ProveedorPedido",
proveedor.Columns("Id"), pedido.Columns("IdProveedor"))
ds.Relations.Add(relacionProveedorPedido)

Si estas usando un dataset tipado todo esto lo puedes hacer en el xds
relacionando las tablas y colocando la expresion dinamica en la propiedad
Expression de los campos de la tabla.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Las respuestas a los problemas de la vida
no estan en una botella... ¡Están en la TV!
Homero Simpson
Respuesta Responder a este mensaje
#4 LSRI
21/06/2005 - 20:38 | Informe spam
Eso de "Parent(ProveedorPedido).Nombre" esta bien escrito?
ME da error: "Referencia a objeto no establecida como instancia de un objeto"

Escribo este codigo:

Dim dvm As New DataViewManager
Dim col As New DataColumn("MotivoConsulta", GetType(String),
"Parent(FiliAnam).Motivo")

bdDataSet.Tables("FILIACION").Columns.Add(col) 'AKI DA EL ERROR
With dvm
.DataSet = bdDataSet
.DataViewSettings("FILIACION").Sort = "Nombre"
End With

With DataGrid1
.DataSource = dvm
.DataMember = "FILIACION"
End With
"Eduardo A. Morcillo [MS MVP VB]" wrote:

Si tienes las relaciones correspondientes definidas en el datase agrega una
columna dinamica que traiga el campo que quieres de la tabla relacionada.
Por ejemplo:

' ProveedorPedido es el nombre de la relacion entre tablas definida en el
DataSet
pedido.Columns.Add("NombreProveedor", GetType(String),
"Parent(ProveedorPedido).Nombre")

Si no tienes hecha la relacion, entonces deberas hacerla. Por ejemplo:

Dim relacionProveedorPedido As New DataRelation("ProveedorPedido",
proveedor.Columns("Id"), pedido.Columns("IdProveedor"))
ds.Relations.Add(relacionProveedorPedido)

Si estas usando un dataset tipado todo esto lo puedes hacer en el xds
relacionando las tablas y colocando la expresion dinamica en la propiedad
Expression de los campos de la tabla.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Las respuestas a los problemas de la vida
no estan en una botella... ¡Están en la TV!
Homero Simpson



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida