TDBLookup ComboBox enlazados y un cliente

Disculpen las molestias... Estoy Programando en Delphi 7 y tengo atorado el desarrollo de un pequeño sistema por lo siguiente:

3 Tablas InterBase (Clientes, Estados y Municipios), Muestro algunos datos entre los cuales están IdCliente, Nombre, IDEstado, IDMunicipio de la Tabla de Clientes

Un DBLookupComboBox (DBLkpCBoxEdo) para Mostrar los estados

Un DBLookupComboBox (DBLkpCBoxMun) para Mostrar los Municipios

Ahora bien, Con un TDBNavigator recorro bien los registros de Clientes...

En El (DBLkpCBoxEdo) despliego y asigno muy bien los Estados (Claves) a los Clientes... Pero al querer hacer lo mismo con el (DBLkpCBoxMun) [NO LOGRO AISLAR LOS MUNICIPIOS DEL ESTADO QUE ESTE ELEGIDO EN ESE MOMENTO Y REGISTRO CORRESPONDIENTE], siendo que las valores para cada caso son los siguientes:

(DBLkpCBoxEdo)... (DBLkpCBoxMun)...

DataSource = DataSourceClientes DataSourceClientes

DataField = LdEdo (Igual a KeyField) LdMun (mismo tipo de dato a IdMun)

ListSource = DataSetEstados DataSetMuns

ListField = IdEdo;NomEdo IdMun;NomMun

ListFieldIndex=1 (Para ver NomEdo) 1 (para ver NomMun)

KeyField = IdEdo (Igual a DataField) IdMun (mismo tipo de dato a LdMun)

Aclaro... Catedo. IdEdo (numérico de 2 Dígitos) Clave Principal de estados

Catmun. IdEdo (numérico de 2 dígitos)

Catmun. IdMun (numérico de 3 digitos)

CatMun. IdEdo y CatMun. IdMun... Forman la Clave Principal de municipios

Clientes. LdEdo y Clientes. LdMun ... Son Claves secundarias (ForeignKey)

Solicito de su Ayuda POR FAVOR ... De antemano le(s) doy las Gracias por Su Amabilidad, Su Tiempo y Disposición que Tengan para conmigo... Tengo 68 años Y SIGO en este asunto de la Informática... Pero no he dado con la solución...

Atentamente. Ing. J Baldemar Roldan

1

1 respuesta

Respuesta
2

J. Baldemar:

Mira te sugiero que cuando el usuario haga click en tu DBLookupComboBox para seleccionar el Estado ejecutes la consulta adecuada para que únicamente los datos de los municipios relacionados con dicho Estado sean mostrados en el DBLookupComboBox de Municipios.

Hay algunas otras alternativas que requieren un poco más de trabajo, pero tendría que explicarlas con más detalle, si puedes contactarme a roberboy68 por hotmail o skype ahí te podría asistir online.

Estimado Joven y Amigo Roberboy Agradezco su atención a mi solicitud y aclaro lo siguiente:

El SelectSQL del TIBDataSet es: [ select * from catmun where IdEdo = :IDEDO

El juego y DUDA esta entre la Definición del [SelectSQL] en el TIBDataSet y la Opción que me indicas [Hacer el SELECT al responder el USUARIO en el DBLookUpComboBox], porque? porque si lo defino al inicio al ejecutar [PARA PROBAR] ME MANDA MENSAJE DE QUE NO SA HA DEFINIDO EL parámetro :IDEDO (Lógico pues solo se dispondrá de el hasta responder "Por el Usuario" en el DBLookUpComboBox.

Pero si NO DEFINO dicho SelectSQL antes de ejecutar el programa, me dice que Falta dicha definición del SelectSQL..

De tal manera que aun a esta fecha 11 Nov 2012 a las 19:22 Horas. sigo buscando la solución.....disculpa tanta distracción en tu tiempo pero se que solo ayudándonos unos a otros en el ambiente en que estemos podremos salir adelante.ç

Le agradezco su tiempo, disposición y amabilidad para con un servidor.

Atentamente. J. Baldemar Roldán

Ok, entiendo tu problema a la perfección y te sugiero lo siguiente:

1.- No coloques un parámetro en la sentencia.

2.- Arma la sentencia de tipo string en runtime utilizando los métodos clear y add de los componentes TQUERY.SQL algo así,

TQuery1.SQL.Clear;

TQuery1.SQL.Add('Select * from catmun where IdEdo='+DBLookupComboxBox.KeyValue;

3.- Utiliza una variable con la que controles el momento del CreateForm, para que la primera vez siempre se ejecute una sentencia sin valor para el IdEdo y las posteriores ya se concatene el valor del DBLookupComboBox seleccionado por el usuario.

4.- Otra forma sería que no abras hagas el open del DBLookupComboBox que esta ligado a municipios mientras no se seleccione un estado, o en su defecto, llenado siempre la primera vez con los municipios correspondientes al Estado que aparece por default establecido cuando creas tu forma.

Cualquier cosa estoy pendiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas