Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Conectar 2 DBLookupcomboboxs a un solo datasource (https://www.clubdelphi.com/foros/showthread.php?t=87419)

giulichajari 01-01-2015 11:18:28

Conectar 2 DBLookupcomboboxs a un solo datasource
 
Hola amigos: tengo un form con el domicilio personal del cliente y el domicilio de despacho, en 2 groupboxs, el caso es que los 2 tienen un dblookup de ciudades porque puede ser distinta obviamente, probe crear 2 datasource con la misma tabla y no se puede, lei en internet que hay que usar livebindings pero no se como.

Me pueden ayudar?

Casimiro Notevi 01-01-2015 11:24:06

No se entiende, ¿cual es el problema?

giulichajari 01-01-2015 13:41:15

Me explico mejor, al dar de alta un cliente se puede asignar su domicilio personal y su domicilio de despacho, donde quiere recibir su producto. Cada domicilio tiene la calle y numero, y la localidad, porque puede ser distinta. Para la localidad uso un dblookupcomobobox con la lista de localidades que hay en la bd, pero tengo 2 combos: uno para la localidad del domicilio de despacho, y otro para la localidad del domicilio personal, porque pueden estar en distintas ciudades.

El caso es que ambos dblookup toman datos de la misma tabla, pero no he podido asociarlos al mismo datasource que contiene como dataset la tabla de localidades.

Muchas gracias por responder.

jafera 01-01-2015 20:52:03

Y porque no usas dos consultas sql que apunten a la misma tabla (datasource).
Una sql se llama cidades_cliente y otra ciudades_emvio por ejemplo.
Si lo que pasa es que se puedan dar de alta ciudades que no esxiten pues la insertas en la tabla principal, al hacer post del datasource pues abres y cierras las consultas sql y ya tendras las ciudades disponibles en ambos combobox.
En casos así yo suelo poner un menu contextual en el combobox que se llame añadir ciudad y que solo sea visible si la tabla principal del cliente está en alta o edición.

Saludos

Josep

giulichajari 01-01-2015 22:48:40

Cita:

Empezado por jafera (Mensaje 487229)
Y porque no usas dos consultas sql que apunten a la misma tabla (datasource).
Una sql se llama cidades_cliente y otra ciudades_emvio por ejemplo.
Si lo que pasa es que se puedan dar de alta ciudades que no esxiten pues la insertas en la tabla principal, al hacer post del datasource pues abres y cierras las consultas sql y ya tendras las ciudades disponibles en ambos combobox.
En casos así yo suelo poner un menu contextual en el combobox que se llame añadir ciudad y que solo sea visible si la tabla principal del cliente está en alta o edición.

Saludos

Josep

Es que no es un alta de ciudades, necesito la lista de ciudades para dar de alta 2 ubicaciones distintas, pero las ciudades ya las tengo, tngo un Ztable con las ciudades y un datasource asociado.

ecfisa 01-01-2015 23:46:54

Hola giulichajari.

La verdad es que yo tampoco entiendo cuál es la dificultad. Supongamos que dos tablas son:

CLIENTES:
Código:

...
CIUDAD_COMERCIAL
CIUDAD_PERSONAL
...

CIUDADES:
Código:

...
NOMBRE
...

Las configuraciones de los Combos deberían ser:
Código Delphi [-]
begin
  // domicilio comercial
  with DBLookupComboBox1 do
  begin
    ListSource:= dsCiudades; // DataSource -> tabla CIUDADES
    ListField := 'NOMBRE';   // nombre ciudad
    KeyField  := 'NOMBRE';   // nombre ciudad
    DataSource:= dsClientes; // DataSource -> tabla CLIENTES
    DataField := 'CIUDAD_COMERCIAL';  // ciudad del comercio
  end;

  // domicilio personal
  with DBLookupComboBox2 do
  begin
    ListSource:= dsCiudades; // DataSource -> tabla CIUDADES
    ListField := 'NOMBRE';   // nombre ciudad
    KeyField  := 'NOMBRE';   // nombre ciudad
    DataSource:= dsClientes; // DataSource -> tabla CLIENTES
    DataField := 'CIUDAD_PERSONAL';   // ciudad de vivienda
  end;
end;
O tal vez no esté entendiendo el planteo...


Saludos :)

giulichajari 01-01-2015 23:52:13

dsClientes tiene como DataSet ciudades? Y ambos DBLookUpComboBox tiene en ListSource dsClientes? Si es asi : lo has probado, porque a mi no me permite hacer esto, cuando lo ejecuto y selecciono en uno se borra el otro.

Y yo tengo una tabla ubicaciones con el idlocalidad y el domicilio, y una tabla con el idcliente y el idubicacion.

ecfisa 02-01-2015 07:19:57

1 Archivos Adjunto(s)
Hola giulichajari.

Si, lo he probado y funciona si las tablas tienen la estructura que te mencioné y los combos están configurados de ese modo.

Todas estas impresiciones se presentan por que nos das poca información como para poder brindarte una solución adecuada al problema.
Si queres una respuesta mas concreta vas a tener que poner las definiciones de las dos tablas que intervienen y los valores que deseas recibir en la tabla CLIENTES. Ya que si por ejemplo, la propiedad KeyField del TDBLookupComboBox fuera un identificador numérico, habría que usar otro código.

Te hice un demo basado en BDE que correrá en cualquier versión de Delphi y de ese modo no tendrás problema de revisar su funcionamiento. Crea una carpeta y descomprime el adjunto allí; ya contiene las dos tablas de prueba.

Saludos. :)

giulichajari 18-01-2015 14:49:57

Cita:

Empezado por ecfisa (Mensaje 487241)
Hola giulichajari.

Si, lo he probado y funciona si las tablas tienen la estructura que te mencioné y los combos están configurados de ese modo.

Todas estas impresiciones se presentan por que nos das poca información como para poder brindarte una solución adecuada al problema.
Si queres una respuesta mas concreta vas a tener que poner las definiciones de las dos tablas que intervienen y los valores que deseas recibir en la tabla CLIENTES. Ya que si por ejemplo, la propiedad KeyField del TDBLookupComboBox fuera un identificador numérico, habría que usar otro código.

Te hice un demo basado en BDE que correrá en cualquier versión de Delphi y de ese modo no tendrás problema de revisar su funcionamiento. Crea una carpeta y descomprime el adjunto allí; ya contiene las dos tablas de prueba.

Saludos. :)

El problema es que no tengo 2 campos de ciudad en la tabla clientes, porque debo guardar el idciudad. Estoy insertando un cliente, y en upersona (ubicaciones de persona) quiero insertar el idcliente y el idciudad de la ubicacion, obviamente son 2 registros en upersona por cada cliente insertado.

Pero el caso es que al seleccionar una ciudad en un combo se vacia el otro


La franja horaria es GMT +2. Ahora son las 13:34:45.

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