FoxPro/Visual FoxPro - Backup y restore

   
Vista:

Backup y restore

Publicado por Marco (19 intervenciones) el 05/03/2014 04:57:36
buenas solo quiero pedir un favor como hago el boton de restaurar yde un backup aunque yo tengo el sgt codigo

en el boton del backup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
RUTA=GETDIR()
IF EMPTY(RUTA)
   RETURN
   ELSE
   CLOSE TABLES ALL
   CLOSE DATABASES ALL
RUN COPY *.DBF &RUTA
RUN COPY *.CDX &RUTA
RUN COPY *.FPT &RUTA
RUN COPY *.DBC &RUTA
RUN COPY *.DCX &RUTA
RUN COPY *.DCT &RUTA
MESSAGEBOX("COPIA DE RESPALDO FUE CREADA CON EXITO",32,"ATENCION")
ENDIF

y en el boton de restaurar

1
2
3
4
5
6
7
8
9
RUTA=GETDIR()
IF EMPTY(RUTA)
   RETURN
   ELSE
   CLOSE TABLES ALL
   CLOSE DATABASES ALL
RUN copy &RUTA\*.*  SYS(5)+"\.\"
MESSAGEBOX("PROCESO DE RESTAURACION  FUE CREADA CON EXITO",32,"ATENCION")
ENDIF

mi pregunta es esta bien el codigo o tengo que modificarlo por que la verdad el restaurar no funciona

gracias por todo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Backup y restore

Publicado por Fidel José (558 intervenciones) el 05/03/2014 23:23:38
Lo que pones ahí es bastante problemático.
En general, debes recurrir a Adir() para ese tipo de trabajos. Las rutas de la fuente de datos deberían estar especificadas por sistema y no tener que buscarse con GetDir(). Las copias se pueden hacer con el comando nativo COPY FILE que es muy eficiente. El control de errores debes hacerlo con TRY / CATCH / FINALLY / ENDTRY
Por otra parte, no puedes poner que algo terminó con éxito si no intentas detectar errores.

Este es un ejemplo sencillo, suponiendo que las tablas y bases de datos están cerradas. Estudia en la ayuda todos los comandos y funciones utilizados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
LOCAL lcDir,lcBack,i,j,lnFiles,;
	lcFileSource,lcFileDest,;
	lcRoot,lcRootDest
 
LOCAL ARRAY gadir(1),gaFiles(1)
 
lcDir="C:\THTERO"			&& Ruta de datos que corresponda
lcBack="C:\TEMP\BACKUP"		&& Ruta de Backup que corresponda
IF !DIRECTORY(LCBACK)
	MD &LCBACK
ENDIF
 
* Definir las carpetas involucradas
* ya que pueden existir tablas o archivos en
* distintas carpetas.
DIMENSION gadir(3)
gadir[1]="datos"
gadir[2]="fondos"
gadir[3]="perso"
 
* Cerrar todos los archivos
CLOSE DATABASES all
 
TRY
	LOCAL loEx as Exception
 
	* Para cada carpeta definida
	* Controla si existe, o crea ruta de backup
	* Determina los archivos por Adir()
	FOR i=1 TO ALEN(gadir)
		lcRoot=ADDBS(lcdir)+gadir[i]
		LcRootDest=ADDBS(lcBack)+gaDir[i]
		IF !DIRECTORY(lcRootDest)
			MD &lcRootDest
		ENDIF
		lnFiles=0
		IF DIRECTORY(lcRoot)
			lnFiles=ADIR(gaFiles,ADDBS(lcRoot)+"*.*")
		ENDIF
 
		* Si encontró archivos, efectua la copia
		FOR j=1 TO lnFiles
			lcFileSource=ADDBS(lcRoot)+gaFiles[j,1]
			lcfileDest=ADDBS(lcRootDest)+gaFiles[j,1]
			WAIT WINDOW "Copiando &lcFilesource a &lcFileDest..." AT 12,15 NOWAIT
			COPY FILE &lcFileSource. TO &lcFileDest.
		NEXT
	NEXT
CATCH TO loex
	loex.UserValue=PROGRAM()
	LOCAL lcMensa
	lcMensa="Fecha "+TRANSFORM(DATETIME());
		+CHR(13)+"Mensaje: "+loEx.message;
		+CHR(13)+"ErrorNo: "+TRANSFORM(loEx.Errorno);
		+CHR(13)+"Llamada: "+loEx.Uservalue ;
		+CHR(13)+"Linea: "+TRANSFORM(loex.LineNo)
 
	STRTOFILE(lcMensa+CHR(13),"ThError.log",1)
	lcMensa="Se ha producido un error:"+chr(13)+lcMensa
	MESSAGEBOX(lcMensa,0,"BackUp")
FINALLY
	lcResp=""
	IF VARTYPE(loEx)="O"
		lcResp="Copia de respaldo con errores."+CHR(13)
	ELSE
		lcResp="Copia de respaldo realizada con éxito."+CHR(13)
	ENDIF
 
	loEx=null
	WAIT clear
	MESSAGEBOX(lcresp+"Proceso Terminado. Chau",0,"Backup",5000)
	QUIT	&& Acá puede ir reapertura de tablas (si corresponde)
			&& o rutina de cierre del sistema
 
ENDTRY
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Backup y restore

Publicado por Marco (19 intervenciones) el 05/03/2014 23:35:18
Y EL RESTAURAR RECUERDA QUE SON DOS BOTONES UNO EL DE COPIAR Y OTRO EL DE RESTAURAR
PERO ACABO DE REALIZAR EL PROCEDIMIENTO Y NO FUNCIONO APARECE ERROR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Backup y restore

Publicado por Fidel José (558 intervenciones) el 06/03/2014 00:16:18
1) La rutina enviada está probada para las definiciones de rutas incluidas. Tu debes cambiar las rutas por las que necesites. Debes verificar que tengas acceso a la carpeta designada para backup. Y si quieres, también puedes comentar qué error te aparece.

2) El restaurar lo dejo por tu cuenta. Pero me imagino que tienes presente que es exactamente la reversa del mismo procedimiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Backup y restore

Publicado por Marco (19 intervenciones) el 10/03/2014 19:33:53
muchas gracias por todo
me funciono muy bien el bakckup
pero cuando voy hacer la restauracion no me lo hace desde la copia que hice me toma otros valores

me explico
hago backup de una factura digamos la factura 8 me la hace bien

pero cuando voy hacer la restauracion me lo hace pero no me trae la factura 8 sino la factura 7

que hago

gracias
estoy copiando los dbf,dcx,dct,dbc,fpt,cdx,tbk,bak
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar