Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Problema campo Lookup

Hola, foreros del club Delphi, vereis estoy utilizando un DBGrid editable con un campo LookUp.

El DBGrid tiene por campos:
FECHA, ARTICULO,DESCRIPCION, CANTIDAD, PRECIO, TIPOIVA
que toma de uan tabla dataset lfact que corresponde a una tabla lfactura, que corresponde a las líneas de una factura.

En dicho dbgrid podemos intriducir manualmente datos ó artículos correspondientes a una tabla artículo ó que no corresponden a ninguna tabla.

Aquí viene cuando interviene el campo lookup, que se refiere al campo DESCRIPCION del DBGrid y se conecta con el campo descripcion de la tabla artículo. He conseguido que se despliegue el combo con la descripcion de los artículos, de la siguiente manera:

Código:
  
 Esta funcionalidad ya viene por defecto en el DBGrid. Lo que tienes que hacer es:

1. Agregar los campos de la tabla en el editor de campos del dataset (doble click sobre la componente)

2. Agregar (con el mismo editor) un nuevo campo. Ajusta las propiedades de este nuevo campo así:

Name - el que quieras, p. ej. "Descripcion"
Type - String
Size - La longitud máxima de la descripción
FieldType - Lookup
DataSet - el dataset que apunte a la tabla de artículos -> (articulo)
ResultField - el campo de la tabla de artículos que quieras mostrar (supongo que será 'descripcion') -> descripcion
Lookup Keys - campo código del artículo ->cod_art
Key Fields - campo en la tabla de facturas que apunte a la tabla de artículos.
				   -> cod_art

Con esto, al momento de entrar a la columna "Descripción" del DBGrid, podrás desplegar el combo. Cualquier actualización que hagas del combo se verá automáticamente reflejada.
Tal y como indica Roman en un hilo.


pero lo que me falta es que una vez seleccionada una descripcion de la tabla artículo, es que rellene en los campos del dbgrid lo siguiente:

en articulo -> que rellene el codigo de artículo de la tabla artículo.
en precio -> el precio del artículo de la tabla artículo.
en tipoiva-> el iva del artículo de la tabla artículo.

y se situe en la casilla cantidad del dbgrid.

Espero su ayuda y le doy las gracias de antemano
Responder Con Cita
  #2  
Antiguo 26-09-2005
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.
El "relleno" de los datos del Grid puedes programarlo en el evento OnCloseUp del Combo.

Puedes definir un procedimiento que te devuelva esos datos (mediante una consulta) y asignarselos al DataSet asociado al grid.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 26-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Gracias por tu ayuda, lo que obtienes con el campo LookUp es un combo en un DbGrid pero no tiene evento OnCloseUp. Igual estoy equivocada, si es así corrijeme, porque por lo menos yo no le veo por ningún lado.


De todas formas muchas gracias, compañero.
Responder Con Cita
  #4  
Antiguo 26-09-2005
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola, tienes razón, el TDBGrid no permite "enlazar" controles externos a las celdas...
pensé que habías enlazado un TDBComboBox a la celda del grid...

Investigando un poco en la VCL,
he visto que si añades los campos del dataset en el grid como COLUMNS,
(haciendo doble click en esa propiedad y pulsando botón derecho del ratón, selecciona "All Fields")
y al campo lookup le pones en su propiedad ButtonStyle = esEllipsis,
el evento del grid OnEditButtonClick si funciona.

En este evento es donde puedes programar la carga de los datos.

Esto es porque el DBGrid crea un DBGridInplaceEdit para los campos lookup que tenga enlazados.

Extraído de la VCL :
TDBGridInplaceEdit adds support for a button on the in-place editor,
which can be used to drop down a table-based lookup list, a stringlist-based
pick list, or (if button style is esEllipsis) fire the grid event
OnEditButtonClick.

Salu2.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #5  
Antiguo 26-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Mil gracias lo pruebo y te cuento.
Responder Con Cita
  #6  
Antiguo 27-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Wink

Perfecto eso es justo lo que necesitaba.

Graciassssssssssssssssss.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:43:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi