Sv Community El Salvador

Soporte y Tecnología => Programación => FOX => Mensaje iniciado por: gilanrodas en mayo 24, 2008, 04:47:02 pm

Título: Problema con código en Visual Fox. Ayuda please.
Publicado por: gilanrodas en mayo 24, 2008, 04:47:02 pm
Tengo una tabla en visual fox. El tipo de datos es entero pero necesito alinearlos a la izquierda. Bueno, el problema es el siguiente: Tengo el siguiente código:

                nAnswer=MESSAGEBOX('¿Confirma que desea guardar los datos?', 4+48,;
                'Confirmación')
      IF nAnswer=6 THEN
         SELECT celula
         GO TOP
         IF EOF()
            var1=0
         ELSE
            CREATE TABLE Virtual(campcorr INT(4))
            SELECT correlativo FROM celula WHERE cod_coord = ;
                                SUBSTR(thisform.combcoord10.Value,1,3) INTO TABLE Virtual
            SELECT Virtual
            SCAN
               var1=MAX(Virtual.campcorr, campcorr)
            ENDSCAN
            var1=var1+1
            DROP TABLE Virtual
         ENDIF
         DO case
            CASE var1>=0 AND var1<10
               strcorr="000"+STR(var1)
               MESSAGEBOX(strcorr)
            CASE var1>=10 AND var1<100
               strcorr="00"+STR(var1)
            CASE var1>=100 AND var1<1000
               strcorr="0"+STR(var1)
            CASE var1>=1000 AND var1<10000
               strcorr=STR(var1)
            OTHERWISE
               MESSAGEBOX("Número de célula no válido para este
                                        Coordinador. Comuníquese con el Administrador del
                                        Sistema.",0+16,"Error en correlativo")
         ENDCASE

El mensaje en rojo me muestra el valor de la variable que, según este código es "000    0", pero quiero que me salga "0000" y no sé cómo hacerlo.
Agradecería mucho que me digan cómo se hace si es posible.
Título: Re: Problema con código en Visual Fox. Ayuda please.
Publicado por: Ronnie en mayo 25, 2008, 12:22:12 pm
Esta parte
strcorr="000"+STR(var1)

cambiala por
strcorr="000"+TRIM(STR(var1))
Título: Re: Problema con código en Visual Fox. Ayuda please.
Publicado por: ruiz en mayo 26, 2008, 08:25:07 am
Esta parte
strcorr="000"+STR(var1)

cambiala por
strcorr="000"+TRIM(STR(var1))



tmbien lo podes sustituir por
strcorr="000"+alltrim(STR(var1))


y listo...
Título: Re: Problema con código en Visual Fox. Ayuda please.
Publicado por: gilanrodas en mayo 26, 2008, 10:47:56 am
Me funcionó a la perfección. Muchas gracias.

Ahora, tengo otro problema. Necesito extraer algunos datos de una tabla a una tabla "virtualt", pero al principio tengo que crearla para poder asignarle un tipo de datos y su longitud, pero cuando intento traerlos de la otra tabla a través de "select <campo> from <tabla> where <condición> into table virtualt" me intenta crear otra tabla y me da un error. No uso de una vez el select porque no puedo asignarle tipo de dato ni longitud. ¿Qué hago para evitar que me intente crear otravés la tabla?
Observen el siguiente código:

CREATE TABLE Virtualt (campcorr INT(4))
SELECT correlativo FROM celula WHERE;
cod_coord=SUBSTR(thisform.combcoord10.Value,1,3) into table Virtualt
SELECT Virtualt
SCAN
   var1=MAX(Virtualt.campcorr, campcorr)
ENDSCAN
var1=var1+1
DROP TABLE Virtualt
Título: Re: Problema con código en Visual Fox. Ayuda please.
Publicado por: ruiz en mayo 26, 2008, 10:58:13 am
bueno en ves de utilidar el select into taabla puedes utilizar el


aun que no es necesario que crees antes la tabla basta con el select el campo tomara el tipo de dato del campo que te regresa el select:

SELECT correlativo FROM celula WHERE;
cod_coord=SUBSTR(thisform.combcoord10.Value,1,3) into table Virtualt



o puedes usar enves de una tabla un cursor

SELECT correlativo FROM celula WHERE;
cod_coord=SUBSTR(thisform.combcoord10.Value,1,3) into cursor Virtualt


pero si insistes en crear primero la tabal entonces puedes utilizar el insert tinto
asi:
insert into Virtualt ;
SELECT correlativo FROM celula WHERE;
cod_coord=SUBSTR(thisform.combcoord10.Value,1,3)