[RESUELTO] Verificar fin de archivo de texto (eof)
[RESUELTO] Verificar fin de archivo de texto (eof)
Hola a todos en foro, soy nuevo aqui en el foro y en libreoffice, mi consulta está referida a leer un archivo de texto caracter a caracter e ir cargando esos datos en una base, pero no se como saber cuando llego al final del archivo para terminar el proceso. A la lectura la realizo como lo indica el usuario mauricio en este post https://forum.openoffice.org/es/forum/v ... =50&t=2809, desde ya muchas gracias.
Federico
Federico
Última edición por fedevi el Mar Nov 24, 2015 3:49 pm, editado 1 vez en total.
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
¿lees cada caracter y este lo cargas en una base de datos?... por mera curiosidad... ¿para que usas esto?...
Por otra parte con EasyDev: http://easydev.readthedocs.org/es/latest/
puedes leer fácilmente y de una vez cualquier archivo, procesar caracter a caracter es trivial.
Saludos
Por otra parte con EasyDev: http://easydev.readthedocs.org/es/latest/
Código: Seleccionar todo
data = util.fileOpen("/home/USER/log.txt", "r", False)
util.msgbox(data)
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
Hola mauricio, muchas gracias por responder, mi intención es realizar una impresión de etiquetas cuyos datos vienen en un archivo de texto con los campos separado por comas( codigo, precio, descripcion, etc), entonces tuve la idea de colocarlos en una base de datos para luego imprimirlos realizando un reporte, o un archivo de etiquetas de write, no tengo definido como lo haré, ya que soy nuevo en libre office, estoy buscándole la vuelta al asunto leyendo el libro "LibreOffice Basic" que baje del foro, bueno espero cualquier sugerencia, muchas gracias
Federico
Federico
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
Si vas a leer un CSV no es necesario leerlo caracter a caracter... puedes importarlo de un solo paso sin problemas... por aquí en el foro hay varios ejemplos. aunque también lo tengo planeado en EasyDev de una forma mucho más simple.fedevi escribió:leer un archivo de texto caracter a caracter
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
Si quieres probar a importar un CSV, lo he agregado a la versión de desarrollo: https://github.com/UniversoLibreMexicoA ... v2.1.0.oxt
http://easydev.readthedocs.org/en/devel ... import-csv
Saludos
http://easydev.readthedocs.org/en/devel ... import-csv
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
Hola,
Solo entro en este hilo por el tema de las etiquetas. En el enlace tienes un ejemplo para crearlas en un informe de Base, el tope son hasta nueve columnas.
Espero que te sirva.
https://forum.openoffice.org/es/forum/v ... 70&t=10503
Saludos
Solo entro en este hilo por el tema de las etiquetas. En el enlace tienes un ejemplo para crearlas en un informe de Base, el tope son hasta nueve columnas.
Espero que te sirva.
https://forum.openoffice.org/es/forum/v ... 70&t=10503
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Verificar fin de archivo de texto (eof)
muchas gracias por las respuestas, lo pruebo y les cuento que tal, un abrazo
Federico
Federico
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
mauricio, incorpore el easydev, pero no veo el procedimiento para importar el csv, y al tratar de copiar el que me sugeriste de la pagina easydev no puedo ya que no me deja escribir ni cambiar nada de las librerias, disculpame si la pregunta es medio tonta pero estoy recien arrancando y me apabulla un poco tanta información y tantas cosas que se me ocurren para hacer, RMG la próxima sigo con lo que me sugeriste, saludos
Federico
Federico
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
mauricio, deberia instalar python para poder utilizarlas? cuando en xubuntu ingreso a herramientas->macros->organizar macros solo me aparece libreoffice, en windows vi que aparece también python.
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
Código: Seleccionar todo
sudo apt-get install libreoffice-script-provider-python
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
mauricio escribió: Por otra parte con EasyDev: http://easydev.readthedocs.org/es/latest/puedes leer fácilmente y de una vez cualquier archivo, procesar caracter a caracter es trivial.Código: Seleccionar todo
data = util.fileOpen("/home/USER/log.txt", "r", False) util.msgbox(data)
mauricio, pude cargar en la variable data el archivo, con las otras librerias no doy en el clavo asi que las veré mas adelante, ahora la idea que me propones es leer los campos desde esta variable e ir asignandolos a los campos de la base?
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
No me has leido atentamente, como dije más arriba, si tienes un CSV, lo importas con una línea y tienes todo su contenido en un array:
http://easydev.readthedocs.org/en/devel ... import-csv
en el ejemplo lo mando a las celdas de la hoja de calculo, en tu caso solo tienes iterar para para determinar a que campo de tu base de datos corresponde cada valor, pero, dependiendo de tu base de datos que estes usando, tal vez se pueda enviar directamente.
http://easydev.readthedocs.org/en/devel ... import-csv
en el ejemplo lo mando a las celdas de la hoja de calculo, en tu caso solo tienes iterar para para determinar a que campo de tu base de datos corresponde cada valor, pero, dependiendo de tu base de datos que estes usando, tal vez se pueda enviar directamente.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
de vuelta, esta vez con una solución, no se si es la forma mas óptima pero funciona, me demoré ya que tuve que leer y releer el manual para comprender conceptos, bueno mauricio espero una opinión de que te parece y si está para dar el tema por resuelto, espero ser de ayuda a la comunidad, saludos
Código: Seleccionar todo
Option Explicit
Sub LeerArchivoDeTexto()
Dim co1 As Long
Dim sEAN As String
Dim sDescripcion As String
Dim sPrecioPublico As String
Dim data As String
Dim util As Object
Dim oDBC As Object
Dim oBD As Object
Dim oConexion As Object
Dim oDeclaracion As Object
Dim oResultado As Object
Dim sBaseDatos As String
Dim sSQL As String
'el nombre de la base es el que está registrado en LO
sBaseDatos = "base_eti_LO"
oDBC = createUnoService("com.sun.star.sdb.DatabaseContext")
If oDBC.hasByName( sBaseDatos ) Then
oBD = oDBC.getByName( sBaseDatos )
oConexion = oBD.getConnection("","")
oDeclaracion = oConexion.createStatement()
'borro los registros de la tabla
sSQL = "DELETE FROM tblTABLA"
oDeclaracion.executeUpdate( sSQL)
util = createUnoService("org.universolibre.EasyDev")
data = util.fileOpen("/home/fede/libreoffice/archivos de texto/archivoCSV.txt", "r", False)
'El archivo puede ser más grande pero no cabe en una variable String
'verificamos que el archivo no sea mas grande que el tipo de dato string
if len(data) < 65535 Then
´los registros o renglones del archivo tienen 80 caracteres de longitud
For co1 = 1 To Len(data) step 80
sEAN = Mid( data, co1, 12 )
sDescripcion = Mid( data, co1+13, 32 )
sPrecioPublico = Mid( data, co1+46, 8 )
'La linea de abajo es solo para verificar la carga de los datos, o sea no es necesaria para el funcionamiento
'MsgBox (sEAN & Chr(13) & sDescripcion & Chr(13) & sPrecioPublico & Chr(13) & sUnidadDeMedida & Chr(13) & sTamano & Chr(13) & sPrecioPorUnidad)
sSQL = "INSERT INTO ""CARTELES"" (""EAN"",""DESCRIPCION"",""PRECIO"") VALUES ('" & sEAN & "','" & sDescripcion & "','" & sPrecioPublico & "')"
oDeclaracion.executeUpdate( sSQL)
'sumo una posicion para considerar el caracter de salto de linea
co1 = co1+1
Next
'Cerramos las conexiones
oDeclaracion.close()
oConexion.close()
'Liberamos la memoria
oResultado = Nothing
oDeclaracion = Nothing
oConexion = Nothing
MsgBox "El Proceso de carga de datos terminó correctamente."
Else
MsgBox "Archivo demasiado grande"
End If
Else
MsgBox "La base de datos no está registrada. Verifique"
End If 'oDBC
End Sub
OpenOffice 4.1.2 - Windows 7
Re: Verificar fin de archivo de texto (eof)
¿Tienes un archivo CSV o un archivo con registros de ancho fijo?, en el primer caso no se necesario uses fileOpen, si no: http://easydev.readthedocs.org/en/lates ... import-csv
para el caso de ancho fijo, puedes devolver los datos en un array, con lo que eliminas el problemas del tamaño de un string:
por otra parte, este es un buen ejemplo para agregar a EasyDev, se me ocurre de primera instancia:
con lo que podríamos importar a una base de datos, con una línea...
Saludos
P.D. Si para ti consideras que esta resuelto, con eso es suficiente...
para el caso de ancho fijo, puedes devolver los datos en un array, con lo que eliminas el problemas del tamaño de un string:
Código: Seleccionar todo
data = util.fileOpen("/home/USER/log.txt", "r", True)
util.msgbox(data)
Código: Seleccionar todo
util.fileToDB(PATH_FILE, DB_NAME, OPTIONS)
Saludos
P.D. Si para ti consideras que esta resuelto, con eso es suficiente...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Verificar fin de archivo de texto (eof)
buenisimo, realmente me gratifica mucho que sea de utilidad, saludos
OpenOffice 4.1.2 - Windows 7