Pregunta sobre maestro-detalle

24/01/2007 - 15:01 por CHAR72 | Informe spam
Hola, estoy "luchando" para hacer una aplkicacion para Pocket 2003, tengo
una db SQL Mobile con 2 tablas relacionadas por Foreing Key, probe en un
formulario 2 grillas, una con la tabla maestra y otra detalle y funciona
perfecto, ahora lo que necesito, es tener en un formulario una grilla y en
otro mostrar datos de la tabla maetra y la tabla detalle, para ello utilice
el asistente para crear el formulario de Sumario, le agregue una grilla, le
puse como datasource el FK_... pero no muestra nada. Que le falta, o que
publico para que este mas claro.

Saludos y gracias

Carlos
 

Leer las respuestas

#1 SoftJaén
25/01/2007 - 09:59 | Informe spam
"CHAR72" escribió:

..., ahora lo que necesito, es tener en un formulario una grilla y en otro
mostrar datos de la tabla maetra y la tabla detalle, para ello utilice el
asistente para crear el formulario de Sumario, le agregue una grilla, le
puse como datasource el FK_... pero no muestra nada. Que le falta, o que
publico para que este mas claro.



Hola:

A la propiedad DataSource de los distintos controles "grilla", le deberás de
asignar un objeto DataSet.

Para construir un formulario maestro/detalle mediante código fuente,
básicamente los pasos serían los siguientes:

1. Declarar a nivel del formulario un objeto DataSet:

Private ds As New DataSet

2. En un procedimiento cualquiera, establecer una conexión con el origen de
datos, utilizando el proveedor .net adecuado, en el ejemplo, el proveedor
.net para Microsoft Access:

Dim cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb")

cnn.Open()

3. Crear un adaptador de datos para la tabla Maestro:

Dim daMaestro As New OleDbDataAdapter(ConsultaSQL, cnn)

4. Rellenar el objeto DataSet con los datos de la tabla Maestro:

daMaestro.Fill(ds, "TablaMaestro")

5. Crear un segundo adaptador de datos para la tabla Detalle:

Dim daDetalle As New OleDbDataAdapter(ConsultaSQL, cnn)

6. Rellenar el objeto DataSet con los datos de la tabla Detalle:

daDetalle.Fill(ds, "TablaDetalle")

7. Crear una relación entre ambas tablas:

ds.Relations.Add("NombreRelacion", _
ds.Tables("TablaMaestro").Columns("CampoRelacion"), _
ds.Tables("TablaDetalle").Columns("CampoRelacion"))

8. Enlazar los distintos controles "grilla" con el objeto DataSet:

ControlGrilla1.DataSource = ds
ControlGrilla1.DataMember = "TablaMaestro"

ControlGrilla2.DataSource = ds
ControlGrilla2.DataMember = "TablaMaestro.NombreRelacion"

9. Cerrar la conexión:

cnn.Close()

Eso es todo. Cada vez que selecciones un registro en el control "maestro",
te aparecerán los registros relacionados en el control "detalle". Adapta el
ejemplo a tus necesidades.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares