Problemas con ListIndex en un ComboBox
Publicado por Fabian (3 intervenciones) el 07/07/2008 23:56:02
Hola gente, estoy luchando desde hace bastantes horas con esto y no
encuentro como solucionarlo. Es en Visual Basec 6.
Tengo un Form (abm de agenda de clientes) con cboProvincia y un cboLocalidad
de dicho cliente.
Al efectuar un alta, el cboLocalidad me muestra de forma correcta las
localidades de la provincia seleccionada en cboProvincia.
Ahora en una modificacion, yo leo el recordset con el registro del cliente y
asigno al cboProvincia la provincia correspondiente.Es decir, cargo la
provincia asi:
If IsNull(rsAgenda.Fields("Provincia")) Then
cboProvincia.Text = "" ' Si no tenia cargada provincia
el registro del cliente
Else
cboProvincia.Text = rsAgenda.Fields("Provincia") ' Si
tenia algo cargado
End If
Luego, si el registro tiene una localidad ya cargada la asigno a el .Text
del cboLocalidad de la misma forma y funciona ok.
PERO, (siempre hay uno, no ?) suponiendo que la localidad de ese reg. de
dicho cliente este en blanco, yo quiero que me despliegue las localidades
correspondientes a la provincia que le asigne a cboProvincia.Text.
Lo resolví asi: (o al menos intenté):
If cboProvincia.ListIndex <> -1 Then
rsLocalidad.Filter = "IDPROVINCIA=" &
cboDPProvincia.ItemData(cboDPProvincia.ListIndex)
Else
rsLocalidad.Filter = "IDPROVINCIA=" & -1 ' Fuerzo a que el
filtro vacíe el recordset pues no selecciono provincia
End If
Pero el tema es que por mas que yo le asigné: cboProvincia.Text =
rsAgenda.Fields("Provincia")
el cboProvincia.ListIndex me queda en -1 (es decir como si NO hubiera
seleccionado dicho elemento que asigné) Sé que en realidad no lo selecciona,
lo asigno pero quiero que esa asignacion luego funcione como si realmente el
usuario la hubiera seleccionado entonces el cboProvincia.ListIndex será
<> -1
PREGUNTA 1 ) ¿alguna pista de como resolverlo ?
PREGUNTA 2) Suponiendo que deje Provincia en Blanco, en localidades quiero
que tembien muestre el combo sin ninguna localidad, recien las muestro (las
que correspondan cuando seleccione la provincia). Ahora bien, si queda la
prov en blanco me tira error si uso: rsLocalidad.Filter =
"IDPROVINCIA=" & cboDPProvincia.ItemData(cboDPProvincia.ListIndex)
Es decir tuve que inventar la parte del Else del if para el caso en que no
seleccione la provincia. Y la verdad es que me quedó bsatante feo, pero, no
encontre en el manual como hacer para que el filtro deje el recordser en
blanco (no me refiero a borrarlo) sinó que me refiero a lo que hice forzando
en: rsLocalidad.Filter = "IDPROVINCIA=" & -1 siendo que no existirá
nunca un IDPROVINCIA = -1 Yo esto ultimo lo resolví asi pero pienso que debe
haber algo mas prolijo no ? O alguna forma Lógica de resolver el problema,
alguna idea ?
Es decir el ListIndex me está volviendo loco en ambas proguntas..
Bueno si me pueden ayudar con estas 2 consultas desde ya quedo muy
agradecido a Uds.
Fabian
encuentro como solucionarlo. Es en Visual Basec 6.
Tengo un Form (abm de agenda de clientes) con cboProvincia y un cboLocalidad
de dicho cliente.
Al efectuar un alta, el cboLocalidad me muestra de forma correcta las
localidades de la provincia seleccionada en cboProvincia.
Ahora en una modificacion, yo leo el recordset con el registro del cliente y
asigno al cboProvincia la provincia correspondiente.Es decir, cargo la
provincia asi:
If IsNull(rsAgenda.Fields("Provincia")) Then
cboProvincia.Text = "" ' Si no tenia cargada provincia
el registro del cliente
Else
cboProvincia.Text = rsAgenda.Fields("Provincia") ' Si
tenia algo cargado
End If
Luego, si el registro tiene una localidad ya cargada la asigno a el .Text
del cboLocalidad de la misma forma y funciona ok.
PERO, (siempre hay uno, no ?) suponiendo que la localidad de ese reg. de
dicho cliente este en blanco, yo quiero que me despliegue las localidades
correspondientes a la provincia que le asigne a cboProvincia.Text.
Lo resolví asi: (o al menos intenté):
If cboProvincia.ListIndex <> -1 Then
rsLocalidad.Filter = "IDPROVINCIA=" &
cboDPProvincia.ItemData(cboDPProvincia.ListIndex)
Else
rsLocalidad.Filter = "IDPROVINCIA=" & -1 ' Fuerzo a que el
filtro vacíe el recordset pues no selecciono provincia
End If
Pero el tema es que por mas que yo le asigné: cboProvincia.Text =
rsAgenda.Fields("Provincia")
el cboProvincia.ListIndex me queda en -1 (es decir como si NO hubiera
seleccionado dicho elemento que asigné) Sé que en realidad no lo selecciona,
lo asigno pero quiero que esa asignacion luego funcione como si realmente el
usuario la hubiera seleccionado entonces el cboProvincia.ListIndex será
<> -1
PREGUNTA 1 ) ¿alguna pista de como resolverlo ?
PREGUNTA 2) Suponiendo que deje Provincia en Blanco, en localidades quiero
que tembien muestre el combo sin ninguna localidad, recien las muestro (las
que correspondan cuando seleccione la provincia). Ahora bien, si queda la
prov en blanco me tira error si uso: rsLocalidad.Filter =
"IDPROVINCIA=" & cboDPProvincia.ItemData(cboDPProvincia.ListIndex)
Es decir tuve que inventar la parte del Else del if para el caso en que no
seleccione la provincia. Y la verdad es que me quedó bsatante feo, pero, no
encontre en el manual como hacer para que el filtro deje el recordser en
blanco (no me refiero a borrarlo) sinó que me refiero a lo que hice forzando
en: rsLocalidad.Filter = "IDPROVINCIA=" & -1 siendo que no existirá
nunca un IDPROVINCIA = -1 Yo esto ultimo lo resolví asi pero pienso que debe
haber algo mas prolijo no ? O alguna forma Lógica de resolver el problema,
alguna idea ?
Es decir el ListIndex me está volviendo loco en ambas proguntas..
Bueno si me pueden ayudar con estas 2 consultas desde ya quedo muy
agradecido a Uds.
Fabian
Valora esta pregunta


0