Page 1 of 3

Error DBFCDX/1025 Escritura no autorizada

PostPosted: Mon Oct 29, 2007 3:52 am
by jose_murugosa
Error DBFCDX/1025 Escritura no autorizada :roll:

Este es el error que estoy recibiendo donde indico en las siguientes líneas de código:
Code: Select all  Expand view
.......
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta")
      RETURN .F.
ENDIF
seek ncta
IF BANCOS->( Found() )
   DO WHILE .T.
      IF BANCOS->( RLock() )
aca----->REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto
         BANCOS->( DbUnlock() )
         EXIT
      ENDIF
   ENDDO
ENDIF
CierroDbf()

Lo curioso, como se puede ver es que el registro es bloqueado sin problemas y luego al intentar reemplazar produce un error de no poder acceder al registro bloqueado para escribir.

Intente buscar el error pero no se porque se produce.
Cualquier ayuda sera muy apreciada.

Gracias desde ya :D

PostPosted: Mon Oct 29, 2007 11:43 am
by karinha
Code: Select all  Expand view
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta")
      RETURN .F.
ENDIF

seek ncta

IF BANCOS->( Found() )
   WHILE( .T. )
      SYSREFRESH()
      IF BANCOS->( RLock() )
         REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto
         EXIT
      ELSE
          MsgInfo("No fué posible verificar cuenta")
      ENDIF
   ENDDO
   BANCOS->( DbComittAll() )
   BANCOS->( DbUnlock() )
ELSE
   MsgInfo("No fué posible Abrir la cuenta")
ENDIF

CierroDbf()  //?????

PostPosted: Mon Oct 29, 2007 12:00 pm
by jose_murugosa
Gracias por tu respuesta Joao,

He probado con el código que me enviaste y sigue dándome el mismo error.

Re: Error DBFCDX/1025 Escritura no autorizada

PostPosted: Mon Oct 29, 2007 12:04 pm
by Carlos Mora
jose_murugosa wrote:Error DBFCDX/1025 Escritura no autorizada :roll:

Este es el error que estoy recibiendo donde indico en las siguientes líneas de código:
Code: Select all  Expand view
.......
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta")
      RETURN .F.
ENDIF
seek ncta
IF BANCOS->( Found() )
   DO WHILE .T.
      IF BANCOS->( RLock() )
aca----->REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto
         BANCOS->( DbUnlock() )
         EXIT
      ENDIF
   ENDDO
ENDIF
CierroDbf()

Lo curioso, como se puede ver es que el registro es bloqueado sin problemas y luego al intentar reemplazar produce un error de no poder acceder al registro bloqueado para escribir.

Intente buscar el error pero no se porque se produce.
Cualquier ayuda sera muy apreciada.

Gracias desde ya :D


el seek ncta, en que área lo haces? no tiene el "Bancos->" delante

Si pones MSGINFO( BANCOS->( DBINFO( DBI_CANPUTREC ) ) ) justo antes del replace que muestra?

Antes del dBUnlock() es imprescindible el dBCommit() si quieres evitar corrupción de datos. Ya sé, es más lento, pero para mis programas eso no es negociable: dBcommit() antes del Unlock y 0 corrupción con ntx y con cdx.

Un saludo,

Carlos.

PostPosted: Mon Oct 29, 2007 12:14 pm
by karinha
saldo + wmonto -> los dos son numericos??

PostPosted: Mon Oct 29, 2007 1:09 pm
by jose_murugosa
Carlos, Joao:

Muchas gracias por sus respuestas, este es el código como lo estoy usando ahora y continúa el mismo error: :cry:
Code: Select all  Expand view
   IF wmonto = 0
      RETURN .T.
   ENDIF
   warea = Select()
   IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta")
      RETURN .F.
   ENDIF
   BANCOS->( DbSeek(ncta, .f.) )
   IF BANCOS->( Found() )
      DO WHILE .T.
         SysRefresh()
         IF BANCOS->( RLock() )
aca->    REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto
            BANCOS->( DbCommit() )
            BANCOS->( DbUnlock() )
            EXIT
         ENDIF
      ENDDO
   ENDIF
   BANCOS->( DbCloseArea() )


Saldo efectivamente es una variable numérica.

Gracias por vuestro interes y sugerencias que como veis he adoptado en el codigo. :D

PostPosted: Mon Oct 29, 2007 1:15 pm
by Patricio Avalos Aguirre
Hola

Prueba con

Code: Select all  Expand view
bancos->( dbRLock() )

PostPosted: Mon Oct 29, 2007 1:18 pm
by jose_murugosa
Patricio Avalos Aguirre wrote:Hola

Prueba con

Code: Select all  Expand view
bancos->( dbRLock() )


Probado,

El mismo error en el mismo lugar......

Gracias por la sugerencia, sigo buscando....

PostPosted: Mon Oct 29, 2007 1:34 pm
by karinha
Muestranos:

AbroDbf()

PostPosted: Mon Oct 29, 2007 1:34 pm
by Willi Quintana
...
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
MsgInfo("No fué posible verificar cuenta")
RETURN .F.
ENDIF

Select Bancos

If !DbSeek(nCta)
MsgInfo("No existe la cuenta")
RETURN .F.
EndIf

If !RLock()
MsgInfo("No fué posible bloquear la cuenta")
RETURN .F.
EndIf

REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto

DbCommit()
DbUnLock()
CierroDbf()
...

Debe funcionar...........
Salu2

PostPosted: Mon Oct 29, 2007 6:23 pm
by jose_murugosa
Willi Quintana wrote:...
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
MsgInfo("No fué posible verificar cuenta")
RETURN .F.
ENDIF

Select Bancos

If !DbSeek(nCta)
MsgInfo("No existe la cuenta")
RETURN .F.
EndIf

If !RLock()
MsgInfo("No fué posible bloquear la cuenta")
RETURN .F.
EndIf

REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto

DbCommit()
DbUnLock()
CierroDbf()
...

Debe funcionar...........
Salu2


Willy,

gracias por tu respuesta, probé de poner el código que sugieres, y me da nuevamente el mismo error. :oops:

Cualquier guía adicional se recibe gratitud. :wink:

PostPosted: Mon Oct 29, 2007 6:36 pm
by RenOmaS
El tamanho del campo 'SALDO' soporta la cantadid a grabar?... es decir verifica el tamanho del campo

PostPosted: Mon Oct 29, 2007 6:47 pm
by mantonio_08
Amigo:

Te propongo dos cosas:

1. Borra el Archivo Indices y Generalo de nuevo.

2 Cambia esta Linea *** IF BANCOS->( Found() )
Por
IF BANCOS->( !eof() )
DO WHILE .T.
SysRefresh()
IF BANCOS->( RLock() )
aca-> REPLACE BANCOS->saldo WITH BANCOS->saldo + wmonto
BANCOS->( DbCommit() )
BANCOS->( DbUnlock() )
EXIT
ENDIF
ENDDO
ENDIF

Espero te sirva,

Saludos,
Antonio

PostPosted: Mon Oct 29, 2007 7:01 pm
by karinha
COMO ESTÁ EL INDICE??

Hago asi,
Code: Select all  Expand view
    AEVAL(DIRECTORY( "IPOSTO.CDX"    ),{ |aFILE| FERASE(aFILE[F_NAME]) } )

PostPosted: Mon Oct 29, 2007 8:30 pm
by jacgsoft
Ese error solo se da cuando el Archivo esta como solo Lectura,