PDA

Ver la Versión Completa : como ver un tipo de datos de una grilla en otra grilla en el mismo form?


calistian
01-10-2008, 18:01:48
hola gente del foro tengo una inquietud y la verdad no se como hacer busque en el foro pero no encontre nada...lo q quiero realizar es lo siguiente tengo un form "Turnos" aca les dejo una imagen del mismohttp://img381.imageshack.us/my.php?image=turnoshh1.jpg en lo cual en la primera grilla se encuentran todas las disciplinas de un gimnasio, luego en otra grilla estan los horarios de las disciplinas q los agrego mediante el boton "Añadir" como se ve en la foto, pero lo que quiero es q al hacer un click en la primera grilla sobre la disciplina deseada; en la otra grilla de Horarios se tendria que mostrar todos los horarios q di de alta anteriormente en esa disciplina y asi con las demas; si en alguna disciplina no hay datos de horarios no me tendria q mostrar nada nose si me explico bien en lo que deseo hacer, espero que puedan ayudarme desde ya muchas gracias.-

Caro
01-10-2008, 18:10:14
Hola calistian, puedes hacer una relación maestro detalle entre los dos DataSets que estan enlazados a tus DBGrids.

Saluditos

lKinGl
01-10-2008, 18:21:30
Hola calistian

si fueses un poquito mas exacto o específico en lo que quieres te aseguro que te podriamos ayudar mejor pero voy a intentar traducir lo que planteas....

me imagino que lo que quieres es que si seleccionas
Pesas = en el dbgrid2 te salgan los horarios de pesas
Pilates= en el dbgrid2 te salgan los horarios de pesas
¿y asi sucesivamente con todos los demás items?

si es así lo que debes hacer es lo siguiente:

en el evento oncellclick del dbgrid1 desarrolla el siguiente código:


if tabledisciplinas.locate('id_discip',dbgrid1.fields[0].asstring,[]) then
begin
dbgrid2.fields[0].asstring:=tablehorarios.fieldvalues['num_orden'];
dbgrid2.fields[1].asstring:=tablehorarios.fieldvalues['id_dias'];
dbgrid2.fields[2].asstring:=tablehorarios.fieldvalues['hs_desde'];
// y asi con todos los demás campos
end;


en estos momentos no tengo delphi a la mano pero creo que si se puede como te acabo de señalar ó también


TableDisciplinas.First;
while not TableDisciplinas.EoF do
begin
if TableDisciplinas.Locate('id_discip',dbgrid1.fields[0].asstring,[]) then
begin
dbgrid2.fields[0].asstring:=tablehorarios.fieldvalues['num_orden'];
dbgrid2.fields[1].asstring:=tablehorarios.fieldvalues['id_dias'];
dbgrid2.fields[2].asstring:=tablehorarios.fieldvalues['hs_desde'];
end;
end;


Salu2

calistian
01-10-2008, 18:28:17
estem si es lo que quiero hacer lKinGl cuando selecciono por ej:
pesas = en la grilla2 me muestre los horarios de esa disciplina(pesas)
pilates= en la grilla2 me muestre los horarios de esa disciplina(pilates)
y asi sucesivamente^^ voy a probar lo que mencionaste y te cuento como me fue gracias por ayudar

Caro
01-10-2008, 18:34:23
Con el Locate solo te posicionas en el registro que encuentra, en todo caso si solo se quiere mostrar los horarios de una diciplina sería hacer una consulta. Pero si las tablas estan relacionadas sería mejor hacer una relación maestro detalle.

Cada query tiene su datasource respectivo query1->datasource1 y query2->datasource2, para que tengan la relación maestro detalle, el query2 que hara de detalle (donde estan tus horarios) en su propiedad datasource debe apuntar al datasource1

En Query1 tenemos esta consulta-> SELECT * FROM Disciplinas
En Query 2 tenemos -> SELECT * FROM HORARIOS WHERE fkIdDiscip=:iddiscip

donde el campo iddiscip es el que relaciona ambas tablas, haciendo eso a medida que te muevas en tu dbgrid1, veras los datos que le corresponden a ese registro en tu dbgrid2.

Saluditos

JoAnCa
01-10-2008, 19:29:04
Coincido con Caro
Lo mejor es hacer un Maestro Detalle de las tablas, y con eso sale lo que quieres sin tener que teclear nada de codigo.

Por si no entiendes como se hace, te explicare pues es muy facil:

En la dataset donde almacenas los horarios, busca las propiedades Mastersource (que seria el dataset de las disciplinas) y Masterfields (que seria el campo por el que se enlazan los dos dataset)

Espero que con esto resuelvas

Saludos