Dificultad con el bufer
Publicado por alexcoinc (450 intervenciones) el 06/02/2008 14:46:35
UN SALUDO PARA TODOS:
Entrando en materia:
Estoy realizando una rutina para grabar un REGISTRO A UNA TABLA Y LUEGO REALIZAR UN ARCHIVO PLANO CON DICHA TABLA;
ACLARO QUE SE GENERAN MEDIANTE ESTA RUTINA 11 ARCHIVOS PLANOS, OBVIAMENTE CON DIFERENTE NOMBRE CADA UNO.
Pero, me sale un error que no he podido dilucidar, el que me dice que :
" la función requiere el modo de almacenamiento en buúfer de filas o tablas "
PENSANDO EN ELLO, INTRODUJE LA FUNCION "CURSORSETPROP"
Pero no me funciona,
Qué estoy haciendo mal o donde no debo,
Gracias por su ayuda.
UNA MUESTRA DE LA RUTINA ES MAS O MENOS LA SIGUIENTE:
------------------------------------------------------------------------------------------
VAR2: Es un vector con la información ya grabada
SELE 62 && Aqui tengo abierta la tabla que graba los registros
* ( Como es una rutina, el Nombre de ella cambia cada vez, para grabar el plano
* respectivo).
APPE BLANK
DO ADICION2 WITH var2
DO CREOPLA
*---------------------------
PROCEDURE ADICION2
PARAMETERS vari
CURSORSETPROP("Buffering",2)
DO WHILE .T.
IF RLOCK()
FOR p=1 TO fcount()
ncamta=field(p)
valvar=vari(p)
REPL &ncamta. with valvar
NEXT p
UNLOCK
EXIT
ENDIF
ENDDO
RETURN
*------------------------------------
PROCEDURE CREOPLA
SELE 62
DELE ALL FOR len(allt(v1))=0
PACK
nCampos = FCOUNT()
GO TOP
hFich = FCREATE(nomsec2)
DO WHILE .NOT. EOF()
cVar= ""
FOR x = 1 TO nCampos
cadena=ALLTRIM(curval(field(x)))
IF VARTYPE(field(x))="N"
cadena=ALLTRIM(STR(curval(field(x))))
ENDIF
IF VARTYPE(field(x))="D"
cadena=ALLTRIM(DTOC(curval(field(x))))
ENDIF
cVar = cVar+cadena+","
ENDFOR
cVar = SUBSTR(cVar,1,LEN(cVar)-1)
cVar = cvar+CHR(13)+CHR(10)
IF incer='N' .and. (gt=10 .or. gt=11)
If VAL(v4)>0
FWRITE(hFich,cVar)
Endif
Else
FWRITE(hFich,cVar)
Endif
SKIP
ENDDO
FCLOSE(hFich)
USE
RETURN
Entrando en materia:
Estoy realizando una rutina para grabar un REGISTRO A UNA TABLA Y LUEGO REALIZAR UN ARCHIVO PLANO CON DICHA TABLA;
ACLARO QUE SE GENERAN MEDIANTE ESTA RUTINA 11 ARCHIVOS PLANOS, OBVIAMENTE CON DIFERENTE NOMBRE CADA UNO.
Pero, me sale un error que no he podido dilucidar, el que me dice que :
" la función requiere el modo de almacenamiento en buúfer de filas o tablas "
PENSANDO EN ELLO, INTRODUJE LA FUNCION "CURSORSETPROP"
Pero no me funciona,
Qué estoy haciendo mal o donde no debo,
Gracias por su ayuda.
UNA MUESTRA DE LA RUTINA ES MAS O MENOS LA SIGUIENTE:
------------------------------------------------------------------------------------------
VAR2: Es un vector con la información ya grabada
SELE 62 && Aqui tengo abierta la tabla que graba los registros
* ( Como es una rutina, el Nombre de ella cambia cada vez, para grabar el plano
* respectivo).
APPE BLANK
DO ADICION2 WITH var2
DO CREOPLA
*---------------------------
PROCEDURE ADICION2
PARAMETERS vari
CURSORSETPROP("Buffering",2)
DO WHILE .T.
IF RLOCK()
FOR p=1 TO fcount()
ncamta=field(p)
valvar=vari(p)
REPL &ncamta. with valvar
NEXT p
UNLOCK
EXIT
ENDIF
ENDDO
RETURN
*------------------------------------
PROCEDURE CREOPLA
SELE 62
DELE ALL FOR len(allt(v1))=0
PACK
nCampos = FCOUNT()
GO TOP
hFich = FCREATE(nomsec2)
DO WHILE .NOT. EOF()
cVar= ""
FOR x = 1 TO nCampos
cadena=ALLTRIM(curval(field(x)))
IF VARTYPE(field(x))="N"
cadena=ALLTRIM(STR(curval(field(x))))
ENDIF
IF VARTYPE(field(x))="D"
cadena=ALLTRIM(DTOC(curval(field(x))))
ENDIF
cVar = cVar+cadena+","
ENDFOR
cVar = SUBSTR(cVar,1,LEN(cVar)-1)
cVar = cvar+CHR(13)+CHR(10)
IF incer='N' .and. (gt=10 .or. gt=11)
If VAL(v4)>0
FWRITE(hFich,cVar)
Endif
Else
FWRITE(hFich,cVar)
Endif
SKIP
ENDDO
FCLOSE(hFich)
USE
RETURN
Valora esta pregunta


0