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.
|
|
|
|