![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
|
dbgrid
Hola a todos, llevo mucho tiempo intentando hacer esto pero no lo doy hecho.
En un dbgrid tengo la información de una tabla: CODIGO-NOMBRE_PRODUCTO-CANTIDAD-.....-.....-.... y en otra tabla tengo : CODIGO-NOMBRE_PRODUCTO pues bien, quiero que cuando estoy metiendo el dato correspondiente al código en el dbgrid, al pulsar el tabulador y que se mueva a la casilla de NOMBRE_PRODUCTO, este se rellene con el nombre automáticamente, el pb es que no sé como hacerlo, podeis ayudarme? |
|
#2
|
|||
|
|||
|
Hola:
Entiendo que NOMBRE_Producto es un campo LookUp ¿No? puesto que escribirlo de nuevo en la tabla sería tener información duplicada (para eso está el CODIGO). Si es así, o bien tienes el campo NOMBRE_PRODUCTO como LookUp y te sale automáticamente si estableces los nexos necesarios con la tabla Productos (la que sirve de LookUp), o bien defines ese campo como Calculated, y en el OnCalcFields haces la busqueda a "a mano" en la tabla de productos (ten en cuenta que esta opción puede ser algo lenta si tiene AutoCalcFields a TRU, pues repetirá muchas veces la búsqueda). En caso de que el campo NOMBRE_PRODUCTO fuera un campo persistente dentro de la tabla (cosa no recomendable porque como dije supone duplicar información y facilitar alguna inconsistencia), tendrías que hacer esa búsqueda en el evento OnChange del campo CODIGO y ahí asignar el valor encontrado. Fíjate que todas las operaciones que propongo son a nivel de tabla, o DataSet, independientemente de que edites desde un DBGrid o desde otro control DBAware. Un saludo
__________________
Guía de Estilo |
|
#3
|
|||
|
|||
|
si, la información es redundante, aparece el código y el nombre, me lo han pedido así, bueno entonces, lo que no me queda claro, es el mejor método a usar, y además, como identifico el campo que estoy insertando?
|
|
#4
|
|||
|
|||
|
Hola:
En ese caso, sobre el campo CODIGO, en su evento OnChange(*) haces algo así: Código:
procedure CampoCodigoChange ;
begin
// Buscar en tabla de Productos (mediante SQL, o con los métodos
// Locate o FindKey) el nombre del produto que se acaba de introducir.
// Obtenido el valor de NOMBRE_PRODUCTO, lo asignas al campo
// correspondiente:
Tabla.FieldByName('NOMBRE_PRODUCTO').AsString := ResultadoBusqueda;
end;
Espero que te sirva esta explicación por encima ...
__________________
Guía de Estilo |
|
#5
|
|||
|
|||
|
gracias por todo. Te lo agradezco.
|
![]() |
|
|
|