Delphi - Duda Base de datos 2

 
Vista:
sin imagen de perfil

Duda Base de datos 2

Publicado por Anel (78 intervenciones) el 22/01/2008 18:00:46
Hola:

Tengo dos adoTable que tienen un campo en comun. Necesito que cuando en un comboLookup seleccine un registro de la primera adoTable, la segunda se posicione en el mismo registro del campo en comun.

Como puedo hacer esto?

Gracias mil
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Duda Base de datos 2

Publicado por E.T. (1244 intervenciones) el 22/01/2008 18:54:46
Hay dos formas de hacerlo:

1- Este metodo de hacerlo te posicionará en el registro que deseas (sin usar código) pero sólo te mostrará los registros donde el campo en comun se repita, por ejemplo: si en la tabla principal seleccionas cualquier registro, en la segunda tabla se mostraran todos los registros que tengan el campo con que se relacionan y los demás no se mostrarán,

para hacer esto solo tienes que poner como masterSource en la segunda tabla al dataSource de la primera, luego das click en el espacio para masterFields de la misma tabla, das click en el botón con tres puntos para abrir un dialogo que te permitirá hacer la relación entre las tablas, solo hay que elegir el campo en comun de ambas tablas, luego en add y en ok, con eso basta, ya tienes relacionadas las dos tablas

2- Con este otro método localizas el registro de la segunda tabla pero mostrandose todos los registros de la segunda tabla:

en el evento OnCellClick del dbGrid que apunta a la tabla principal pones la linea

ADOTable2.Locate('campo de la segunda tabla a buscar', ADOTable1.FieldValues['campo de la tabla principal a buscar'],[]);

por ejemplo, quiero que en la tabla de Codigos de IVA me encuentre el respectivo para el cliente seleccionado

ADOTable2.Locate('codigo', ADOTable1.FieldValues['IVA'],[ ]);

Donde debes de cambiar 'campo de la segunda tabla a buscar' e 'valor de la tabla a buscar' por el campo en comun de tus tablas.

Ahora, si no tienes DbGrids para esto, solo hay que hacer lo mismo pero en el evento AfterScroll de la tabla principal pero con un agregado:

if ADOTable2.Active then
ADOTable2.Locate('codigo', ADOTable1.FieldValues['IVA'],[]);

NOTA: esto funciona solo cuando cambias de registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar