Page 1 of 3
Error DBFCDX/1025 Escritura no autorizada
Posted: Mon Oct 29, 2007 3:52 am
by jose_murugosa
Error DBFCDX/1025 Escritura no autorizada
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
Posted: Mon Oct 29, 2007 11:43 am
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() //?????
Posted: 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
Posted: Mon Oct 29, 2007 12:04 pm
by Carlos Mora
jose_murugosa wrote:Error DBFCDX/1025 Escritura no autorizada
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
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.
Posted: Mon Oct 29, 2007 12:14 pm
by karinha
saldo + wmonto -> los dos son numericos??
Posted: 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:
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.
Posted: Mon Oct 29, 2007 1:15 pm
by Patricio Avalos Aguirre
Posted: Mon Oct 29, 2007 1:18 pm
by jose_murugosa
Patricio Avalos Aguirre wrote:Hola
Prueba con
Probado,
El mismo error en el mismo lugar......
Gracias por la sugerencia, sigo buscando....
Posted: Mon Oct 29, 2007 1:34 pm
by karinha
Muestranos:
AbroDbf()
Posted: 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
Posted: 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.
Cualquier guía adicional se recibe gratitud.
Posted: 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
Posted: 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
Posted: Mon Oct 29, 2007 7:01 pm
by karinha
COMO ESTÁ EL INDICE??
Hago asi,
Code: Select all
AEVAL(DIRECTORY( "IPOSTO.CDX" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
Posted: Mon Oct 29, 2007 8:30 pm
by jacgsoft
Ese error solo se da cuando el Archivo esta como solo Lectura,