Posted:
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
Posted:
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
Posted:
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
Posted:
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..
sin ningun interes.
Posted:
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
Posted:
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.
Posted:
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
Posted:
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.
Posted:
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..
Posted:
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
Posted:
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..?
Posted:
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/?dbafynn2nybApreciaré 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
Solucionado
Posted:
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
Posted:
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
Posted:
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!!