FoxPro/Visual FoxPro - problema con grid

 
Vista:

problema con grid

Publicado por miriam (67 intervenciones) el 30/07/2007 21:14:14
Hola, tengo un problema con un grid, lo que pasa es q tengo los meses del año asi tengo mi codigo en el interactivechange de mi forma:
mes=0
DO CASE
CASE THIS.LISTINDEX = 1 && enero
mes=1
CASE THIS.LISTINDEX = 2 && febrero
mes=2
CASE THIS.LISTINDEX = 3 && enero
mes=3
CASE THIS.LISTINDEX = 4 && febrero
mes=4
CASE THIS.LISTINDEX = 5 && enero
mes=5
CASE THIS.LISTINDEX = 6 && febrero
mes=6
CASE THIS.LISTINDEX = 7 && enero
mes=7
CASE THIS.LISTINDEX = 8 && febrero
mes=8
CASE THIS.LISTINDEX = 9 && enero
mes=9
CASE THIS.LISTINDEX = 10 && febrero
mes=10
CASE THIS.LISTINDEX = 11 && enero
mes=11
CASE THIS.LISTINDEX = 12 && febrero
mes=12
ENDCASE

Pero al momento de darle click a Enero mi primer mes me toma como su fuera febrero eso solo pasa la prikmera vez que corro el programa dandole a otro mes y luego le doy a enero si me lo toma como enero, el problema es cuando pro primera vez le quiero dar el mes en este caso enero.
Gracias

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con grid

Publicado por Martín (9 intervenciones) el 30/07/2007 21:26:46
Miriam:

¿Y por qué no devolver directamente mes = This.ListIndex en lugar de hacer un CASE? Esa es la duda que tengo con tu código. No me explico bien qué es lo que estás tratando de hacer, si aclarases un poco más te podría ayudar.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por MIRIAM (67 intervenciones) el 30/07/2007 21:31:47
Es q lo q quiero hacer que cada mes para mi es un numero pq hago operaciones con esos ejem: 23 de julio de 1981
saco 23 y saco 07 y saco 1981
entonces cuando en el grid le doy clic en enero no me saca el numero 1 q es el q le corresponde a enero me da el no.2 q es el de febrero.
Esta mas claro?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por Martín (9 intervenciones) el 30/07/2007 21:51:36
O sea, asumo que tenés un desplegable que tiene las opciones Enero,Febrero y así sucesivamente. En ese caso me parece que tendrías que jugar con otra cosa (por lo menos yo lo hago de distinto modo).

Declaro los desplegables de 2 columnas. Cuando declaro los valores del desplegable le digo: Enero,1,Febrero,2,Marzo,3 y así sucesivamente. Pero la columna que muestro como resultado es la del texto. Ahora, especificando en las propiedades del desplegable que deseo que la columna de la cual obtenga el valor sea la 2 (TuCombo->Propiedades->Datos->BoundColumn=2) tengo lo que vos estás precisando. Cuando elijas julio, por ejemplo, ese desplegable va a devolver 7.

Si no querés que se vea la columna numérica, simplemente lo podés hacer en la propiedad ColumnWidth de la parte Diseño (o Layout). Suponiendo que 70 fuese la dimensión del primer texto, con simplemente especificar esos 70, o ponerle ColumnWidth 70,0 lográs que esa segunda columna (que es la que tiene el valor que REALMENTE va a devolver tu desplegable) no sea visible para el usuario. Y con eso tampoco te complicás con el ListIndex, que evidentemente se inicializa de modo erróneo, se me ocurre que porque quizás al principio (en su inicialización) te está poniendo algún elemento en blanco al tope de la lista, que tome el número 1.

Espero que te sirva.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por miriam (67 intervenciones) el 30/07/2007 22:16:14
ya hice lo que me dijiste pero se ven las dos columnas las del mes y la del nuemro ya le puse en ColumnWidth 15,0 y me salen las dos asi:
enero
1
febrero
2
......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por Martín (9 intervenciones) el 30/07/2007 22:32:26
Dejame ver un poquitito (yo eso lo había logrado) y te cuento.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por Martín (9 intervenciones) el 30/07/2007 22:40:20
Miriam:

Estás teniendo un error ahí.

Fijate en el Layout (o Diseño, no recuerdo el nombre en español). Tu combo está teniendo una sola columna. Tenés que tener las propiedades de esta manera.

ColumnCount = 2
ColumnLines = .F. (False)
ColumnWidth = 15,0

Y en Data, que la BoundColumn sea la 2. Y eso te va a devolver el mes en número mientras que en pantalla el combo te lo muestra en letras. Eso sí, el número te lo devuelve como tipo Character, si querés operarlo como tipo numérico, con solo poner:

mes = VAL(This.Value)

listo, ahí lo tenés en numérico. Lo acabo de probar y funciona. Espero que te sirva.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por miriam (67 intervenciones) el 30/07/2007 23:01:15
ya hice lo q me dijiste pero pq me aparece en el combo muy chiquito solo se ven como 2 letras y en el formulario si lo alargo, otra cosa en este cso como sabre q mes indicaron ya elimine el codigo del interactivechange como le hago para saber q mes elijieron.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por Martín (19 intervenciones) el 30/07/2007 23:12:08
A ver, el tema de que te aparezcan solamente dos letras está en la dimensión que le establecés en el ColumnWidth. O sea, si te aparece muy chico, yo normalmente para la dimensión cuento 10 por letra, o sea, siendo "Septiembre" la palabra más larga que vas a tener en los meses, yo le establecería:

ColumnWidth = 100,0 en lugar de ColumnWidth 15,0

Ahí te debería aparecer todo, si no, jugás con el primer valor del ColumnWidth (o sea, la primer columna de tu desplegable, que en este caso almacena el mes en letras).

Con respecto a saber qué mes eligieron, cuando efectúan una selección en ese combo, cambia la propiedad Value del combo. O sea, las acciones que vos tengas que efectuar las podés determinar en el InteractiveChange (es la manera más pulcra).

Esto te lo pongo a modo de ejemplo:

TuDesplegable.InteractiveChange

lcNumeroMes = This.Value

DO CASE
CASE lcNumeroMes = "1"
= MESSAGEBOX('Usted eligió ENERO')
CASE lcNumeroMes = "2"
= MESSAGEBOX('Usted eligió FEBRERO')
CASE lcNumeroMes = "3"
= MESSAGEBOX('Usted eligió MARZO')
CASE lcNumeroMes = "4"
= MESSAGEBOX('Usted eligió ABRIL')
...
ENDCASE

Si en cambio, querés el número de mes en forma numérica:

TuDesplegable.InteractiveChange

lnNumeroMes = VAL(This.Value)

DO CASE
CASE lcNumeroMes = 1
= MESSAGEBOX('Usted eligió ENERO')
CASE lcNumeroMes = 2
= MESSAGEBOX('Usted eligió FEBRERO')
CASE lcNumeroMes = 3
= MESSAGEBOX('Usted eligió MARZO')
CASE lcNumeroMes = 4
= MESSAGEBOX('Usted eligió ABRIL')
...
ENDCASE

Como sea, la elección que efectuó el operador en el desplegable te queda en la propiedad "Value" de tu desplegable.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por miriam (67 intervenciones) el 30/07/2007 23:27:56
hola yo de nuevo, ya hice lo q me dijiste y si me sale bien en el combo solo que paso lo mismo con el primer mes Enero como q no me lo toma en cuenta si le doy otro q no sea enero si me da el resultado, solo pasa cuando le doy clic por primera vez enero si le doy a otro si lo hace bien, que sera?

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por Martín (19 intervenciones) el 30/07/2007 23:36:48
Ahora creo que te entiendo. O sea, tu problema está en si NO CAMBIAN EL COMBO sino lo dejan como al principio.

Probá poniendo la propiedad "Value" del combo en "1" (incluyendo las comillas, ya que el valor que devuelve la lista es tipo caracter). Dicha propiedad está en la solapa "Data" del desplegable. Con eso, tu desplegable debería de iniciarse correctamente en Enero, y a su vez, si no es modificado, el valor va a ser "1" (el correspondiente al mes de Enero).

Salvo que tengas algo en el ControlSource del combo (en cuyo caso, si el campo de la tabla viene en blanco habría que ver qué pasa), debería ser tu solución.

Me tengo que ir ahora, a atender un cliente, pero después me fijo en este post, a ver si tuviste algún problema más.

Slds.
Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con grid

Publicado por miriam (67 intervenciones) el 31/07/2007 15:57:37
Hola si lo acabo de checar y si era eso ya me quedo bien el combo, y lo que pasa es que en el value le habia puesto solo 1 me taltaban las comillas.
Pero ya quedo muchas gracias por todo.

Que estes muy bien , saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:problema con grid

Publicado por Ernesto Hernandez (4623 intervenciones) el 30/07/2007 22:00:58
puedes usar una funcion como esta para llenar tu grid

FUNCTION lFecha(tcFecha)
LOCAL aDias(7), aMeses(12)
aDias[1]="Domingo "
aDias[2]="Lunes "
aDias[3]="Martes "
aDias[4]="Miércoles "
aDias[5]="Jueves "
aDias[6]="Viernes "
aDias[7]="Sábado "
aMeses[1]="Enero"
aMeses[2]="Febrero"
aMeses[3]="Marzo"
aMeses[4]="Abril"
aMeses[5]="Mayo"
aMeses[6]="Junio"
aMeses[7]="Julio"
aMeses[8]="Agosto"
aMeses[9]="Septiembre"
aMeses[10]="Octubre"
aMeses[11]="Noviembre"
aMeses[12]="Diciembre"
RETURN TRANSFORM(DAY(tcFecha),"@L 99")+" de " +aMeses(MONTH(tcFecha)) + " de " + TRANSFORM(YEAR(tcFecha),"@L 9999")
ENDFUNC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:problema con grid

Publicado por neo (1604 intervenciones) el 31/07/2007 00:56:11
Despues de que sufrió mucho nuestra compañera Miriam, A que compañero Ernesto, asi de facil no!!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar