Mostrar registros secundarios de una relacion utilizando combos

07/01/2004 - 23:15 por Manuel Copello | Informe spam
Hola a todos, necesito mostrar los registros secundarios de una relacion
utilizando combos.
Utilizando cuadriculas (grids) lo hace bien, pero con combos no me funciona.
Por ejemplo en el combo primario los países, en los secundarios provincias y
ciudades.
Alguna sugerencia.
Gracias

Preguntas similare

Leer las respuestas

#1 Ana María Bisbé York
08/01/2004 - 11:01 | Informe spam
Hola Manuel:

1.- En el Init de tu formulario puedes crear un cursor para mostrar en cada
ComboBox, por ejemplo:

SELECT descripcio, paisid FROM ('paises') ORDER BY descripcio INTO CURSOR
curpais

SELECT provincia, provinciid FROM ('provinci') ORDER BY provincia INTO
CURSOR curprovincia

SELECT LOCAL AS municipio, municipiid FROM ('municipi') ORDER BY municipio
INTO CURSOR curMunicipio

2.- Asocias el RowSource de cada ComboBox al cursor correspondiente

3.- En el InteractiveChange del cmbPais puedes tener algo como esto.

* Desenlazo
THISFORM.cmbProvincia.ROWSOURCE = ''

* Re-creo el cursor
SELECT provincia, provinciid FROM ('provinci');
WHERE provinci.paisid = THIS.VALUE ORDER BY provincia INTO CURSOR
curProvincia

* Restablezco el RowSource
THISFORM.cmbProvincia.ROWSOURCE = 'curProvincia.provincia,provinciid'

* Se hace el mismo proceso para los municipios

* Desenlazo
* Re-creo el cursor
* Restablezco el RowSource

En el InteractiveChange del cmbProvincia es similar, teniendo en cuenta sólo
los municipios
* Puedes asignar en variables locales los valores de los ComboBox cmbPais y
cmbProvincia
lcProvi = THISFORM.cmbProvincia.VALUE
lcPais = THISFORM.cmbPais.VALUE
* Desenlazo
* Re-creo el cursor
SELECT municipio, municipiid FROM ('municipi') ;
WHERE municipi.provinciid = lcProvi AND municipi.paisid = lcPais;
ORDER BY municipio INTO CURSOR curMunicipio
.* Restablezco el RowSource

Es una forma de hacerlo, lo puedes trabajar con vistas, etc. En este código
falta el control de errores.

Saludos,

Ana

"Manuel Copello" escribió en el mensaje
news:
Hola a todos, necesito mostrar los registros secundarios de una relacion
utilizando combos.
Utilizando cuadriculas (grids) lo hace bien, pero con combos no me


funciona.
Por ejemplo en el combo primario los países, en los secundarios provincias


y
ciudades.
Alguna sugerencia.
Gracias


Respuesta Responder a este mensaje
#2 Manuel Copello
08/01/2004 - 12:28 | Informe spam
Muchas gracias Ana por tu pronta respuesta.
Yo lo había hecho con filtros pero me pareció poco elegante.
Enseguida pruebo tu codigo, por lo que veo tampoco utilizas relaciones, solo
WHERE en el SELECT.
Lo voy a probar y despues te comento, espero que no sea muy lento.

Saludos y felicitaciones por tu colaboración en la traducción del VFP8

Manuel Copello


"Ana María Bisbé York" escribió en el mensaje
news:
Hola Manuel:

1.- En el Init de tu formulario puedes crear un cursor para mostrar en


cada
ComboBox, por ejemplo:

SELECT descripcio, paisid FROM ('paises') ORDER BY descripcio INTO CURSOR
curpais

SELECT provincia, provinciid FROM ('provinci') ORDER BY provincia INTO
CURSOR curprovincia

SELECT LOCAL AS municipio, municipiid FROM ('municipi') ORDER BY municipio
INTO CURSOR curMunicipio

2.- Asocias el RowSource de cada ComboBox al cursor correspondiente

3.- En el InteractiveChange del cmbPais puedes tener algo como esto.

* Desenlazo
THISFORM.cmbProvincia.ROWSOURCE = ''

* Re-creo el cursor
SELECT provincia, provinciid FROM ('provinci');
WHERE provinci.paisid = THIS.VALUE ORDER BY provincia INTO CURSOR
curProvincia

* Restablezco el RowSource
THISFORM.cmbProvincia.ROWSOURCE = 'curProvincia.provincia,provinciid'

* Se hace el mismo proceso para los municipios

* Desenlazo
* Re-creo el cursor
* Restablezco el RowSource

En el InteractiveChange del cmbProvincia es similar, teniendo en cuenta


sólo
los municipios
* Puedes asignar en variables locales los valores de los ComboBox cmbPais


y
cmbProvincia
lcProvi = THISFORM.cmbProvincia.VALUE
lcPais = THISFORM.cmbPais.VALUE
* Desenlazo
* Re-creo el cursor
SELECT municipio, municipiid FROM ('municipi') ;
WHERE municipi.provinciid = lcProvi AND municipi.paisid = lcPais;
ORDER BY municipio INTO CURSOR curMunicipio
.* Restablezco el RowSource

Es una forma de hacerlo, lo puedes trabajar con vistas, etc. En este


código
falta el control de errores.

Saludos,

Ana

"Manuel Copello" escribió en el mensaje
news:
> Hola a todos, necesito mostrar los registros secundarios de una relacion
> utilizando combos.
> Utilizando cuadriculas (grids) lo hace bien, pero con combos no me
funciona.
> Por ejemplo en el combo primario los países, en los secundarios


provincias
y
> ciudades.
> Alguna sugerencia.
> Gracias
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida