FoxPro/Visual FoxPro - COPIAR ARCHIVO

   
Vista:
Imágen de perfil de CHEVOSANT

COPIAR ARCHIVO

Publicado por CHEVOSANT eusebiosantana@hotmail.com (31 intervenciones) el 23/10/2014 16:51:13
Hola, amigos!
Estoy creando un programa de transporte, pero cuando elimino un socio, porque se ha retirado de la compañía, este socio va a una base de datos histórica. El problema es que, la foto que corresponde a ese socio, necesito trasladarla, también a la carpeta "HIST" con el nombre del campo que correspondía al socio retirado, y evitar que aparezca en el directorio de los que están activos.

Alguien podría ayudarme en esto? 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

COPIAR ARCHIVO

Publicado por Fidel José (558 intervenciones) el 23/10/2014 20:55:04
Dos alternativas
1) Con Visual Fox
lcImage_Origen="c:\Datos\Dir_Fotos\socioRetirado.png"
lcPathDestino="c:\Datos\Hist"

lcImage_Destino=FORCEPATH(lcImage_origen , lcpathDestino)
COPY FILE &lcImage_Origen TO &lcImage_Destino
IF FILE(lcImage_Destino)
DELETE FILE &lcImage_Origen
ENDIF

2) Con Scripting.FileSystemObject
lcImagen="SocioRetirado.png"
LcPathOrigen="C:\DATOS\Dir_Fotos"
lcpathDestino="C:\DATOS\HIST"

lcImagen_Origen=Addbs(lcPathOrigen)+lcImagen
lcImagen_Destino=Addbs(lcDestino)+lcImagen
loFso=NEWOBJECT("Scripting.FileSystemObject")
IF !LoFso.fileExists(lcImagen_Destino)
loFso.MoveFile(lcImagen_Origen , ADDBS(LcPathDestino))
ENDIF
loFso=null
* Scripting.FileSystemObject copia o muda el archivo respetando el CASE.
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
Imágen de perfil de CHEVOSANT

COPIAR ARCHIVO

Publicado por CHEVOSANT eusebiosantana@hotmail.com (31 intervenciones) el 24/10/2014 22:31:40
Hola, Fidel Jose!

Gracias por ese maravilloso tiempo que me ha otorgado. Estuve analizado el código, pero me dispara error. No se si no supe explicarme, pero si tiene un momento más de su tiempo le mandaré más detalles de lo que estoy necesitando y disculpe de antemano la molestia que le estoy causando.

Tengo un formulario "Control de Socios" y en él puede ver la foto que corresponde al socio. Al escanear la foto se guarda en el directorio C:\TRANSPORTE\FOTOS\ mas el nombre de la foto y extensión, por ejemplo "SOC12.JPG"
en donde 'SOC12' es el código que corresponde al socio incorporado en la tabla SOCIOS . Luego, el directorio y el nombre de la foto se guarda en la tabla SOCIOS y el campo PICT_LOC, el cual se muestra en textbox enlazado a la tabla SOCIOS.PICT_LOC, mostrando así el directorio y el nombre de la foto del socio, ejemplo:

'C:\TRANSPORTE\FOTOS\SOC12.JPG'.

En el botón ELIMINAR necesito incorporar el código que me permita copiar la foto que se encuentra en el directorio
C:\TRANSPORTE\FOTOS\ extrayendo el nombre y/o el directorio que se encuentra en el textbox enlazado a la tabla
SOCIOS.PICT_LOC sin tener que localizar el directorio y el nombre de la foto a copiar. Una vez copiada la foto en el
directorio C:\TRANSPORTE\HIST\ eliminar la foto en cuestión del directorio C:\TRANSPORTE\FOTOS\.
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

COPIAR ARCHIVO

Publicado por Fidel José (558 intervenciones) el 25/10/2014 00:50:52
Este código está probado.
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
*<ButtonClick>
LOCAL loFso as Object ,;
	lcName_Foto ,;
	lcFolder_Fotos ,;
	lcHistoric_Name ,;
	lcFolder_Hist ,;
	lcfileFoto ,;
	lcEndMessage
 
lcFolder_Fotos="C:\TRANSPORTE\FOTOS"	&& dato que puede extraerse de una tabla
                                                                                && lcFolder_Fotos=alltrim(tabla.CampoDir)
lcHistoric_Name="HIST"
lcFolder_Hist=ADDBS(JUSTPATH(lcFolder_Fotos))+lcHistoric_Name
 
lcName_Foto="SOC12.JPG"		&& Dato que puede extraerse de una tabla
                                                                && lcName_foto=Alltrim(tabla.CampoFoto)
lcFileFoto=FORCEPATH(lcName_Foto , lcFolder_Fotos)
 
lcEndMessage="El archivo "+lcFileFoto+" no estaba en "+lcFolder_fotos
 
TRY
	LOCAL loex as Exception
	loFso=NEWOBJECT("Scripting.fileSystemObject")
 
	IF loFso.fileExists(lcFileFoto)
		lnPass=MESSAGEBOX("Desea mover "+LOWER(lcfileFoto) +CHR(13);
				+"a la carpeta "+lcFolder_Hist,4,"Mensaje")
 
		IF lnPass = 6
			IF !loFso.FileExists( FORCEPATH(lcName_foto , lcfolder_Hist ) )
				loFso.MoveFile( lcFilefoto , ADDBS(lcFolder_Hist) )
				lcEndMessage="El archivo "+lcName_Foto+" fué movido a "+lcFolder_Hist
			ELSE
				loFso.DeleteFile( lcFileFoto)
				lcEndMessage="El archivo "+lcName_Foto+" fué quitado de "+lcFolder_Fotos
			ENDIF
		ENDIF
	ENDIF
CATCH TO loEx
	loEx.UserValue=PROGRAM()
	lcEndMessage="Se ha producido un error"+CHR(13);
		+"Error "+TRANSFORM(loex.ErrorNo)+CHR(13);
		+"Linea "+TRANSFORM(loex.LineNo)+CHR(13);
		+"Mensaje "+loex.Message
 
FINALLY
	loFso=null
	MESSAGEBOX(lcEndMessage)
ENDTRY
 
*</ButtonClick>
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
Imágen de perfil de CHEVOSANT

COPIAR ARCHIVO

Publicado por CHEVOSANT eusebiosantana@hotmail.com (31 intervenciones) el 25/10/2014 18:50:59
Hola, amigo Fidel Jose!
Gracias por esa gran ayuda que me ha brindado. Ese es el código que necesitaba. Ya pude solventar el problema.
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
Imágen de perfil de CHEVOSANT

COPIAR ARCHIVO

Publicado por CHEVOSANT (31 intervenciones) el 28/10/2014 06:13:51
Gracias, amigo por la ayuda prestada.

Para finalizar el programa que estoy haciendo solo me falta lo siguiente:

Tengo problemas con un listado. Tengo que mandar a la impresora un listado el cual debería mostrar solo los registros de un campo "SOCIOS.MONTO" que sean igual o mayor que 1. Los registros se imprimen, pero el problema es que necesito enviar un aviso indicando que no se encontraron socios cuya deuda sea igual o mayor que 1. (No me sale)
Imprimo los registros con esto: REPORT FORM soc_inf1_4.frx TO PRINTER FOR socios.monto >= 1

Por supuesto en otro botón indicar lo contrario: Cuando el socio tenga una deuda que sea menor o igual que 0, enviar el mensaje si la tabla no tiene registros que cumplan con ese objetivo.

Agradecería esa tremenda ayuda. Gracias.
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

COPIAR ARCHIVO

Publicado por Fidel José (558 intervenciones) el 28/10/2014 13:53:51
Mejor crea un cursor y arma el frx con el cursor generado.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * FROM SOCIOS WHERE !EMPTY(MONTO) TO curDeuda
if _tally=0
       Messagebox("No hay socios con deuda")
       return
endif
 
 
SELECT * from SOCIOS WHERE EMPTY(monto) to curDeuda
if _tally=0
      messagebox("Todos los socios deben algo")
      return
endif
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de CHEVOSANT

COPIAR ARCHIVO

Publicado por CHEVOSANT eusebiosantana@hotmail.com (31 intervenciones) el 29/10/2014 16:26:01
Hola, amigo!
Gracias de nuevo por su colaboración. El código resultó excelente.
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