Importar txt en la nube


([N2] Guille. Vecchio Orta) #1

Luego de darne la cabeza contra la pared sin saber como resolverlo, recurro a Uds. con el siguiente problema:

Tengo un proceso que realiza la importación de los registros contenidos en un archivo txt, a una tabla que está en un vServer en la nube. Hasta acá, ningún problema aparente. Aparece una ventana para seleccionar el txt, y luego se realiza la importación.

Ahora bien, si subo ese archivo txt al servidor y ejecuto el mismo proceso, no me importa ningún registro pero tampoco me da ningún mensaje de error. El único cambio realizado en el proceso es la eliminación de la ventana para seleccionar el txt y el cambio de ruta, que pasa de ser una variable a ser: "datos/archivos/archivo.txt".

Como dato adicional les cuento que puedo subir, descargar y eliminar archivos del servidor sin problemas.

Gracias por adelantado,


([N4] velavisual) #2

@guille
.
Prueba de la forma siguiente y nos cuentas:
.
.
homePath() + "/Velneo/datos/archivos/archivo.txt"
.
.
saludos
Antonio Vela
http://www.velavisual.com


([N2] Guille. Vecchio Orta) #3

Antonio:

Gracias por tu sugerencia. He probado pero no he notado cambios ni mensaje de error.

Saludos,


([N1] Pepeto) #4

Utilizas una variable global para la ruta del fichero?

Si es asi, deberias llamar a un proceso en 3 plano con el manejador de objetos y pasar la ruta a una variable local a traves del manejador.

Si no es asi, al menos, podias indicar como lo haces para poder ayudarte.

un saludo
José Luis
http://www.ascsl.com


([N2] Guille. Vecchio Orta) #5

Adjunto imagen con el proceso que funciona.

A este proceso:
- le deshabilito la linea de selección de fichero
- le modifico la linea de abrir fichero y donde dice Senda pongo "datos/archivos/archivo.txt"

Cuando ejecuto este último proceso, no sucede nada y no me da ningún mensaje de error.

Gracias por las colaboraciones,

[attachment=22582,1746]


([N1] Pepeto) #6

Entendido,

Y el fichero de texto lo has subido al servidor,
Y ejecutas el proceso en primer plano desde el cliente, donde el fichero no existe en la ruta que pasas en la variable.

Como he dicho en mi respuesta anterior, debes crear un nuevo proceso para ejecutar la importacion en 3º plano, y llamar al proceso de importacion con el manejador de objetos, pasandole la ruta en una variable local.

Has usado el manejador de objetos en alguna ocasion?
http://velneo.es/info_v7_78_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proceso/comandos/interfaz/objeto_grupo_de_comandos

un saludo
José Luis
http://www.ascsl.com


([N2] Guille. Vecchio Orta) #7

José Luis:

No he utilizado aún el manejador de objetos, pero según creo entender, los pasos serían los siguientes:

1- Creo un nuevo proceso
2- Creo el manejador de objetos (que apunta al proceso de importación original)
3- Seteo el valor de la variable SENDA como "datos/archivos/archivo.txt"
4- Disparo el objeto creado en el punto 2 en tercer plano.

Dime, por favor, si mi resumen no está errado. Acabo de hacer una prueba rápida y no sucede nada. De todas maneras, y luego de varias horas, me alejaré de la computadora y volveré a probar mañana con la cabeza fresca.

Nuevamente gracias !!


([N1] Pepeto) #8

Correcto,
y donde antes ejecutabas el proceso de la imagen, ahora deberas llamar al nuevo proceso.

un saludo
José Luis
http://www.ascsl.com


([N1] Velasco) #9

Buenas guille.vecchio.orta

También puedes hacerlo evitando tener que subir archivos al servidor.

En un proceso en primer plano lee el archivo. Mete todo ese archivo en una variable local. Puedes usar separadores para campos y otro distinto para filas. Yo suelo usar "|" para separar los campos y "#" para separar las filas.

Después con el manejador de objetos lanza un proceso en tercer plano donde le pasarás esa variable local y ahí irás separando por filas y campos los valores de la variable para ir dando las altas.

Así lograrás que vaya rápido y te evitas tener que andar subiendo archivos al servidor.

Un saludo.


([N2] Guille. Vecchio Orta) #10

A los que me dejaron sugerencias, les digo que aún no las he probado. Apenas lo haga dejaré los comentarios correspondientes en cada hilo a fin de que le sea de utilidad al resto.

Con respecto al proceso de importación posteado en este hilo y teniendo en cuenta la transaccionabilidad del servidor, si ocurriese algún error dentro del "For", ¿se deshacen todas las lineas importadas hasta ese momento o las líneas que importó se mantienen?

Suponiendo que se deshagan todas las operaciones contenidas en dicho proceso, ¿como lanzo un proceso tantas veces como registros tenga con el fin de que, si ocurriese algún error, no se perdiera toda la operación.

Nuevamente gracias y perdón por la catarata de consultas,


([N2] Guille. Vecchio Orta) #11

No logro darme cuenta en que me estoy equivocando pero sigo sin poder hacer funcionar el proceso de importación, teniendo el archivo a importar en el servidor.

La primera imagen corresponde al proceso local que funciona sin problemas, la segunda es el mismo proceso pero modificado para funcionar en el servidor y la tercera es la del proceso que lanza la importación en tercer plano

Gracias por adelantado,

[attachment=22601,1747] [attachment=22601,1748] [attachment=22601,1749]


([N1] Pepeto) #12

En la ultima imagen (donde disparas el manejador de objetos), creo que debes poner:

Set variable local de objeto ( Objeto, RUTA, homePath() + "/Velneo/datos/ ......" )

un saludo
José Luis
http://www.ascsl.com


([N2] Guille. Vecchio Orta) #13

Problema resuelto.

Tal como sugirieron Antonio y José Luis, uno de los problemas era que me faltaba concatenar la función HomePath() al resto de la senda. El otro inconveniente, y por el cual no me funcionaba la correción anterior, era que la asignación de la variable ruta se hacia en primer plano, previo a lanzar el objeto en tercer plano, lo que provocaba que el valor que devolvia HomePath() era el que correspondía a la terminal.

Habiendo subsanado esto no fue necesario crear un manejador de objetos, sino solamente introducir la senda en el proceso principal y lo lanzarlo en tercer plano mediante otro proceso.

Espero que la explicación haya quedado entendible. La idea es que sirva como antecedente por si a alguien mas le ocurre lo mismo.

Gracias a todos por los aportes!!