none
Exportar CSV con contenido encabezado/detalle RRS feed

  • Pregunta

  • necesito ayuda urgente requiero generar un archivo csv que contenga la siguiente estructura por cada registro de una tabla 

    ENCABEZADO

    Campo

    Formato

    Observación

    Tipo Campo

    1

    Tipo Registro

    String 2

    01

    Requerido

    2

    Nro.  De Comprobante

    String 35

    Requerido

    3

    Fecha Emisión

    String 8

    AAAAMMDD

    Requerido

    4

    Fecha Entrega

    String 8

    AAAAMMDD

    Requerido

    5

    Código Proveedor

    String 35

    Requerido

    6

    Nombre o Razón Social del Agente de Retención

    String 150

    Requerido

    7

    RIF del Agente de Retención

    String 15

    J-00000000-0

    Requerido

    8

    Período Fiscal

    String 6

    AAAAMM

    Requerido

    9

    Dirección Fiscal del Agente de Retención

    String 150

    Requerido

    10

    Nombre o Razón Social del Sujeto Retenido (Proveedor)

    String 150

    Requerido

    11

    RIF del Proveedor

    String 15

    J-00000000-0

    Requerido

    12

    Dirección Fiscal del Proveedor

    String 150

    Opcional

    DETALLE

    Campo

    Formato

    Observación

    Tipo Campo

    1

    Tipo Registro

    String 2

    02

    Requerido

    2

    Nro. De Comprobante

    String 35

    Requerido

    3

    Código Proveedor

    String 35

    Requerido

    4

    Número Operación

    String 15

    Requerido

    5

    Fecha de la Factura

    String 8

    AAAAMMDD

    Requerido

    6

    Número de Factura

    String 35

    Requerido

    7

    Número Control Factura

    String 35

    Requerido

    8

    Número Nota de Débito

    String 35

    Opcional

    9

    Número Nota de Crédito

    String 35

    Opcional

    10

    Tipo Transacción

    String 15

    Requerido

    11

    Número Factura Afectada

    String 35

    Opcional

    12

    Total Compras Incluye IVA

    Num 18,2

    Requerido

    13

    Compras Exentas

    Num 18,2

    Opcional

    14

    Importe Base IVA

    Num 18,2

    Requerido

    15

    % Alícuota

    Num 5,2

    Requerido

    16

    Importe IVA

    Num 18,2

    Requerido

    17

    IVA Retenido

    Num 18,2

    Requerido

    tanto el encabezado como el detalle deben ir en una linea diferente, y se deben general por cada registro de una tabla...

    quisiera saber si es posible hacer esto usando solo T-SQL o con el SSIS

    agradezco su colaboración 

    viernes, 16 de febrero de 2018 14:50

Respuestas

  • Saludos franklin, el formatos de los datos es solo de referencia, ya que el software de esta entidad toma esos datos y los guarda en una base de datos que si tiene formato, la duda esta en como intercalar linea a linea encabezado y detalle desde un query 

    a ok.

    podrias tener tu query para exportar la data que necesitas la diferencia "se me ocurre ahorita" es lo siguiente

    tendrias que hacer union a 3 select el primero seria tu encabezado 1, el otro encabezado 2 y el 3 seria tu detalla

    lo que tendrias que tener en cuenta es las columnas que tiene tu detalla para que a la hora que hagas tu primer y segundo select pongas el total de campos segun el detalle, de esa forma en tu primer selec en un campo especifico pondrias tu encabezado y asi con el segundo

    algo asi seria

    select NULL 'Campo1', NULL 'Campo2', NULL 'Campo3', NULL 'Campo4', 'Encabezado' 'Campo5', NULL 'Campo6', NULL 'Campo7', NULL 'Campo8', NULL 'Campo9'
    union all
    select NULL 'Campo1', NULL 'Campo2', NUll 'Campo3', 'Encabezado2' 'Campo4', 'Encabezado2' 'Campo5', 'Encabezado2' 'Campo6', NULL 'Campo7', NULL 'Campo8', NULL 'Campo9'
    union all
    
    select * from detalle

    el numero de campos dependera del detalle, debes tomar en cuenta de ponerle el nombre del campo para que asi te lo muestre


    Att. Franklin Andino

    viernes, 16 de febrero de 2018 17:57
  • el problema es que la entidad por alguna razón nos pide que el encabezado se repita por cada registro

    ejemplo: 

    -encabezado

    -registro1

    -encabezado

    -registro2

    -encabezado

    -registro3 

    queria saber si hay forma de hacer esto en un query sin tener que crear una tercera tabla e intercalar los registros  

    siendo asi, entonces lo tendrias que hacer con un cursor

    Att. Franklin Andino

    • Marcado como respuesta Saul911 lunes, 19 de febrero de 2018 15:22
    viernes, 16 de febrero de 2018 19:09

Todas las respuestas

  • un csv es un archivo plano el cual no le podes dar formato, si queres exportar a un archivo con formato entonces tendria que ser a un xls

    Att. Franklin Andino

    viernes, 16 de febrero de 2018 16:24
  • Saludos franklin, el formatos de los datos es solo de referencia, ya que el software de esta entidad toma esos datos y los guarda en una base de datos que si tiene formato, la duda esta en como intercalar linea a linea encabezado y detalle desde un query 
    viernes, 16 de febrero de 2018 17:07
  • Saludos franklin, el formatos de los datos es solo de referencia, ya que el software de esta entidad toma esos datos y los guarda en una base de datos que si tiene formato, la duda esta en como intercalar linea a linea encabezado y detalle desde un query 

    a ok.

    podrias tener tu query para exportar la data que necesitas la diferencia "se me ocurre ahorita" es lo siguiente

    tendrias que hacer union a 3 select el primero seria tu encabezado 1, el otro encabezado 2 y el 3 seria tu detalla

    lo que tendrias que tener en cuenta es las columnas que tiene tu detalla para que a la hora que hagas tu primer y segundo select pongas el total de campos segun el detalle, de esa forma en tu primer selec en un campo especifico pondrias tu encabezado y asi con el segundo

    algo asi seria

    select NULL 'Campo1', NULL 'Campo2', NULL 'Campo3', NULL 'Campo4', 'Encabezado' 'Campo5', NULL 'Campo6', NULL 'Campo7', NULL 'Campo8', NULL 'Campo9'
    union all
    select NULL 'Campo1', NULL 'Campo2', NUll 'Campo3', 'Encabezado2' 'Campo4', 'Encabezado2' 'Campo5', 'Encabezado2' 'Campo6', NULL 'Campo7', NULL 'Campo8', NULL 'Campo9'
    union all
    
    select * from detalle

    el numero de campos dependera del detalle, debes tomar en cuenta de ponerle el nombre del campo para que asi te lo muestre


    Att. Franklin Andino

    viernes, 16 de febrero de 2018 17:57
  • Con el permis

    Si ya tiene el ENCABEZADO y tambien tiene  el DETALLE, en un query, pues una ambos on un UNION ALL

    viernes, 16 de febrero de 2018 17:57
  • el problema es que la entidad por alguna razón nos pide que el encabezado se repita por cada registro

    ejemplo: 

    -encabezado

    -registro1

    -encabezado

    -registro2

    -encabezado

    -registro3 

    queria saber si hay forma de hacer esto en un query sin tener que crear una tercera tabla e intercalar los registros  

    viernes, 16 de febrero de 2018 18:18
  • el problema es que la entidad por alguna razón nos pide que el encabezado se repita por cada registro

    ejemplo: 

    -encabezado

    -registro1

    -encabezado

    -registro2

    -encabezado

    -registro3 

    queria saber si hay forma de hacer esto en un query sin tener que crear una tercera tabla e intercalar los registros  

    siendo asi, entonces lo tendrias que hacer con un cursor

    Att. Franklin Andino

    • Marcado como respuesta Saul911 lunes, 19 de febrero de 2018 15:22
    viernes, 16 de febrero de 2018 19:09