FoxPro/Visual FoxPro - Sobre hacer un respaldo de datos...

 
Vista:
sin imagen de perfil

Sobre hacer un respaldo de datos...

Publicado por Alex (2 intervenciones) el 01/12/2016 21:41:06
Hola, un saludo a todos los usuarios de la página!
Verán, estoy aprendiendo a usar el Visual Foxpro, y tengo una duda con respecto a los respaldos...

Me enseñaron que con el COPY FILE UbicArch TO UbicDest
copiaba los archivos de una ubicación a otra (son específicas)
pero si yo quiero que se copien los archivos .DBF de una ubicación específica y que se llame al menú "guardar como" para elegir la carpeta donde yo desee copiarlos, cómo debo codificar?

De antemano, muchas gracias :)
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Sobre hacer un respaldo de datos...

Publicado por Fidel José (657 intervenciones) el 02/12/2016 01:20:21
Te tiro una idea (no es la única, ni tiene por qué ser la mejor)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
PROCEDURE Copia_Respaldo
TRY
	LOCAL i,;
		lcDir,;
		lcFolder_Source,;
		lcFolder_Target,;
		lnTotal_files, ;
		lnFiles,;
		lDoit ,;
		lnFailure,;
		lnFiles_Copied,;
		lcString_Failure,;
		lcList_Exension,;
		lcMessage,;
		loFso as Object,;
		loExGral as Exception,;
		loExCopy as Exception
 
	LOCAL ARRAY laTotal(1),laFiles(1)
 
	lcList_Extension = ",dbf,cdx,fpt,"
	lcMessage = ""
	lnFiles_copied = 0
	lnFailure = 0
	lcString_Failure = ""
	ldoit = .t.
	lnfiles = 0
	lnCount = 0
	loFso = NEWOBJECT("Scripting.FileSystemObject")
	lcDir = FULLPATH("")
	lcFolder_Source = GETDIR(m.lcDir,"Seleccione la carpeta de origen","Copia de Respaldo",48+64)
	ldoit = !EMPTY(m.lcFolder_Source)
	IF m.ldoit
		lcFolder_Target = GETDIR(m.lcDir,"Seleccione la carpeta de destino","Copia de Respaldo",48+64)
		lDoit = !EMPTY(m.lcFolder_Target)
	ENDIF
	IF m.lDoit
		lnTotal_files = ADIR(laTotal,ADDBS(m.lcFolder_Source)+"*.*","",1)
		IF m.lnTotal_files > 0
			FOR i = 1 TO m.lnTotal_Files
				IF AT( CHR(44)+LOWER(JUSTEXT(laTotal[m.i,1]))+CHR(44) , m.lcList_Extension) > 0
					lnFiles = m.lnFiles + 1
					DIMENSION laFiles(m.lnFiles)
					laFiles[m.lnFiles] = ADDBS(m.lcFolder_Source)+laTotal[m.i,1]
				ENDIF
			NEXT
		ENDIF
		lDoit = m.lnFiles > 0
	ENDIF
	IF m.lDoit
 
		FOR i = 1 TO m.lnfiles
			TRY
				loExCopy = null
 
				loFso.copyFile(laFiles[i],ADDBS(m.lcFolder_Target))
				lnfiles_Copied = m.lnfiles_Copied + 1
			CATCH TO loexCopy
				loExCopy.UserValue = PROGRAM()
	*			ShowError(loExCopy)
				lnFailure = m.lnFailure + 1
				lcString_Failure = m.lcString_Failure ;
				+ laFiles[i]+" ";
				+ loexCopy.Message ;
				+ CHR(13)+CHR(10)
			FINALLY
 
 
			ENDTRY
		NEXT
	ENDIF
 CATCH TO loexGral
 	loExGral.UserValue = PROGRAM()
 	ShowError(loExGral)
 FINALLY
 	lcMessage = IIF(m.lnFiles_Copied = m.lnfiles,;
 		"Finalizó correctamente",;
 		"Finalizó con "+TRANSFORM(m.lnFailure)+" errores de "+TRANSFORM(lnFiles)+" archivos")
 	MESSAGEBOX(m.lcMessage,0,"Mensaje de Copia")
 
 	loFso = null
 ENDTRY
 
 
 *----------------------------------------------------
PROCEDURE ShowError
LPARAMETERS toExcep,tlNotShow,tcCaption
*-----------------------------------------------------
#DEFINE _CR_	CHR(13)
tcCaption=EVL(tcCaption,"Mensaje del Sistema")
SET HOURS TO 24
LOCAL lcMens,lShowMensajero,lcFolder,lcFile
 
 
lcMens="Fecha "+TRANSFORM(DATETIME());
	+ _CR_+"Mensaje: "+toExcep.message;
	+ _CR_+"ErrorNo: "+TRANSFORM(toExcep.Errorno);
	+ _CR_+"Llamada: "+toExcep.Uservalue
IF _vfp.StartMode=0
	lcMens=lcMens+ _CR_+"Linea "+TRANSFORM(toExcep.lineno)
ENDIF
 
STRTOFILE(lcMens+ _CR_+REPLICATE("=",60)+ _CR_,"ThError.log",1)
 
lcMens="Se ha producido un error:"+ _CR_+lcMens
IF !tlNotShow
	MESSAGEBOX(m.lcMens,0,m.tcCaption)
ENDIF
 
ENDPROC
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

Sobre hacer un respaldo de datos...

Publicado por Alex (2 intervenciones) el 02/12/2016 03:47:22
Amigo, soy principiante con esto, ¿podrías explicarme cómo usar ese código (qué debo sustituir y eso)? te lo agradecería mucho!
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Sobre hacer un respaldo de datos...

Publicado por Fidel José (657 intervenciones) el 02/12/2016 21:39:30
Si eres principiante, lo que te toca hacer es analizar el código con la ayuda de VFP y justificar las funciones que se emplean en dicho código.
Luego, haces la adaptación a tu necesidad, pero con conociimiento de causa.
Con eso, iras dejando de ser principiante. De otra forma, nunca mejorarás tu situación.
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

Sobre hacer un respaldo de datos...

Publicado por jose camilo\ (805 intervenciones) el 12/12/2016 18:43:47
run copy e:\tablas\*.dbf x:\tutablasdbf
donde x y x son los direcctorios de origen y destino
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