elegir varios archivos con getfile()

3,113 views
Skip to first unread message

gatito

unread,
Jun 1, 2010, 9:55:16 AM6/1/10
to Comunidad de Visual Foxpro en Español
hola amigos
mi pregunta es como puede seleccionar varios archivos de excel con la
funcion getfile()
y luego tener todos esos nombres de archivos en un campo de una tabla
o una variable espero me puedan ayudar con esto desde ya muchas
gracias.

Jaime H. Díaz G.

unread,
Jun 2, 2010, 9:29:14 AM6/2/10
to publice...@googlegroups.com
Buenos días. desafortunadamente GetFile() solamente devuelve el nombre de un archivo a la vez; por lo cual recomiendo usar un ciclo para leer los archivos e ir guardándolos en una tabla. El sisguiente es un ejemplo básico que puedes estudiar y mejorar:
do while .t.
  lcNomArch=GETFILE('XLS', Abrir archivo', 'Examinar', 1, 'Examinar o Crear')
  * se presume creada y abierta la tabla ArchExcel
  sele ArchExcel
  append blank
  replace ruta with lcNomArch
  sigue=messaegbox('Desea abrir más archivos',4+32+256,'CONFIRME')
  If sigue=7
    exit
  endif
enddo
 
Suerte...!
 
 

 

Nilton CPM

unread,
Jun 2, 2010, 9:54:33 AM6/2/10
to publice...@googlegroups.com
Primeiro carregue a classe ...\ffc\_System.vcx
 
 
.cdarquivos.ctitlebartext = "Selecione os Arquivos"
.cdarquivos.clearfilters()
.cdarquivos.nfilecount = 0
.cdarquivos.lallowmultiselect = .T.
.cdarquivos.aFilterList[1,1] = [Todos (*.*)]
.cdarquivos.aFilterList[1,2] = [*.*;]
.cdarquivos.addfilter([Documentos (*.jpg, *.txt, *.doc, *.xls, *.html, *.pdf)], [*.jpg;*.txt;*.Doc;*.Xls;*.Html;*.Pdf;])
 
.cdarquivos.showdialog()
If (.cdarquivos.nfilecount > 0)
For nN_A_Sel = 1 To .cdarquivos.nfilecount
cNm_Arquivo =
Alltrim(Addbs(.cdarquivos.cfilepath) + .cdarquivos.afilenames[1, nN_A_Sel])
...
....
.....

 

Com isso você consegue selecionar mais de um arquivo.

Luis Mata

unread,
Jun 2, 2010, 10:01:47 AM6/2/10
to publice...@googlegroups.com
Y el ADIR() no aplica para este caso?
 
Luis
----- Original Message -----
Sent: Wednesday, June 02, 2010 8:29 AM
Subject: Re: [vfp] elegir varios archivos con getfile()

marcelobuenosaires

unread,
Jun 2, 2010, 5:07:19 PM6/2/10
to publice...@googlegroups.com
Hola

Tenes que pedir todos los archivos
o filtrar los que quieras (.xls, .dbf, etc.)

y meterlos en un GRID
Hay podes seleccionar varios

Saludos

Marcelo
Buenos Aires - Argentina

_________

gatito escribi�:

JESUS ALBERTO SANCHEZ SARABIA

unread,
Jun 2, 2010, 5:47:37 PM6/2/10
to publice...@googlegroups.com

FYI

No, la función GETFILES() no es muy eficiente para estos casos, es mejor usar las herramientas que nos proporciona
el Sistema Operativo WINDOWS a traves de la interfase de programacion de Visual Fox:

*-- Objetos de Windows XP, los cuales están disponibles desde la interfase operativa de Visual Foxpro:
oDlg= Createobject("userAccounts.commonDialog.1")


esta actividad es una muy solicitada por los usuarios, sobre todo cuando quieren comunicar multiples entregas a PROVEEDORES
y/o CLIENTES, asi que le comparto una funcion que escribí hace algun tiempo y que ahora podrá servir a todos mis colegas para
especificamente OPERAR CON SELECCIONES DE ARCHIVOS MULTIPLES, de cualquier tipo, en el programa estoy especificando
ARCHIVOS de TIPO [PRG y VCX], pero ustedes pueden modificar este codigo para usarlo como mejor les convenga.

Espero que disfruten y aprovechen mi humilde aportacion, lo cual hago con mucho gusto.

NOTA:
Para visualizar el codigo en accion, ejecuten en la linea de comando: =Multiple()
** para implantar la funcion solo Copien el cuerpo de la Función en su libreria de procedimientos, compilar y Voila !!!
el código correrá sin problema, bajo Sistemas Operativos XP y/o Windows Server 2003, no lo he probado con
Windows Vista ni con Windows 7, pero no creo que haya problema.

Saludos
Atentamente
Jesus Alberto Sanchez Sarabia
HP Enterprise Services (APPS)
Mexico, D.F.

________________________________________
De: publice...@googlegroups.com [publice...@googlegroups.com]
Enviado el: miércoles, 02 de junio de 2010 04:07 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] elegir varios archivos con getfile()

Hola

Tenes que pedir todos los archivos
o filtrar los que quieras (.xls, .dbf, etc.)

y meterlos en un GRID
Hay podes seleccionar varios

Saludos

Marcelo
Buenos Aires - Argentina

_________

gatito escribió:

Multiple.PRG

Julio Rossi

unread,
Jun 2, 2010, 6:04:15 PM6/2/10
to publice...@googlegroups.com
Antes que nada un  gracias por el aporte Jesus Alberto pero aparentemente no funciona del todo bien.

Para Windows 7 Ultimate y Enterprise aparentemente no funciona.
Se obtiene:



Un saludo cordial.
   Julio Rossi
    VFP9 - SP2
WINDOWS 7 ULTIMATE



JESUS ALBERTO SANCHEZ SARABIA escribió:

Carlos Yohn (A.G.P.)

unread,
Jun 3, 2010, 3:22:03 AM6/3/10
to Comunidad de Visual Foxpro en Español
Utiliza el control 'common dialog' (mscomdlg) para seleccionar varios
archivos.



local m.nflags, m.co, m.cuantos, m.ruta, m.fichero, m.ancdefa,
m.ancpath
m.nflags = 0x00080000
m.nflags = m.nflags + 512
m.nflags = m.nflags + 4096

thisform.olecommdlog.flags = m.nflags

thisform.olecommdlog.filename = "*.*"
thisform.olecommdlog.filter = "All files (*.*)|*.*"

m.ancdefa = sys(5) + sys(2003)
m.ancpath = set("Path")
thisform.olecommdlog.showopen()
set default to (m.ancdefa)
set path to (m.ancpath)

if thisform.olecommdlog.filename = "*.*"
return
endif
m.cuantos = occurs(chr(0), thisform.olecommdlog.filename) + 1
if m.cuantos = 1
m.fichero = thisform.olecommdlog.filename
if file(m.fichero)
thisform.adjuntos.AddItem(m.fichero)
endif
else
*--- el primero es la ruta ---*
m.ruta = app._field(thisform.olecommdlog.filename, 1, chr(0))
for m.co = 2 to m.cuantos
m.fichero = app._field(thisform.olecommdlog.filename, m.co, chr(0))
m.fichero = addbs(m.ruta) + m.fichero
if file(m.fichero)
thisform.adjuntos.AddItem(m.fichero)
endif
next m.co
endif
thisform.adjuntos.Refresh()

Luis Mata

unread,
Jun 3, 2010, 6:20:31 AM6/3/10
to publice...@googlegroups.com
Mi estimado si solo quieres sacar los nombres de los archivos y guardarlos
en una tabla no tienes que complicarte tanto y puedes utilizar esto:

CREATE CURSOR misarchivos(nombre v(65), tama int, fec_crea d, hora v(15),
atributo v(55))

miarray = ADIR(mfile, '*.*')

FOR i=1 TO miarray

INSERT INTO misarchivos
values(mfile(i,1),mfile(i,2),mfile(i,3),mfile(i,4),mfile(i,5))

NEXT i

SELECT misarchivos

brow

Direcciona a la ruta donde estan tus archivos y listo.

No necesitas utilizar nada mas que una funcion propia del fox y mira todos
los datos que te da, suerte

Luis Mata

felix zelada

unread,
Jun 5, 2010, 5:51:46 PM6/5/10
to publice...@googlegroups.com


gracias amigo
muy valiosa tu ayuda

Noris Diaz

unread,
Jul 3, 2020, 11:59:48 AM7/3/20
to Comunidad de Visual Foxpro en Español
Hola, provando il codigo  esta instruccion non la entiendo.. alguien me puede ayudar, gracias



app._field
Reply all
Reply to author
Forward
0 new messages