Cerrar un archivo abierto con GETPICT() FOXPRO

Tengo una aplicación en visual foxpro, en dicha aplicación tengo un formulario donde registro al personal de la empresa. Entre los datos del personal se encuentra una imagen tipo carnet que guardo en un directorio llamado fotos
el problema es el siguiente. Digamos que necesitamos actualizar la foto de PEDRO PEREZ, por que la que tenemos ya es muy vieja, entonces procedo a seleccionar una foto nueva y el sistema va y copia la imagen al directorio FOTOS hasta aquí todo bien, pero si de casualidad deseo de nuevo actualizar la foto sin haber cerrado el sistema el foxpro me manda el Siguiente error. ERROR 3 El archivo ya esta en uso.
Paso 1) ubico al la foto en mi computadora capturo la foto usando la función GETPiCT()
Paso 2) creo una variable con la ruta del directorio donde deseo guardar mi foto y con el nombre de la foto como la deseo guardar
Paso 3) Copio la imagen del Paso 1 al directorio del Paso 2
Ejemplo
Paso1: Seleccciono la Imagen desde mis documentos la imagen se llama pedro perez.jpg
Paso2: creo una variable con el nombre del DIrectorio y el nombre de Imagen como deseo que se guarde
Variable ="C:\sistema\Fotos\"+Alltrim(Thisform.TxtIdTrabajador.Value)+".jpg"
Paso3: Copio la Imagen a mi directorio Copy File ("&arichivo1") to &archivo2
este es el codigo
xfoto = GETPICT()
Thisform.TxtFoto.Value = xfoto
Thisform.image1.Picture = xfoto
archivo1 = Thisform.TxtFoto.Value
archivo2 = "C:\Sistema\FOTOS\"+ALLTRIM(Thisform.TxtIdTrabajador.Value)+".jpg"
COPY FILE ("&archivo1") to &archivo2

Respuesta
1

Pienso que el problema no está en éstas líneas de código que indicas sino en donde muestras la foto en el formulario... ¿cómo o que procedimiento usas para mostrar la foto guardada?.

¡Gracias!  por tu ayuda termine resolviendo el problema de esta forma

archivo1 = Thisform.TxtFoto.Value
archivo2 = "C:\Sistema\FOTOS\"+ALLTRIM(Thisform.TxtIdTrabajador.Value)+".jpg"

Thisform.Image1.Picture = ""  && Limpiar el control previo a copiar la imagen para liberar la imagen
COPY FILE ("&archivo1") to &archivo2

CLEAR RESOURCES    && limpio la memoria Ram las imagenes cargadas

Thisform.Imagen1.Picture = &archivo2

1 respuesta más de otro experto

Respuesta
1

Recomiendo que antes de asignar la dirección de la foto mediante .value y .picture, procedas con el COPY FILE, concluido este procedimiento recién debieras asignar la nueva dirección. Ello debe evitar que te muestre que el archivo esta en uso.

xfoto = GETPICT()

archivo1 = xfoto
archivo2 = "C:\Sistema\FOTOS\"+ALLTRIM(Thisform.TxtIdTrabajador.Value)+".jpg"

COPY FILE ("&archivo1") to &archivo2

Thisform.TxtFoto.Value = archivo2 
Thisform.image1.Picture = archivo2

Adiciono, cuando inicies el procedimiento de cambio de foto, recomiendo asignes a .value y .picture, la dirección de una imagen temporal, por ejemplo "...\mireloj.jpg" u otro que indique que esta en proceso el cambio, con ello desvinculas la dirección de la imagen que quieres cambiar y podrás operar sin problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas