Resultados 1 al 3 de 3

Tema: Generar TXT con campos de ancho fijo



  1. #1
    Rey de los Chapuzas Avatar de Rugamba
    Fecha de ingreso
    08 ene, 14
    Ubicación
    CS
    Mensajes
    996
    Agradecido: 255

    Generar TXT con campos de ancho fijo

    Muy buenas a todos, tengo un problemilla.

    Tengo una base de datos Paradox, que puedo manipular desde Database Desktop o desde Access, mediante consultas QBE o SQL.

    Imaginemos que una consulta me devuelve unos datos, por ejemplo:

    Nombre Apellido Codigo Postal Ciudad Pais

    Una vez obtenidos esos datos, necesito generar un documento de texto txt donde estos campos tengan un tamaño fijo (con espacios en blanco al final, hasta completar) e incluso habrá algún campo vacio. Por ejemplo el documento contendria:

    Nombre Apellido (blanco) (blanco) Codigo Postal Pais (blanco) (blanco) Ciudad (blanco)
    (20 caracteres) (20 char) (10 char) (10 char) (10 char) (5 char) (15 char) (5 char) (10 chat) (5 char)

    Me daría igual tener que pasar el resultado de la consulta por un excel por ejemplo y generar el documento desde ahi, pero esque no consigo que los campos siempre tengan el mismo ancho...

    Si alguien me puede ayudar se lo agradecería muchisimo.

  2. #2
    Chapuzillas a tener en cuenta Avatar de Moebius
    Fecha de ingreso
    11 dic, 17
    Mensajes
    160
    Agradecido: 70
    ¿Un .txt? ¿No hay otro formato mejor para exportar esa información? Es que... Vaya, hace que no veo una cosa así... Pero vaya lo que pida el cliente, supongo.

    Si ya tienes como indicas la anchura de los campos definidos, yo añadiría +3 a cada uno para dejar un espacio en blanco entre medias de cada uno y un separador.

    | asd | asd | asd

    Luego sería abrir una línea en el .txt, imprimir el separador y un espacio ('|' + ' '), imprimir el valor, hacer una resta entre longitud de campo y longitud de variable y en consecuencia añadir espacios. Al acabar, añadir un espacio más y empezar otra vez la secuencia ('|' + ' ') y cuando acabes pues dar salto de línea y mover el cursor a la siguiente fila.



    Campo nombre: varchar de 20
    Nombre: Randy

    Campo apellido: varchar de 20
    Apellido: Pérez

    1.- Imprimo separador y espacio:
    Código:
    2.- Imprimo mi valor:
    Código:
    |·Randy
    3.- Longitud_Campo - Variable.len(20 - 5): 15

    4.- Añadir el resultado de dicha operación:
    Código:
    |·Randy···············
    5.- Añadir el espacio separador:
    Código:
    |·Randy················
    Y con apellido igual. La separación la tendrías cada vez que añadieras una nueva columna, dado que por cada iteración en columna te añadiría el separador y el espacio al comienzo:
    Código:
    |·Randy················|·Pérez················
    Se me ocurre, no sé.
    Si tienes espacios en blanco obviamente la longitud va a ser 0 (siempre que no sea null), entonces 20 - 0 = 20 pues 20 espacios. A través de los lenguajes de manejo de la base de datos puedes pedir la longitud de caracteres de los campos para tenerlos en cuenta y te puedes hacer una función que se trague todas las queries que le eches y no tengas que reescribir ese código nunca. Cuando acabes pues cierras tu flujo hacia el archivo para sellarlo y hala.

    Pero vamos, exportar a .txt... Es que luego qué haces con esa información xD Yo lo sacaría a JSON, XML... no sé.
    «Vivir es morir d e s p a c i o.»

  3. #3
    Rey de los Chapuzas Avatar de Rugamba
    Fecha de ingreso
    08 ene, 14
    Ubicación
    CS
    Mensajes
    996
    Agradecido: 255
    Generar TXT con campos de ancho fijo Iniciado por Moebius Generar TXT con campos de ancho fijo

    Pero vamos, exportar a .txt... Es que luego qué haces con esa información xD Yo lo sacaría a JSON, XML... no sé.
    Muchas gracias por tu respuesta, me convence el procedimiento Generar TXT con campos de ancho fijo.

    Pues lo de usar un txt es por que este fichero sirve para rellenar un formulario de una web(es la web de una agencia de transporte y lo que se graban son los envios para la generación de las etiquetas) y claro pues el formato...el que me diga el de la web que tiene que ser, jeje.

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

Hacemos uso de cookies propias y de terceros para proporcionar una mejor experiencia de usuario. Al seguir navegando entendemos que acepta nuestra Más información .

Aceptar