PDA

Ver la Versión Completa : Urgente: problema con Dblookupcombo filtrado y Dbnavigator


ewoodcl
05-07-2007, 19:22:52
Estimados:

Ya no se me ocurren mas ideas, estoy haciendo una pequeña aplicacion Maestro / detalle incluyendo un dbnavigator, en la cual tengo 2 DblookupCombo en la tabal maestro: Ciudad y Comuna. El problema esta en que el Combo comuna debe estar filtrado por la ciudad seleccionada en el combo ciudad y cuando inicia la aplicacion me trae los datos descambiados en las comunas.
Les doy un ejemplo, para que me entiendan mejor:

Tabla ciudad
idciudad descripcion
01 SANTIAGO
05 AYSEN
27 CHILOE

Tabla Comuna
idciudad idcomuna descripcion
01 01 Providencia
01 02 Las Condes
... ... ....
01 16 Peñalolen
05 01 CALETA CHICA
05 02 CESAR 1
... ... ...
05 46 PUNTA PETISO
27 01 TEGUEL
27 02 QUINCHAO
... ... ...
27 21 TAC SUR
27 22 TARAHUI 2

Obs: los 3 puntos quieren decir que existen mas comunas de dicha ciudad.

Como les comentaba, cuando grabo en la base de datos la ciudad CHILOE (id:27) y comuna TAC SUR, y luego leo el registro, el campo ciudad me lo entrega bien, pero el campo comuna me dice "TEGUEL".

He intentado utilizar filtros: en donde la ADOTable comuna la filtro con el combo ciudad. Tambien intente utilizando query en comunas y filtrar por sql. Y por ultimo he intentado utilizar el combo comuna con detalle del combo ciudad a traves de la propiedad de la tabala: MasterSource.

En fin, alguien que me pueda dar una mano, que ya no se hacer.

A todo esto, los 2 combos estan conectados con el DBnavigator para poder leer, grabar y recorrer la tabla.

De antemano, Gracias.

marcoszorrilla
05-07-2007, 19:36:01
Tienes que poner algo de código, porque creo que como tienes un DbLookUpComboBox el campo destino se graba correctamente pero el otro lo tendrás que grabar tu por código, como al mover el DbLooukUpComboBox, se mueve el puntero por la tabla1, en el evento que creas conveniente para el caso tendrías que hacer por código:

Tabla2Campoxxxx.Value:=Tabla1CampoxxxValue;

Un Saludo.

ewoodcl
05-07-2007, 20:47:01
En realidad no tengo problemas al grabar los datos, de hecho, he revisado la base de datos y estos estan bien grabados. El problema viene al leer (o recorrer) los datos desde el DBNavigator, ya que la segunda tabla tiene por identificadores 2 campos y el DBNavigator solo lee uno de ellos a traves de la propiedad DataField, por eso es que intente utilizar el la tabla ciudad como maestro y la tabla comuna como detalle para obtener los dos campos de identificacion, pero no resulto, ni siquiera da error, simplemente sigue mostrando los datos descambiados. Lo otro que intente fue ingresarle directamente el valor al DBLookupCombo desde el dataset, pero no supe en que evento asignarlo.

Gracias por la pronta respuesta.

Un Saludo

marcoszorrilla
05-07-2007, 22:36:45
Según creo lo resolverías creando un campo de tipo LookUp.

Un Saludo.

ewoodcl
05-07-2007, 23:51:24
Me podrias dar mas informacion sobre el campo lookup?. Aún soy novato, y no habia escuchado sobre dicho tipo de campos.

Gracias.

marcoszorrilla
06-07-2007, 18:02:59
Son algo parecido a los campos calculados, salvo que en vez de calcular, utilizando la clave de otra tabla buscan en esta y traen el registro que casa con el de la tabla en donde hemos creado este tipo de campo.

Si haces doble clic en un Ttable y luego eliges añadir un nuevo campo verás que entre los que puedes añadir se encuentra este tipo de campos, el clásico ejemplo es mostrar en la tabla facturas el nombre del cliente sin incluirlo directamente, se crea un camo lookup por medio del código del cliente de la tabla facturas y el mismo campo de la tabla clientes.....

El resto puedes mirar la ayuda de Delphi al respecto.

Un Saludo.

ewoodcl
06-07-2007, 20:11:51
Muchas gracias por responder, he estado estudiando los campos lookup, y he logrado crear uno el la tabla maestro, especificamente me entrega bien la descripcion de la comuna, pero no he podido vincularla al 2º DBLookupCombo. En este caso lo unico que podria hacer es mostrar los datos en un DBGrid, pero no es lo deseado.

Saludos.