Error DBFCDX/1025 Escritura no autorizada
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Joao, Carlos, Patricio, Willi, RenOmaS, Antonio, Jacgsoft, Francisco
Gracias por sus respuestas, no se como agradecer la forma en que siempre los compañeros del foro están dispuestos a dar de su tiempo para ayudarme, probaré las últimas sugerencias y luego les cuento.
Muchas gracias
Gracias por sus respuestas, no se como agradecer la forma en que siempre los compañeros del foro están dispuestos a dar de su tiempo para ayudarme, probaré las últimas sugerencias y luego les cuento.
Muchas gracias
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Gracias por toda la ayuda que me están dando y las sugerencias!!!
1) Verifiqué que carpetas y archivos no tuvieran atributo solo lectura u oculto.
2) Borré los CDX y los regeneré
3) Reparé las bases con Advance DBF Repair y para mayor seguridad luego creé bases de igual estructura y les di un append from utilizando estas como bases.
4) Cree nueva estructura de directorios y transferí los archivos a la nueva estructura, recompilé el ejecutable y la dll.
... Caballeros, sigo en la misma...
Gracias nuevamente por toda la ayuda y buena fe que han puesto para ayudarme, seguiré buscando la solución y si la encuentro prometo reportarla para que no les suceda.
Se siguen recibiendo sugerencias... que ciertamente son todas agradecidas y probadas
1) Verifiqué que carpetas y archivos no tuvieran atributo solo lectura u oculto.
2) Borré los CDX y los regeneré
3) Reparé las bases con Advance DBF Repair y para mayor seguridad luego creé bases de igual estructura y les di un append from utilizando estas como bases.
4) Cree nueva estructura de directorios y transferí los archivos a la nueva estructura, recompilé el ejecutable y la dll.
... Caballeros, sigo en la misma...
Gracias nuevamente por toda la ayuda y buena fe que han puesto para ayudarme, seguiré buscando la solución y si la encuentro prometo reportarla para que no les suceda.
Se siguen recibiendo sugerencias... que ciertamente son todas agradecidas y probadas
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Jose, a mi me paso algo parecido, y el problema era los niveles de seguridad de escritura de windows XP, si estas en red, verifica los niveles permitido al usuario con que te conectas o entra como administrador, tu codigo aparentemente esta bien, para evaluar el nivel del usuario, bajo DOS trate de crear una carpeta en el directorio donde estan tud DBF o crea un archivo .txt y trata salvarlo.... no solo FWH esta en interaccion, recuerda que se esta bajo un WINDOWS que controla niveles de seguridad y escritura... ojala pueda ayudarte mi observacion...saludos... que bueno es saber como se abocan todos para ayudarnos uno a los otros.. sin ningun interes.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Hola Jose
No indicas si el archivo lo accesas de forma local o por red, pero coincido con Jose Luis, en caso que sea por red,checa que activaste la opcion de :
- Permitir que los usuarios modifiquen los archivos, al momento de crear tu unidad de red.
Ya que si no, los archivos los abriras como solo lectura.
Saludos
No indicas si el archivo lo accesas de forma local o por red, pero coincido con Jose Luis, en caso que sea por red,checa que activaste la opcion de :
- Permitir que los usuarios modifiquen los archivos, al momento de crear tu unidad de red.
Ya que si no, los archivos los abriras como solo lectura.
Saludos
FWH 10.6 + xHarbour + Borland 582
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
El programa está en mi equipo de trabajo, que no está en red.Raymundo Islas M. wrote:Hola Jose
No indicas si el archivo lo accesas de forma local o por red, pero coincido con Jose Luis, en caso que sea por red,checa que activaste la opcion de :
- Permitir que los usuarios modifiquen los archivos, al momento de crear tu unidad de red.
Ya que si no, los archivos los abriras como solo lectura.
Saludos
Probé la aplicación en otra máquina (la del cliente) y tengo el mismo problema, si bien esta está en red, lo probé en una carpeta no compartida.
Sigo investigando......
Muchas Gracias Ray por tu respuesta.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Esta rutina usa exclusivamente estas dos bases.joseluisysturiz wrote:Sube a algun servidor de descargar la rutina con la dbf a ver que podemos hacer, se que encontraremos respuesta logica, la pregunta de las mil lochas, te sucede eso en todas las DBF o solo los que usa esa rutina..?
Adjunto ahora un zip con un pequeño ejemplo que reproduce el error, utilicé y puse la rutina de apertura de archivos para que no haya dudas cuando revisen el código.
Al compilarla da el mismo error 1025.
http://www.mediafire.com/?dbafynn2nyb
Apreciaré cualquier ayuda, y sobre todo espero no sea otra de esas tonterías que uno no ve por cansancio o sino me voy a tener que internar en terapia de sueño.
Gracias desde ya por todo el apoyo que me han dado
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Solucionado
El error esta al abrir las DBFs, pueba asi:
#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL nCta, wMonto, wFecha_ven
REQUEST DBFCDX
RddSetDefault("DBFCDX")
nCta="1212"
wmonto=120
wFecha_Ven=Ctod("20/01/2006")
CreoIndices()
ModCta( ncta, wmonto, wFecha_Ven )
RETURN NIL
Function ModCta( ncta, wmonto, wfecha_ven )
local nSaldo //1-Actualizo saldo en bancos.dbf
MsgInfo(wmonto)
IF wmonto = 0
RETURN nil
ENDIF
//IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
//ENDIF
USE BANCOS ALIAS BANCOS SHARED NEW
SET INDEX TO BANCOS
If FLOCK()
browse()
EndIf
BANCOS->( DbSeek(ncta, .f.) )
IF BANCOS->( Found() )
// DO WHILE .T.
// IF BANCOS->( DbRLock() )
nSaldo := BANCOS->saldo + wmonto
? _field->saldo
_field->saldo := nSaldo
BANCOS->( DbCommit() )
BANCOS->( DbUnlock() )
// EXIT
// ENDIF
// ENDDO
ENDIF
BANCOS->( DbCloseArea() )
//2-Cargo el monto de movimientos en el saldo de la fecha correspondiente en saldos.dbf
// IF !AbroDbf( .T., "DBFCDX", "SALDOS", "SALDOS", "i_Saldos")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
// ENDIF
USE SALDOS ALIAS SALDOS SHARED NEW
SET INDEX TO SALDOS
SALDOS->( DbSeek( ncta+Dtos(wfecha_ven), .t. ) ) //softseek
IF ! SALDOS->( Eof() ) .and. SALDOS->cta = ncta .and. SALDOS->fecha = wfecha_ven
DO WHILE .t.
IF SALDOS->( DbRLock() )
REPLACE SALDOS->saldo WITH SALDOS->saldo + wmonto
SALDOS->( DbCommit() )
SALDOS->( DbUnlock() )
EXIT
ENDIF
ENDDO
ELSE
SALDOS->( DbSkip( -1 ) )
IF ! SALDOS->( Bof() ) .and. SALDOS->cta = ncta
sald_ant = SALDOS->saldo
DO WHILE .t.
IF SALDOS-> ( DbRLock() )
SALDOS->( DbAppend() )
IF ! SALDOS->( Neterr() )
REPLACE SALDOS->cta WITH ncta
REPLACE SALDOS->fecha WITH wfecha
REPLACE SALDOS->saldo WITH sald_ant+wmonto
SALDOS->( DBCommit() )
SALDOS->( DbUnlock() )
EXIT
ENDIF
ENDIF
ENDDO
ELSE
DO WHILE .t.
SALDOS->( DbAppend() )
IF ! SALDOS->( Neterr() )
REPLACE SALDOS->cta WITH ncta
REPLACE SALDOS->fecha WITH wfecha_ven
REPLACE SALDOS->saldo WITH wmonto
SALDOS->( DbCommit() )
SALDOS->( DBUnlock() )
EXIT
ENDIF
ENDDO
ENDIF
ENDIF
//3-Actualizo todos los saldos de la cuenta desde la fecha del movimiento incrementndolos
//en ese monto (siempre en saldos.dbf).
SALDOS->( DbSkip() )
DO WHILE ! SALDOS->( Eof() ) .and. SALDOS->cta = ncta
DO WHILE .t.
IF SALDOS->( DbRLock() )
REPLACE SALDOS->saldo WITH SALDOS->saldo + wmonto
SALDOS->( DbCommit() )
SALDOS->( DBUnlock() )
EXIT
ENDIF
ENDDO
SALDOS->( DbSkip() )
ENDDO
SALDOS->( DbCloseArea() )
//verifico que anduvo
// IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
// ENDIF
USE BANCOS ALIAS BANCOS SHARED NEW
SET INDEX TO BANCOS
SELECT BANCOS
BANCOS->( DbSeek(ncta, .f.) )
MsgInfo(BANCOS->Saldo)
CLOSE DATABASES
RETURN .T.
/*Fin Funcin ModCta
-------------------------------------------------------------------------------------------*/
FUNCTION CreoIndices()
IF FILE("SALDOS.CDX")
ERASE "SALDOS.CDX"
ENDIF
IF FILE("BANCOS.CDX")
ERASE "BANCOS.CDX"
ENDIF
use saldos exclusive
if .not. neterr()
pack
index on cta+dtos(fecha) TAG i_saldos
endif
commit
close
use bancos exclusive
if .not. neterr()
pack
index on cuenta TAG i_ban
index on banco TAG i_ban2
endif
commit
close data
/*Fin Funcin CreoIndices
-------------------------------------------------------------------------------------------*/
//Funciones de Apertura y Cierre
FUNCTION AbroDbf( lNew, cDriver, cNom_dbf, cAlias, uOrden, lShared, lReadOnly )
LOCAL intentos:=0, Result:=.F.
IF cDriver=NIL
cDriver=cRDD
ENDIF
IF cAlias=NIL
cAlias=cNom_dbf
ENDIF
IF lReadOnly=NIL
lReadOnly=.T.
ENDIF
IF lShared=NIL
lShared=.T.
ENDIF
IF uOrden=NIL
uOrden:=1
ENDIF
DbUseArea(lNew, cDriver, cNom_dbf, cAlias, lShared, lReadOnly)
DO WHILE .T.
DO WHILE NetErr() .and. Intentos<100
DbUseArea(lNew, cDriver, cNom_dbf, cAlias, lShared, lReadOnly)
Intentos++
ENDDO
IF UPPER( Alias() ) = UPPER( cAlias )
Intentos=0
Result:=.T.
EXIT
ELSE
IF ! MsgYesNo("No se pudo acceder a la base, Reintenta?")
Intentos:=0
EXIT
ELSE
Intentos=0
ENDIF
ENDIF
ENDDO
IF Result
OrdSetFocus(uOrden)
ENDIF
RETURN Result
/*Fin Funcin AbroDbf
Salu2
#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL nCta, wMonto, wFecha_ven
REQUEST DBFCDX
RddSetDefault("DBFCDX")
nCta="1212"
wmonto=120
wFecha_Ven=Ctod("20/01/2006")
CreoIndices()
ModCta( ncta, wmonto, wFecha_Ven )
RETURN NIL
Function ModCta( ncta, wmonto, wfecha_ven )
local nSaldo //1-Actualizo saldo en bancos.dbf
MsgInfo(wmonto)
IF wmonto = 0
RETURN nil
ENDIF
//IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
//ENDIF
USE BANCOS ALIAS BANCOS SHARED NEW
SET INDEX TO BANCOS
If FLOCK()
browse()
EndIf
BANCOS->( DbSeek(ncta, .f.) )
IF BANCOS->( Found() )
// DO WHILE .T.
// IF BANCOS->( DbRLock() )
nSaldo := BANCOS->saldo + wmonto
? _field->saldo
_field->saldo := nSaldo
BANCOS->( DbCommit() )
BANCOS->( DbUnlock() )
// EXIT
// ENDIF
// ENDDO
ENDIF
BANCOS->( DbCloseArea() )
//2-Cargo el monto de movimientos en el saldo de la fecha correspondiente en saldos.dbf
// IF !AbroDbf( .T., "DBFCDX", "SALDOS", "SALDOS", "i_Saldos")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
// ENDIF
USE SALDOS ALIAS SALDOS SHARED NEW
SET INDEX TO SALDOS
SALDOS->( DbSeek( ncta+Dtos(wfecha_ven), .t. ) ) //softseek
IF ! SALDOS->( Eof() ) .and. SALDOS->cta = ncta .and. SALDOS->fecha = wfecha_ven
DO WHILE .t.
IF SALDOS->( DbRLock() )
REPLACE SALDOS->saldo WITH SALDOS->saldo + wmonto
SALDOS->( DbCommit() )
SALDOS->( DbUnlock() )
EXIT
ENDIF
ENDDO
ELSE
SALDOS->( DbSkip( -1 ) )
IF ! SALDOS->( Bof() ) .and. SALDOS->cta = ncta
sald_ant = SALDOS->saldo
DO WHILE .t.
IF SALDOS-> ( DbRLock() )
SALDOS->( DbAppend() )
IF ! SALDOS->( Neterr() )
REPLACE SALDOS->cta WITH ncta
REPLACE SALDOS->fecha WITH wfecha
REPLACE SALDOS->saldo WITH sald_ant+wmonto
SALDOS->( DBCommit() )
SALDOS->( DbUnlock() )
EXIT
ENDIF
ENDIF
ENDDO
ELSE
DO WHILE .t.
SALDOS->( DbAppend() )
IF ! SALDOS->( Neterr() )
REPLACE SALDOS->cta WITH ncta
REPLACE SALDOS->fecha WITH wfecha_ven
REPLACE SALDOS->saldo WITH wmonto
SALDOS->( DbCommit() )
SALDOS->( DBUnlock() )
EXIT
ENDIF
ENDDO
ENDIF
ENDIF
//3-Actualizo todos los saldos de la cuenta desde la fecha del movimiento incrementndolos
//en ese monto (siempre en saldos.dbf).
SALDOS->( DbSkip() )
DO WHILE ! SALDOS->( Eof() ) .and. SALDOS->cta = ncta
DO WHILE .t.
IF SALDOS->( DbRLock() )
REPLACE SALDOS->saldo WITH SALDOS->saldo + wmonto
SALDOS->( DbCommit() )
SALDOS->( DBUnlock() )
EXIT
ENDIF
ENDDO
SALDOS->( DbSkip() )
ENDDO
SALDOS->( DbCloseArea() )
//verifico que anduvo
// IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
// MsgInfo("No fu posible verificar cuenta" + CRLF + "Base de datos no disponible")
// RETURN .F.
// ENDIF
USE BANCOS ALIAS BANCOS SHARED NEW
SET INDEX TO BANCOS
SELECT BANCOS
BANCOS->( DbSeek(ncta, .f.) )
MsgInfo(BANCOS->Saldo)
CLOSE DATABASES
RETURN .T.
/*Fin Funcin ModCta
-------------------------------------------------------------------------------------------*/
FUNCTION CreoIndices()
IF FILE("SALDOS.CDX")
ERASE "SALDOS.CDX"
ENDIF
IF FILE("BANCOS.CDX")
ERASE "BANCOS.CDX"
ENDIF
use saldos exclusive
if .not. neterr()
pack
index on cta+dtos(fecha) TAG i_saldos
endif
commit
close
use bancos exclusive
if .not. neterr()
pack
index on cuenta TAG i_ban
index on banco TAG i_ban2
endif
commit
close data
/*Fin Funcin CreoIndices
-------------------------------------------------------------------------------------------*/
//Funciones de Apertura y Cierre
FUNCTION AbroDbf( lNew, cDriver, cNom_dbf, cAlias, uOrden, lShared, lReadOnly )
LOCAL intentos:=0, Result:=.F.
IF cDriver=NIL
cDriver=cRDD
ENDIF
IF cAlias=NIL
cAlias=cNom_dbf
ENDIF
IF lReadOnly=NIL
lReadOnly=.T.
ENDIF
IF lShared=NIL
lShared=.T.
ENDIF
IF uOrden=NIL
uOrden:=1
ENDIF
DbUseArea(lNew, cDriver, cNom_dbf, cAlias, lShared, lReadOnly)
DO WHILE .T.
DO WHILE NetErr() .and. Intentos<100
DbUseArea(lNew, cDriver, cNom_dbf, cAlias, lShared, lReadOnly)
Intentos++
ENDDO
IF UPPER( Alias() ) = UPPER( cAlias )
Intentos=0
Result:=.T.
EXIT
ELSE
IF ! MsgYesNo("No se pudo acceder a la base, Reintenta?")
Intentos:=0
EXIT
ELSE
Intentos=0
ENDIF
ENDIF
ENDDO
IF Result
OrdSetFocus(uOrden)
ENDIF
RETURN Result
/*Fin Funcin AbroDbf
Salu2
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Jose
El problema esta que abres la bases de datos en READONLY
si vez el parametro readonly es nil..
El problema esta que abres la bases de datos en READONLY
Code: Select all
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
MsgInfo("No fué posible verificar cuenta" + CRLF + "Base de datos no disponible")
RETURN .F.
ENDIF
Code: Select all
FUNCTION AbroDbf( lNew, cDriver, cNom_dbf, cAlias, uOrden, lShared, lReadOnly )
LOCAL intentos:=0, Result:=.F.
IF cDriver=NIL
cDriver="DBFCDX"
ENDIF
IF cAlias=NIL
cAlias=cNom_dbf
ENDIF
IF lReadOnly=NIL
lReadOnly=.T.
ENDIF
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
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
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Patricio Avalos Aguirre wrote:Jose
El problema esta que abres la bases de datos en READONLY
si vez el parametro readonly es nil..Code: Select all
IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban") MsgInfo("No fué posible verificar cuenta" + CRLF + "Base de datos no disponible") RETURN .F. ENDIF
Code: Select all
FUNCTION AbroDbf( lNew, cDriver, cNom_dbf, cAlias, uOrden, lShared, lReadOnly ) LOCAL intentos:=0, Result:=.F. IF cDriver=NIL cDriver="DBFCDX" ENDIF IF cAlias=NIL cAlias=cNom_dbf ENDIF IF lReadOnly=NIL lReadOnly=.T. ENDIF
Patricio,
Gracias, había hecho una modificación en esta rutina y al hacerlo cambién por .t. sin darme cuenta.
Gracias!!
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!