![]() |
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) 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 |
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 |
Cita:
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? |
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 |
Cita:
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 :o |
Hola
Primero que todo gracias por tu tiempo.
Cita:
Cita:
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. |
La franja horaria es GMT +2. Ahora son las 20:58:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi