Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
DBLookupComboBoxs Master/Detail o Detail/Master

Hola amigos, pues comienzo con decir que uso delphi6 y BD Access, para ejemplificar mi problema tengo 4 tablas:
Código:
   Provincia (Codigo:integer; Descripcion:String)
 
   Municipio (Codigo:Integer;Provincia:Integer; Descripcion:string)   
   
   Usuario(Codigo:Integer;Municipio:Integer; Nombre:string y otros)
Relaciono Master detail Provincia y Municipio, y como ven en la tabla de los usuarios solo almaceno los municipios, el hecho es que a la hora de editar le muestro al usuario en DBLookupComboBoxs estos dos campos(Provincia y Municipio), de manera que cuando este escoge una provincia determinada en el primer componente en el segundo solo le salen los municipios correspondientes a esta(hasta aquí todo bien).

El problema es que si me desplazo al siguiente registro y el municipio no pertenece a la provincia que está seleccionada en estos momentos el DBLookupComboBox que debe mostrar el municipio se queda en blanco, (comportamiento lógico en la relación Master/Detail).

Lo que necesito es evitar esto, se que si invierto la relación y pongo como master el municipio, me pondrá en el primer combo la provincia correcta, pero esto tiene el inconveniente que el usuario no podrá seleccionar otra si quiere hacer una modificativa, en fin estoy un poco confundido con el asunto, y creo que este tipo de interfases es bastante común. Si alguien puede ayudarme les estaría muy agradecido

Saludos Yusnerqui
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #2  
Antiguo 28-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola

Primero agradecer a tdos los que han leido mi mensaje.

Será que no se entendió bien, o que el filtrado por capas que pretendo establecer no se usa, si es lo segundo, como deberia implementar esto para que sea de fácil manejo para el usuario??

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #3  
Antiguo 28-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por yusnerqui
El problema es que si me desplazo al siguiente registro y el municipio no pertenece a la provincia que está seleccionada en estos momentos el DBLookupComboBox que debe mostrar el municipio se queda en blanco, (comportamiento lógico en la relación Master/Detail).

Lo que necesito es evitar esto
Mueve el dataset Master, en el AfterScroll del dataset Detail.

En el Dataset de Municipios, en el AfterScroll de su tabla, buscas el código de la provincia que le corresponde (usa DatasetProvincias.Locate), de esta forma, la provincia se actualiza. Al mover por código el Master, el Detail tambien se actualiza (el combo de Municipios).

Este comportamiento puede tener efectos colaterales, quizás tengas que habilitar el evento AfterScroll y deshabilitarlo por código.

¿Te sirve?
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 28-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola

Pues me da un raro error ("No se pueden abrir más tablas o consultas"). Pero me gustaría saber si has probado esto alguna vez, pues según tengo entendido las filas visibles en la tabla detalles están limitadas por el rango implícito en la tabla maestra, lo que quiere decir que nunca cambiará a un municipio que no esté dentro de los que corresponden a la provincia seleccionada.



La alternativa que estoy pensando, es usar un tercer objeto Dataset que se conecte a la tabla física (Municipio), pero sin relación master/detail y sincronizar este último con los otros dos, de esta forma si cambiaria de municipio y podría probar tu método.



El problema ahora es que aumenta la cantidad de Datasets en el módulo, pero al no tener más alternativas....



Muchas gracias.



Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #5  
Antiguo 29-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Lepe
Este comportamiento puede tener efectos colaterales, quizás tengas que habilitar el evento AfterScroll y deshabilitarlo por código.
Lo que está ocurriendo ahora, es que al modificar la provincia desde el municipio, se actualiza la provincia, y como te decia, tambien se mueve el de Municipios, por tanto, se genera un nuevo AfterScroll de municipios, por lo que volvemos al principio y se vuelve a modificar el Maestro recursivamente e infinitamente .....

Supongo que tienes un DBNavigator, para moverte por los municipios, pues añade código a ese DBnavigator para que al pulsar Next, Prior, Last, Previous, haga la busqueda que necesitas y cambie el código del maestro. Deja en blanco el AfterScroll de Municipios.

Al hacer esto, ten en cuenta los eventos AfterScroll, beforeScroll de las tablas implicadas para que no vuelva a suceder algo parecido.

Siento no haber pensado bien la respuesta
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 29-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola

Primero que todo gracias por tu tiempo.

Cita:
Empezado por lepe
Supongo que tienes un DBNavigator, para moverte por los municipios
No, tengo botones, para moverme por la tabla usuario, en la cual hay un campo que se llama municipio, como puedes ver en el primer mensaje.

Cita:
Empezado por lepe
pues añade código a ese DBnavigator para que al pulsar Next, Prior, Last, Previous, haga la busqueda que necesitas y cambie el código del maestro
Disculpa si soy reiterativo, pero es que la tabla municipio NUNCA tendra un código de provincia diferente a la provincia que está seleccionada en la tabla Provincia(Debido a la relación Master/Detail), es por esto que no se puede hacer la búsqueda.

Estoy a punto de dejar la idea de la relación Master/Detail e implementarlo por medio de filtros, lo que no se es que tan rápido será.

Gracias nuevamente, y si tienen otra idea, será de mucha utilidad.

Saludos.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

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 16:26:25.


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