Error DBFCDX/1025 Escritura no autorizada

User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Error DBFCDX/1025 Escritura no autorizada

Post 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

.......
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
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

Code: Select all

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()  //?????
João Santos - São Paulo - Brasil
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

Gracias por tu respuesta Joao,

He probado con el código que me enviaste y sigue dándome el mismo error.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Error DBFCDX/1025 Escritura no autorizada

Post 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

.......
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.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

saldo + wmonto -> los dos son numericos??
João Santos - São Paulo - Brasil
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post 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

   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
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

Hola

Prueba con

Code: Select all

bancos->( dbRLock() )
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

Patricio Avalos Aguirre wrote:Hola

Prueba con

Code: Select all

bancos->( dbRLock() )
Probado,

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

Gracias por la sugerencia, sigo buscando....
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

Muestranos:

AbroDbf()
João Santos - São Paulo - Brasil
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post 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
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post 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:
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Post by RenOmaS »

El tamanho del campo 'SALDO' soporta la cantadid a grabar?... es decir verifica el tamanho del campo
mantonio_08
Posts: 330
Joined: Fri May 25, 2007 9:06 pm

Post 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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

COMO ESTÁ EL INDICE??

Hago asi,

Code: Select all

    AEVAL(DIRECTORY( "IPOSTO.CDX"    ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
João Santos - São Paulo - Brasil
User avatar
jacgsoft
Posts: 96
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Post by jacgsoft »

Ese error solo se da cuando el Archivo esta como solo Lectura,
Post Reply