Page 2 of 3

PostPosted: Mon Oct 29, 2007 8:54 pm
by Francisco Horta
jose,

revisa los permisos sobre los archivos y carpetas, otra, crea una dbf nueva en blacno y agregale los registros de la anterior y prueba usando la nueva
salu2
paco

PostPosted: Mon Oct 29, 2007 9:13 pm
by jose_murugosa
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 :D

PostPosted: Tue Oct 30, 2007 2:28 am
by jose_murugosa
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 :D

PostPosted: Tue Oct 30, 2007 3:59 am
by joseluisysturiz
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.. :wink: sin ningun interes.

PostPosted: Tue Oct 30, 2007 4:49 am
by Raymundo Islas M.
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

PostPosted: Tue Oct 30, 2007 10:34 am
by jose_murugosa
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


El programa está en mi equipo de trabajo, que no está en red.

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.

PostPosted: Tue Oct 30, 2007 10:43 am
by Antonio Linares
José,

Podrías proporcionar un ejemplo pequeño y autocontenido que reproduzca el error ? gracias

PostPosted: Tue Oct 30, 2007 4:13 pm
by jose_murugosa
Antonio Linares wrote:José,

Podrías proporcionar un ejemplo pequeño y autocontenido que reproduzca el error ? gracias


Gracias por tu respuesta, procuraré elaborar uno a la brevedad.

PostPosted: Tue Oct 30, 2007 6:13 pm
by sysctrl2
Exacto Jose,,

un pedazo de codigo mas completo,

para poder nosotros aplicar tu logica,,


usas ADS local ?


saludos..

PostPosted: Tue Oct 30, 2007 7:01 pm
by Francisco Horta
jose, si pudieras subir un exe o enviarmelo con ese pequeño ejemplo para reproducirlo en mi pc a ver si aca jala bien.
salu2
paco

PostPosted: Tue Oct 30, 2007 8:22 pm
by joseluisysturiz
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..?

PostPosted: Thu Nov 01, 2007 8:03 pm
by jose_murugosa
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..?


Esta rutina usa exclusivamente estas dos bases.

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. :lol:

Gracias desde ya por todo el apoyo que me han dado :D

Solucionado

PostPosted: Fri Nov 02, 2007 12:06 am
by Willi Quintana
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

PostPosted: Fri Nov 02, 2007 1:48 pm
by Patricio Avalos Aguirre
Jose

El problema esta que abres la bases de datos en READONLY

Code: Select all  Expand view
   IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta" + CRLF + "Base de datos no disponible")
      RETURN .F.
   ENDIF


si vez el parametro readonly es nil..

Code: Select all  Expand view
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

PostPosted: Fri Nov 02, 2007 2:26 pm
by jose_murugosa
Patricio Avalos Aguirre wrote:Jose

El problema esta que abres la bases de datos en READONLY

Code: Select all  Expand view
   IF !AbroDbf( .T., "DBFCDX", "BANCOS", "BANCOS", "i_ban")
      MsgInfo("No fué posible verificar cuenta" + CRLF + "Base de datos no disponible")
      RETURN .F.
   ENDIF


si vez el parametro readonly es nil..

Code: Select all  Expand view
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!!