Page 1 of 1

Copiar Ficheros entre Carpetas

Posted: Tue Nov 25, 2008 1:10 pm
by cgomez
Hola Esteban, mi nombre es Carmen

he probado lo q tu me has puesto en mi funcion de la siguiente forma

static function SeleccionarFicheroPDF(mant)
local cFicheroOrigen
local cDirectorio:= "C:\" + "Productos" + "\" + alltrim((Mant:ctbfpdb)->codpdt)
cFicheroOrigen:=cGetFile( "C:\" + "PDF" + "\*.pdf")
if !lIsDir( cDirectorio )
MakeDir( cDirectorio )
end if
COPY FILE (cFicheroOrigen) TO (cDirectorio)
return

me da el siguiente error

(DOS Error 5) BASE/2012 Create error:C:\Productos\P110767

la idea es poder elegir de la carpeta PDF el fichero y al seleccionar dicho fichero(con dobleclick,por ej.) me lo copie a la carpeta q me crea q en este caso es P110767

gracias y un saludo

Posted: Tue Nov 25, 2008 1:40 pm
by jrestojeda
Carmen

COPY FILE (cFicheroOrigen) TO (cDirectorio)

No está bien asi.

cFecheroOrigen debe contener tambien el Path con el nombre del archivo, del mismo modo cDirectorio debe tener el Path destino con el archivo destino.

Ejemplo: Si el Archivo es "MiFile.txt" y está en "C:\CARPETA" cFicheroOrigen debe tener todo cargado, "C:\CARPETA\MiFile.txt"

Prueba MsgInfo(cFicheroOrigen) a ver que es lo que contiene la variable.

Yo en ese caso lo hago asi:

Code: Select all

cOrigen:="C:\CARPETA"

COPY FILE (cOrigen"\MiFile.txt")  TO (cDirectorio+"\MiFile.txt") 
Espero haber sido más claro esta vez.

Carmen por favor responde sobre este mismo post, asi no se generan varios post del mismo tema. De esta foema es más fácil llevar el hilo del post.
Saludos.

Posted: Tue Nov 25, 2008 4:22 pm
by cgomez
Esteban

la solucion para q me lo copie ha sido esta

COPY FILE (cFicheroOrigen) TO (cDirectorio+"\prueba.pdf")

eso solucionado, pero claro me copia ese fichero en concreto(prueba.pdf), necesitaria de la ruta de cFicheroOrigen sacar el nombre del fichero.pdf y me lo copiara en la carpeta destino, tal q asi:

COPY FILE (cFicheroOrigen) TO (cDirectorio+"\nombrefichero.pdf")

Posted: Tue Nov 25, 2008 4:31 pm
by jrestojeda
Carmen,
Mira esto:

Code: Select all

// SELECCIONO DEL DISCO UN ARCHIVO BMP //
Function SelFile(oBmp,vFot,oDlg1)
vFot:=cGetFile32("BMP   | *.Bmp","Seleccione un archivo",1,,,.t.)
oBmp:SetBMP("",vFot)
oBmp:Reload("",vFot)
oBmp:Refresh()
oDlg1:Update()
oDlg1:Refresh()
Return nil
//
La función es llamada de la siguiente manera en un botón:

Code: Select all

   REDEFINE SBUTTON Btn3 ID 202 OF oDlg1 RESOURCE "ACEPTAR" BRUSH oBrush1;
      ACTION  SelFile(oBmp,@vFot,oDlg1);
      PROMPT "Imagen" TEXT 4 W97;
      TOOLTIP "Cargar una imagen" FONT oFont1
"vFot" es la variable que contiene el nombre del archivo.

Prueba con este ejemplo para armar lo que necesitas.
Espero te sirva.
Saludos, Esteban.

Posted: Tue Nov 25, 2008 5:13 pm
by cgomez
Esteban

ya me lo copia perfectamente, pero no logro borrarlo de la carpeta origen
la funcion ha quedado asi
static function SeleccionarFicheroPDF(mant)
local cFicheroOrigen
local cFicheroDestino:="C:\" + "Productos" + "\" + alltrim((Mant:ctbfpdb)->codpdt)
local cNombreFichero:=""
/// Seleccionamos Fichero Origen
cFicheroOrigen:=cGetFile32("C:\" + "PDF" + "\*.pdf", "Seleccione un archivo",1,,,.t.)
/// Creamos la carpeta si no existe
if !lIsDir( cFicheroDestino )
MakeDir( cFicheroDestino )
end if
///Guardamos el nombre del Fichero
cNombreFichero:=substr(cFicheroOrigen,len(alltrim( "C:\" + "PDF"+"\" )))

///Copiamos el fichero en la carpeta de destino
COPY FILE (cFicheroOrigen) TO (cFicheroDestino+cNombreFichero)
return

Posted: Tue Nov 25, 2008 5:27 pm
by jrestojeda
Carmen,
Para borrarlo usa la función Ferase(cFicheroOrigen)
Donde cFicheroOrigen contiene todo el Path + en nombre del archivo.
Esta función Ferase(Archivo) a mi me funciona perfecto para borrar un archivo.
En el caso que no te funcione tambien prueba Ferase(&cFicheroOrigen).

Nota:

Code: Select all

local cFicheroDestino:="C:\" + "Productos" + "\" + alltrim((Mant:ctbfpdb)->codpdt) 
local cNombreFichero:="" 
/// Seleccionamos Fichero Origen 
cFicheroOrigen:=cGetFile32("C:\" + "PDF" + "\*.pdf", "Seleccione un archivo",1,,,.t.) 
Quedaría quizá más prolijo escribirlo asi:

Code: Select all

local cFicheroDestino:=CurDrive()+ ":\Productos\" + alltrim((Mant:ctbfpdb)->codpdt) 
local cNombreFichero:="" 
/// Seleccionamos Fichero Origen 
cFicheroOrigen:=cGetFile32(CurDrive()+ ":\PDF\*.pdf", "Seleccione un archivo",1,,,.t.) 
De esta forma no forzamos la letra del disco "C" y lo haces más flexible.
CurDrive() es la función que devuelve la letra del disco sobre el cual se está trabajando.

Espero te sirva.
Saludos, Esteban.

Posted: Tue Nov 25, 2008 5:35 pm
by cgomez
Hola Esteban

ya me lo hace todo!!!!! me lo copia y me lo borra de la carpeta origen.

muchas gracias por tu ayuda,seguire preguntandote,jeje

Un saludo

Posted: Tue Nov 25, 2008 5:46 pm
by jrestojeda
No hay de que...
Para eso estamos, yo personalmente recibí muchísima ayuda en este foro.
Saludos, desde Argentina, Esteban.