Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Lookup y dbGrid

Amigo buenos días despues de buscar en todos los foros y en google no he podido encontrar la solución a mi problema.
Primero trabajo con delphi 7 y firebird 2.0, estoy trabajando con el componente TClientDataSet en el cual he creado un campo lookup todo me funciona bien, el problema que tengo es que la consulta que llena el Lookup es dinamica dependiendo de un campo que se seleccione se consultan los registros a mostrar en el lookup el problema radia es por ejemplo si en el primer registro que se selecciona un valor que no va a estar en el segundo registro, es decir en la consulta que se hace me pone el campo lookup en blanco del primer registro ya insertado. El programa graba bien la información, el problema es que el usuario puede creer que el campo lookup de campo anterior se ha borrado, espero haya sido claro. Espero me puedan dar una luz para solucionar este problema.
Responder Con Cita
  #2  
Antiguo 15-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Hola amigos alguien puede ayudarme?
Responder Con Cita
  #3  
Antiguo 15-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo no lo he entendido, la verdad
Responder Con Cita
  #4  
Antiguo 15-02-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Algunas dudas.

Cita:
TClientDataSet en el cual he creado un campo lookup ...
¿"lookup" es un nuevo tipo de dato?

Cita:
...dependiendo de un campo que se seleccione ...
¿Se seleccione en donde?

Cita:
...si en el primer registro que se selecciona un valor que no va a estar en el segundo registro...
¿Primer registro?, ¿segundo registro?...de dónde?

Cita:
...en la consulta que se hace me pone el campo lookup en blanco del primer registro ya insertado.
...?????

Te recomiendo las Guía de Estilo y la Guía alternativa del foro.

Te sugiero también el uso de signos de puntuación.

Saludos.


Eduardo Laguna.
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #5  
Antiguo 15-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias por su ayuda repito mi problema, tengo un producto ejemplo gaseosa, el cual se vende por ejemplo en dos puntos almacen1, almacen2 y tengo otro producto ejemplo cerveza que solo se vende en almacen1.
Los valores almacen1 y almacen2 son los que se despliegan en el campo Lookup, cuando estoy llenando la DBGrid estoy en el primer registro llenando el valor de la gaseosa al seleccionar el punto me aparece almacen1 y almacen2, el usuario selecciona almacen2 cuando paso al segundo registro, cerveza la consulta se actualiza porque solo se vende en almacen1 el usuario solo selecciona almacen1, pero el problema es cuando pasa al tercer registro. Como la consulta que llena el lookup esta solo con el punto almacen2 el primer registro de la gaseosa queda en blanco. Espero sea mas claro.
Responder Con Cita
  #6  
Antiguo 15-02-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Me quedé igual.

Cuando dices:

Cita:
...campo Lookup...
Supongo que te refieres a un "componente" Lookup y no a un "campo" de tu DB?

Cita:
...cuando estoy llenando la DBGrid estoy en el primer registro llenando el valor de la gaseosa...
Estás en el "primer registro" de la consulta de los almacenes? o estás en el primer registro del ClientDataSet donde (supongo) estás escribiendo los datos de tu gaseosa.

Con "llenando el valor de la gaseosa" te refieres al precio ($)? o a qué? en particular lo de "llenando".

Cita:
...al seleccionar el punto me aparece almacen1 y almacen2,...
Cuál "punto"?

Cita:
...el problema es cuando pasa al tercer registro. Como la consulta que llena el lookup esta solo con el punto almacen2 el primer registro de la gaseosa queda en blanco...
En esta parte... no entendí nada.


Eduardo Laguna
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #7  
Antiguo 15-02-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Haciendo otro intento.

Supongo que lo que deseas es manejar las existencias de determinado producto en varios almacenes.

Si es así, entonces lo que te sugiero es que manejes un Query con tu catálogo de productos y lo muestres en el componente que quieras, un TDBListBox es bueno. Cuando selecciones algún elemento (producto) de éste TDBListBox entonces haces "otro" Query a la DB (no al ClientDataSet) para saber en qué almacenes se encuentra tu producto y lo muestras en otro TDBListBox.

Ahora sí, ya puedes agregar los datos de tu producto y el almacén seleccionado al ClientDataSet.

En resumen:
  • 2 Query's, uno para productos y otro para almacenes (éste último es el dinámico)
  • 1 ClientDataSet para colocar los datos seleccionados y lo que quieras
Espero haberte entendido. Saludos.


Eduardo Laguna
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #8  
Antiguo 16-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
La verdad no se ya como explicar, el problema no es de lógica de programación ni de relación de tablas el problemas es del campo lookup que se relaciona con la tabla que consulta las opciones que se va a listar, en el primer registro existen dos opciones almacen1 y almacen2 que son los datos para la gaseosa pero para el segundo registro como la cerveza solo se vende en almacen2 muestra almacen2 pero almacen1 ya no se muestra en el primer registro.
Responder Con Cita
  #9  
Antiguo 16-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Vlady Ver Mensaje
La verdad no se ya como explicar
Ese es el problema, si no sabes explicarlo, ¿cómo quiéres que los demás lo entiendan?
Responder Con Cita
  #10  
Antiguo 17-02-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Pues a mí me parece que efectivamente es un problema de lógica.

Si los datos de los almacenes los tomas tomando como parámetro el producto, es normal que cuando el parámetro sea un producto que solamente está en un almacén pues... solamente te muestre ese almacén.

Por otra parte, si lo que tienes es un lookup dentro de un grid, es correcto que se actualice el lookup con cada registro y te muestre los mismos para todo el grid, es decir:

Si en tu primer registro llenaste el lookup con las cadenas "Almacén1" y "Almacén2", y con el segundo registro solamente llenaste el lookup con "Almacén1", el último cambio que hayas realizado al lookup es el que se queda activo para todo el Grid.

Espero haberte comprendido (créeme realmente lo estoy intentando) . ;-)

Saludos.


Eduardo Laguna
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #11  
Antiguo 17-02-2012
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Señor laguna gracias por tu ayuda

Cita:
Empezado por elaguna Ver Mensaje
Pues a mí me parece que efectivamente es un problema de lógica.

Si en tu primer registro llenaste el lookup con las cadenas "Almacén1" y "Almacén2", y con el segundo registro solamente llenaste el lookup con "Almacén1", el último cambio que hayas realizado al lookup es el que se queda activo para todo el Grid.
Aquí es donde me has comprendido, entonces si no es con un lookup como puedo hacer esto ya que lo debe hacer de forma dinamica para cada registro?
Responder Con Cita
  #12  
Antiguo 17-02-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Cita:
Empezado por Vlady Ver Mensaje
Señor laguna gracias por tu ayuda



Aquí es donde me has comprendido, entonces si no es con un lookup como puedo hacer esto ya que lo debe hacer de forma dinamica para cada registro?

Pues el uso de controles dentro del Grid... así funcionan, me parece que no hay mucho que hacer.

Por otra parte, si el lookup lo estás llenando de forma dinámica, cada que vez que actualizas la consulta, por lógica actualizas el contenido del lookup y por ende "muy probablemente" los datos no siempre serán válidos para cada uno de tus registros.

Como alternativa se me ocurre (si es que los datos de almacén son sólo de consulta), que dejes el campo con tu catálogo de almacenes con todos los conceptos (Almacen1, Almacén2, ..., AlmacénX) y que los datos de almacén que le correspondan a cada artículo los coloques en un tercer control dentro del grid (por ejemplo un memo en la DB y un TText en el Grid), para que cada que cambies de registro no se actualicen los datos para todos.

Saludos.


Eduardo Laguna.
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #13  
Antiguo 17-02-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Creo que debes utilizar un campo calculado para evaluar si el LookUp te devuelve algo o no, en caso de que devuelva datos dejas los datos que devuelva y en caso contrario por ejemplo lo rellenas con <<< No hay movimientos>>> o lo que te convenga.

Situación los Lookup los usamos pero no los mostramos en la rejilla, esto lo hacemos por medio de campos calculados que actuaran evaluando como dije antes si hay que dejar el contenido extraido por el LookUp si lo hay o un texto personalizado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Campos Lookup en DBGrid cheche358 Varios 1 04-03-2010 13:24:08
Lookup en Dbgrid Moparova Conexión con bases de datos 7 24-07-2007 22:28:59
DBGRID con campo Lookup nancy OOP 0 25-01-2007 16:39:36
ayuda dbgrid y lookup Sir_Roc Varios 4 02-02-2006 18:55:16
LookUp en un DbGrid fmonte Varios 3 06-04-2005 19:47:30


La franja horaria es GMT +2. Ahora son las 00:13:38.


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