Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   selec un dato del DBLookupComboBox y guardar muchos en bd (https://www.clubdelphi.com/foros/showthread.php?t=83896)

exequielmatias1 12-08-2013 22:06:48

selec un dato del DBLookupComboBox y guardar muchos en bd
 
Hola a todos! mi duda del dia de hoy es la siguiente:
tengo 3 tablas, una Provincia (con todas las provincias del pais) y otra Ciudad (con todas las ciudades del pais). Tengo toda la tabla Provincia cargada en el DBLookupComboBox, y quiero seleccionar por ejemplo una provincia Cordoba, y al presionar un btnGuardar se carguen todas las ciudades en una tabla nueva generando registros nuevos para cada ciudad.:confused:

ecfisa 12-08-2013 22:25:27

Hola exequielmatias1.

Trata de explicar con todo detalle el problema tal como aconseja el punto 9 de la guía de estilo.
  • ¿ Con que RDBMS estas trabajando ?
  • ¿ Con que componentes ?
  • ¿ Cuales son los campos de las tablas provincias y ciudades ?
  • ¿ Cada ciudad tiene un campo que la relaciona a su provincia ?
  • ¿ La tabla nueva ya está creada ?

Saludos :)

exequielmatias1 13-08-2013 04:09:17

Pordon por no ser claro..
Tengo una base de datos en Access llamada "Datos" conectada a un ADOQuery, Esta base contiene una tabla llamada Provincias con los campo id y pronvincia ya cargada, y una tabla Ciudades con los campos id y ciudades, con todas las ciudades del pais ya cargadas.
Lo que quiero lograr es que desde un DBLookupcombobox que estan cargadas todas las provincias, seleccione una, y en una tabla Persona ya creada, con sus campos, genere registros con todas las ciudades en el campo ciudad (de la provincia elegida).

Ej: elijo en el combobox una provincia "Cordoba" y al presionar Guardar, se carguen todas las ciudades de la provincia "cordoba" en el campo ciudad de la tabla persona.
Pregunto también si debería mejorar esta base de datos, de alguna manera para cumplir con lo que me piden.
Espero haber sido mas claro sino mejorare mi explicación.

ecfisa 13-08-2013 06:21:08

Hola exequielmatias1.

Si en la tabla CIUDADES, tenes creado un campo PROVINCIA_ID que haga referencia al campo ID de la provincia a la que pertenece (como creo que sería lógico). Y en el TDBLookupComboBox de provincias, tenes configuarada la propiedad KeyValue para que te devuelva el valor del campo ID de la tabla PROVINCIAS, podes hacer algo similar a:
Código Delphi [-]
procedure TTuForm.btnGuardarClick(Sender: TObject);
begin  
  with qyNueva do
  begin
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO TABLA_NUEVA(ID, NOMBRE_CIUDAD, PROVINCIA_ID)');
    SQL.Add('SELECT T2.ID, T2.NOMBRE_CIUDAD, T2.PROVINCIA_ID');
    SQL.Add('FROM TABLA_CIUDADES T2');
    SQL.Add('WHERE T2.PROVINCIA_ID = ' + QuotedStr(QuotedStr(DBLookupProvincias.KeyValue)));
    ExecSQL;
  end;
end;
Tenes que reemplazar los nombres de las tablas, campos y componentes por los que correspondan a tu caso.

Saludos :)

jpgonzalez 13-08-2013 06:21:41

Buenas ezequiel...
Algunas preguntas para hacerte...

1) Para que queres guardar todas las ciudades de la provincia Cordoba en una persona?
2) No creo conveniente (y de hecho sería muy engorroso) guardar todas las ciudades de una provincia en un solo campo ciudad de una persona... Que información guardaría la ciudad??... el lugar donde vive???... siendo asi, volveria a preguntar lo que puse en 1).

Si lo que queres es guardar la provincia y ciudad donde vive una persona, deberías:

1- Tener un conbobox sonde listes las provincias, supongamos que se llame CBoxProvincias
QUERY PROVINCIAS EJEMPLO --> select * from provincias

2- Tener otro combo que cargue las ciudades dependiendo la provincia seleccionada en CBoxProvincias
QUERY CIUDADES EJEMPLO--> select * from ciudades
where idProvincia = :idProvincia
:idProvincia sería el parametro que le mandarias a esta ultima query, cuyo valor lo sacarias del CBoxProvincias.KeyValue... a esta query la
podrias abrir en el closeup del combo, o en el onexit

Luego solo tendrias que guardar la provincia y la ciudad elegida en cada combo, y ahi tendrias la provincia y ciudad donde vive la persona

Abrazo!

exequielmatias1 14-08-2013 05:10:33

Cita:

Si lo que queres es guardar la provincia y ciudad donde vive una persona
* Hola JP en realidad es un ejemplo, parecido a lo que tengo que tengo que hacer, ya que lo real es mas complicado explicar.
* mas halla de mi ejemplo, lo que quiero hacer seleccionar un dato de un combobox y copiar todos los registros de ese dato en una tabla.
por ejemplo selecciono una provincia del combobox la cual esta cargada en una tabla, y que se generen registros con las ciudades de esa provincia, en un campo de otra tabla.
* Solo tengo una base con una tabla PROVINCIAS campos: id, provincia y una tabla CIUDADES campos: id, ciudad. No tengo ninguna relacion entre ellas y tampoco tengo discriminado que ciudad pertenece a cada provincia. Lo cual tambien es parte de mi duda.. como relaciono estas dos tablas? (por ahora estoy haciendo lo que me aconsejo ecfisa

ecfisa 14-08-2013 06:01:49

Cita:

Empezado por exequielmatias1 (Mensaje 465556)
No tengo ninguna relacion entre ellas y tampoco tengo discriminado que ciudad pertenece a cada provincia.

Hola exequielmatias1.

Si los registros de la tabla CIUDADES no tienen un campo que identifique a que provincia pertenece, no veo la forma de seleccionar aquellas ciudades que corresponden a determinada provincia.

Cita:

Lo cual tambien es parte de mi duda.. como relaciono estas dos tablas?
Lo único que tendrías que agregar es un campo mas a la tabla CIUDADES para que almacene el ID de la provincia a que pertenece, por ejemplo:

Tabla CIUDADES:
Código:

ID    | NOMBRE_CIUDAD    | PROVINCIA_ID
------+-------------------+-------------
...  | ................  | ... 
45    | Villa Carlos Paz  | 5
47    | Federación        | 12
51    | Coronel Vidal    | 3
60    | Gonzalez Chavez  | 3
...  | ................  | ...

Tabla PROVINCIAS:
Código:

ID    | NOMBRE_PROVINCIA 
------+-------------------
...  | ...
3    | Buenos Aires
12    | Entre Rios 
5    | Córdoba
...  | ...

Entonces tomando en cuenta el campo de referencia PROVINCIA_ID, ahora si podemos decir que la relación está establecida ya que:
Código:

Villa Carlos Paz  -> Córdoba      (5)
Federación        -> Entre Rios  (12)
Coronel Vidal    -> Buenos Aires (3)
Gonzalez Chavez  -> Buenos Aires (3)

Y por lo tanto solo necesitamos seleccionar de la tabla CIUDADES aquellas cuyo campo PROVINCIA_ID sea igual al ID de provincia deseado. De forma tál al código que te puse en el mensaje anterior.

Saludos. :)


La franja horaria es GMT +2. Ahora son las 07:22:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi