cargar imagen a un archivo DBF y copiar archivo JPG o PNG a carpeta

Visto 620 veces
Saltar al primer mensaje no leído

Jose Luis Navas

no leída,
9 ago 2017, 19:23:289/8/17
a Comunidad de Visual Foxpro en Español
muy buenas tardes, por favor podría alguien ayudarme?
la verdad es que soy muy nuevo en "Visual Fox Pro 9"   ...es la version que estoy usando

tengo un form llamado "configurazion", y desde alli quisiera modificar (cargar o cambiar) el logo que se encuentra en otro form llamado "menu_clasic"

en "configurazion" tengo colocada una imagen "Image3"
quisiera que al dar clic en "Image3" se habra la ventana de cargar archivo
(seleccionarla imagen) y sea cargada a un database "mantenimiento.dbf" (pero no la imagen en si) sino solo la trayectoria.
que tambien haga una copia del archivo (sea jpg o png) en el disco "C:\FOTOS" agregando un numero diferencial al nombre, para cada archivo

mientras que en "menu_clasic" tengo un "Command24"
quisiera que  cargue la imagen precargada desde "configurazion"

esta es la ruta del command24:
thisform.Cont1.Command24.picture= mantenimiento.logo

he tratado de hacerlo. pero teniendo idea  de como hacerlo he googleado pero muchos muestran como hacer pero son todos diferentes :(


solicito vuestra ayuda.
muchas gracias de antemano

ZeRoberto

no leída,
9 ago 2017, 21:48:079/8/17
a publicesvfoxpro
Tienes que usar esto:

Procdure Click
    lcArchivoImage = GetPict()
    lcNuevoNombre = "X:\CARPETA DE IMAGENES COMPARTIDAS\1234.JPG"
    Copy File lcArchivoImage To lcNuevoNombre
EndProc

ZeRoberto

no leída,
9 ago 2017, 22:32:169/8/17
a publicesvfoxpro
Perdon hay cosas que me olvide poner

Procdure Click
    lcArchivoImage = GetPict()
    lcNuevoArchivo = "X:\CARPETA DE IMAGENES COMPARTIDAS\1234.JPG"
    Copy File (lcArchivoImage) To (lcNuevoArchivo)
    This.Picture = lcNuevoArchivo
    Replace Archivo With lcNuevoArchivo
EndProc

Saludos

Jose Luis Navas

no leída,
10 ago 2017, 12:32:2210/8/17
a Comunidad de Visual Foxpro en Español
he provado con tu codigo pero modificado asi:
googleando he encontrado varios (scripts) 
uniendo todas las ideas!   ...me resulta esto:

local lcFoto as character 
lcFoto=getpic("jpg,bmp") 
if ! empty(lcFoto) then 
select mantenimiento.logo 
COPY FILE (lcFoto) TO "C:\FOTOS\"+nro 
replace foto with nro 
thisform.Cont1.Command24.picture= lcFoto 
thisform.refresh 
endif


pero no logro que copie el nuevo directorio de la foto al DBF (mantenimiento.logo)
me da dos errores:
  --  no encuentra la variable "foto"
  --  no encentra la variable "nro"

como podría hacer ??

ZeRoberto

no leída,
10 ago 2017, 12:51:1010/8/17
a publicesvfoxpro
Seria algo asi, bueno suponiendo que trabajas con el vfp9

Local lcFoto
lcFoto = GetPic("jpg,bmp") 
If !Empty(lcFoto) Then 
   lcNuevo = ForcePath(JustFName(lcFoto), "C:\Fotos")
   Select mantenimiento.logo 
   Copy File (lcFoto) To (lcNuevo)
   Replace Foto With lcNuevo 
   Thisform.Cont1.Command24.picture = lcNuevo
   Thisform.refresh()
EndIf


Saludos

Jose Luis Navas

no leída,
10 ago 2017, 13:28:1110/8/17
a Comunidad de Visual Foxpro en Español
si, uso la version 9. osea visual fox pro 9
prové tu codigo. y me dá 3 errores.

1) "sintaxis no encontrada 10"

2) "Numero de informe 1102. No se puede crear el archivo c:\fotos\logo.jpg"

3) "Numero de informe 12. No se encuentra la variable FOTO"

alguna idea ??

ZeRoberto

no leída,
10 ago 2017, 16:58:3110/8/17
a publicesvfoxpro
Que version de windows usas?

Deberías mostrar en que linea te marca el error

1) No se

2) Puede ser porque no tienes permiso de escritura para esa carpeta

3) En tu tabla mantenimiento no tienes el la columna foto

Saludos

Jose Luis Navas

no leída,
10 ago 2017, 19:04:1110/8/17
a Comunidad de Visual Foxpro en Español
1) estoy usando Windows 10 y no muestra linea de error
2) ahora he cambiado a la ruta de la aplicacion. (no lo puse antes porque no la conocia)
3)en la tabla de mantenimiento tengo la columna "logo"

estube revisando la ayuda de VFP9 y parece que no se puede hacer: "Copy File (lcFoto) To (lcNuevo)"   ...pues la verdad no veo que haya la opcion "COPY FILE" (ver imagen)
talvez podamos usar: "COPY TO ..."    ...pero...como se hace ?  :(


dir_foto = '"'+dir_inicial+'\'+m.empresa+'\IMAGENES"'

Local lcFoto
lcFoto = GetPic("jpg,bmp") 
If !Empty(lcFoto) Then 
   lcNuevo = ForcePath(JustFName(lcFoto), "C:\Fotos")
   Select mantenimiento.logo 
   Copy File (lcFoto) To (lcNuevo)
   Replace Foto With lcNuevo 
   Thisform.Cont1.foto.picture = lcNuevo
   Thisform.refresh()
EndIf

como puedes ver, he  logrado "escarvar" esas variables 
-   +dir_inicial+
-   +m.empresa+

pues las he metido juntas para crear la variable "dir_foto" pero ahora no se como usar esa variable

he hecho esta prueba:
b = '"'+dir_inicial+'\'+m.empresa+'\IMAGENES"'
thisform.label5.Caption = b
al parecer esta bien ya que muestra la direccion correcta de la carpeta final

....esperando que sea el pulsante "Command24" que da problemas lo he cambiado por una imagen con "NAME = foto"

Jose Luis Navas

no leída,
10 ago 2017, 19:28:2710/8/17
a Comunidad de Visual Foxpro en Español
disculpa la doble publicacion. es que estube haciendo pruebas y ya no entendia nada de nada.  :)
queria decir que:


no me sale ninguna linea de error (ver imagen)
justo despues de seleccionar la imagen


tenias razon! he cambiadopor esto:
b = '"'+dir_inicial+'\'+m.empresa+'\IMAGENES"'

local lcFoto as character 
lcFoto=getpic("jpg,bmp") 
if !empty(lcFoto) then 
select mantenimiento.logo 
COPY FILE (lcFoto) TO b
replace mantenimiento.logo with lcFoto 
thisform.Cont1.foto.picture= lcFoto 
thisform.refresh 
ENDIF

ahora me carga la direccion de la imagen en el database "mantenimiento.logo"
por otro lado resulto otro problema.... no me carga en el database la direccion correcta.

ejemplo:
deberia cargar:
dir_inicial\empresa\IMAGENES\logo.jpg
pero carga:
C:\Users\Nombre_Usuario\Escritorio\logo.jpg

ZeRoberto

no leída,
10 ago 2017, 21:16:4210/8/17
a publicesvfoxpro
Aca pues

replace mantenimiento.logo with b
thisform.Cont1.foto.picture= b

Jose Luis Navas

no leída,
10 ago 2017, 21:40:1410/8/17
a Comunidad de Visual Foxpro en Español
googleando encontré que el ERROR 10 se debe a qe seleccionas el database + el campo

me fnciona perfectamente asi:
b = '"'+dir_inicial+'\'+m.empresa+'\IMG\LOGO\logo.jpg"'

local lcFoto as character 
lcFoto=getpic("jpg,bmp") 
if !empty(lcFoto) then 
select mantenimiento
COPY FILE (lcFoto) TO (b)
replace mantenimiento.logo with (b) 
thisform.Cont1.foto.picture= (b) 
thisform.refresh 
ENDIF

gracias! y dejo la respesta para algun interesado qe tenga el mismo problema

Fidel Charny

no leída,
11 ago 2017, 8:03:1311/8/17
a Comunidad de Visual Foxpro en Español
Esto se vería un poco mejor así
LOCAL lcFoto as character,;
    lcFolderSource
,;
    lcFolderTarget
,;
    lcFoto_Nueva
,;
    lcFolderIni
,;
    oWsh
as Object

* Se suponen definidas las variables (para un procedure deberían ser parámetros)
* Empresa y Dir_Inicial

*<Directorio de búsqueda>
   
* Se puede indicar cualquier otra ruta de busqueda
   
* para el ejemplo tomo "Documents" del usuario actual.
    oWsh
= CREATEOBJECT("WScript.Shell")
    lcFolderSource
= oWsh.SpecialFolders("MyDocuments")
    owsh
=null
*</Directorio de búsqueda>
lcFolderIni
= FULLPATH("")

*<Directorio de destino>
    lcFolderTarget
= ADDBS(dir_Inicial);
       
+ADDBS(m.Empresa);
       
+ADDBS("img");
       
+ADDBS("logo")
   
   
* Verificar si existe, si no, crearlo    
    IF
!DIRECTORY(m.lcFolderTarget)
        MD
&lcFolderTarget
    ENDIF
*</Directorio de destino>    

*<Buscar Imagen>
    CD
(m.lcFolderSource)
    lcFoto
=GETPICT("jpg,bmp")
    CD
(m.lcFolderIni)
*</Buscar Imagen>


IF
!EMPTY(m.lcfoto)
    lcFoto_Nueva
= ADDBS(m.lcFolderTarget);
       
+"logo";
       
+".";
       
+LOWER(JUSTEXT(m.lcFoto))

    COPY FILE
(m.lcFoto) TO (m.lcFoto_Nueva)

   
* Reemplazo en la tabla.
   
* Conviene seleccionar el area de trabajo
   
* Si no se quiere seleccionar el área, la notación correcta sería
   
*     REPLACE logo with m.lcFoto_Nueva IN Mantenimiento
    SELECT mantenimiento
    replace logo WITH m
.lcFoto_Nueva

    thisform
.Cont1.foto.picture= m.lcFoto_Nueva
ENDIF

ZeRoberto

no leída,
11 ago 2017, 8:05:3011/8/17
a publicesvfoxpro
Fidel Mantenimiento creo que es la base de datos y Logo la tabla.

Saludos

Fidel Charny

no leída,
11 ago 2017, 10:50:3411/8/17
a Comunidad de Visual Foxpro en Español
La verdad ZeRoberto, es que siendo viernes todo es posible.
Si es así, no sé qué tiene que hacer el nombre de la dbc en un comando REPLACE.
Si en realidad la tabla se llama LOGO y el campo se llama FOTO (sobre nombres no hay nada definitivamente escrito) debería ser
REPLACE FOTO WITH lcFoto_Nueva IN LOGO

o
SELECT LOGO
REPLACE FOTO WITH lcFoto_Nueva

Y si no, que José Luis diga qué tiene, asi no escribo más pavadas.

Carlos Miguel FARIAS

no leída,
11 ago 2017, 11:01:0911/8/17
a Grupo Fox
Fidel, es inadmisible escribir pavadas hoy, hoy corresponde a chistes.
Ya que no hay nada por el momento.
   Uno muy tonto.
      En Japones
         Mujer = Nami
         exMujer = Tsunami

Fidel Charny

no leída,
11 ago 2017, 11:11:5211/8/17
a Comunidad de Visual Foxpro en Español
Realmente Miguel!! suele ser un tsunami!. Ja, ja

Roberto Tello - RT & Asoc

no leída,
11 ago 2017, 17:02:4411/8/17
a publice...@googlegroups.com

Si no son tantas imagenes, yo las grabo en un campo blob y las extraigo cada vez que las necesito con FILETOSTR.-

Siempre que no sean muchas las imagenes.-

Saludos.-

Roberto.-

--
Responder a todos
Responder al autor
Reenviar
0 mensajes nuevos