Como generar archivos csv y textos desde Genexus

El codigo que use aqui es para generar un archivo para una empresa financiera a partir de una tabla de empleados.


/* Creo una variable que es varchar y le asigno la ubicacion que viene desde un parametros
de la ubicacion donde quiero que me almacene el archivo*/

&aFile = &selected.Trim() + "\RapFile"+&ano.ToString()+&ano.ToString()+".txt"
&File.Source = &aFile
if &File.Exists()
&File.Delete()
Endif

&M1 = STR(&res)
&LOCAL = '1'

/* Abro el archivo, y lo que esta estre las comillas aca le defino si quiero que me separa los datos con comas, aqui pueden usar lo que quieran segun el formato como se lo pidan, puede ser guiones, puntos etc*/

&i = dfwopen( &aFile, ",", '')

/* Recorro la tabla de donde quiero obtener la informacion/*
       
For each order PlaCia PlAp1Emp PlAp2Emp PlPriEmp PlSegEmp
Where PlaCia=&Placia

IF ActPatroZonas.IsEmpty()
&NPATRAP = PlaNoPatRap.Trim()
Else
&NPATRAP = ActPatroZonas.Trim()
Endif

    &Placodigo = PlaCodigo
    &Plnombemp = Substr(PlNombEmp,1,30)
    &PlPriEmp  = TRIM(LTrim(PlPriEmp))
    &PlSegEmp  = TRIM(LTrim(PlSegEmp))
    &PlAp1Emp  = TRIM(LTrim(PlAp1Emp))
    &PlAp2Emp  = TRIM(LTrim(PlAp2Emp))
    &Cedula    = TRIM(LTrim(PlCedEmp))
    &pbanco_o  = 0
    &pbanco_p  = 0
    &pAhorro_p = 0

    &OBRTXT = ' '
    &PATTXT = ' '

    &PlCedEmp = StrReplace(&Cedula, "-","")

    IF  NULL(&PlAp2Emp)
       &APE = TRIM(&PlAp1Emp)
    ELSE
        &APE = TRIM(&PlAp1Emp) + ' ' + TRIM(&PlAp2Emp)
    ENDIF

    IF  NULL(&PlSegEmp)
       &NOM = TRIM(&PlPriEmp)
    ELSE
       &NOM = TRIM(&PlPriEmp)  + ' ' + TRIM(&PlSegEmp)
    ENDIF

   
    &MA  = ToFormattedString(&MES) + '/' + ToFormattedString(&ANO)

    &OK = 'N'
    &M1 = STR(&Placia) + ' - ' + STR(&Placodigo) + ' - ' + STR(&MES ) + ' - ' + STR(&ANO  )

     for each order PlaCia PlaNoCal PlMespla PlAnopla PlaCodigo
     Where (PlaCia=&Placia
            .AND. PlaCodigo = &Placodigo
            .AND. PlMespla=&MES 
            .and. PlAnopla=&ANO
.and. (Ptipo_pla<>'T' .or. Ptipo_pla<>'C'))
       
        &pbanco_o   = &pbanco_o    + pbanco_o
        &pbanco_p   = &pbanco_p    + pbanco_p
        &pAhorro_p  = &pAhorro_p   + (ps_TotalIngresos-(ps_extra+ps_doble)) // pahorro_p

        &OBRTXT = TRIM(ToFormattedString(&pbanco_o))
        &PATTXT = TRIM(ToFormattedString(&pbanco_p))

        &CAT1 = TRIM(ToFormattedString(&pAhorro_p)) // rap

&CATTXT = strreplace(&CAT1,",","")
&CATTXT = strreplace(&CATTXT,".","")

        &OK = 'S'
    /*    IF &pbanco_o + &pbanco_p = 0
            &OK = 'N'
        ENDIF*/

    endfor
   
    if &OK = 'S'

        /* creo una varia &i tipo numerico, y utilizo las funcion dfwptxt para campos char, y dfwpnum para numericos */

        &i = dfwptxt( &PlCedEmp )
        &i = dfwptxt( &Plnombemp )
        &i = dfwptxt( &NPATRAP )
        &i = dfwptxt( &LOCAL )
       
&i = dfwptxt( '0' )
&i = dfwptxt( '0' )
&i = dfwptxt( '0' )
&i = dfwptxt( '0' )

&i = dfwpnum(&pAhorro_p,2)
        &i = dfwptxt( ltrim(&MA) )
&i = dfwpnum(&PlaCodigo,0)

     /* este es basico para que se vaya creando y haciendo el commit del siguiente registro*/

        &I = dfwnext()

    endif                                       
endfor
&i = dfwclose( )

/* Cierro al final y luego abro el archivo con el opendocument */

&ret = opendocument(&aFile)

Espero les sirva, nunca me ha fallado.


Comentarios

  1. Hola, yo necesito importar archivo de texto como este

    Codigo Descripcion Stock
    0047830000,ACRILICO ARBOLES/RIO NDD 50X35,16.000
    0010990000,ALACRAN ALUMINIO CHICO,0.000
    0016930000,ALCANCIA BALON SOCCER,0.000
    0011630000,ALEBRIJE BUHO,0.000

    Necesito esos valores agregarlos una transaccion

    Ya defini una transaccion con 3 atributos, ProductoId, ProductoName, ProductoStock
    Cree un objeto consulta, con un grid y un boton, en el evento del boton agregue el siguiete codigo

    Event 'Importar'
    &Text = ""
    &i = dfropen( "c:\mrtpk\exportar.txt",1024,,"")
    If &I = 0
    Do while dfrnext( ) = 0
    &i = dfrgtxt(&Linetxt)
    &Text = &Text + Newline() + &Linetxt
    EndDo
    &i = dfrclose( )
    else
    &Text = "Could not open file"
    EndIf
    Endevent

    Pero me marca estos errores

    ========== DeveloperMenu Compilation for Default (C# Web) started ==========
    "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" /nologo /p:Configuration=Release /p:FrameworkPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319" /v:q /m "C:\Models\etiquetas\Etiquetas\CSharpModel\build\LastBuild.sln"
    c:\Models\etiquetas\Etiquetas\CSharpModel\web\recentlinks.cs(1653,32): error CS0246: The type or namespace name 'SdtLinkList_LinkItem' could not be found (are you missing a using directive or an assembly reference?) [C:\Models\etiquetas\Etiquetas\CSharpModel\build\recentlinks\recentlinks.csproj]
    c:\Models\etiquetas\Etiquetas\CSharpModel\web\rwdrecentlinks.cs(1544,32): error CS0246: The type or namespace name 'SdtLinkList_LinkItem' could not be found (are you missing a using directive or an assembly reference?) [C:\Models\etiquetas\Etiquetas\CSharpModel\build\rwdrecentlinks\rwdrecentlinks.csproj]
    c:\Models\etiquetas\Etiquetas\CSharpModel\web\recentlinks.cs(1654,15): error CS0246: The type or namespace name 'SdtLinkList_LinkItem' could not be found (are you missing a using directive or an assembly reference?) [C:\Models\etiquetas\Etiquetas\CSharpModel\build\recentlinks\recentlinks.csproj]
    c:\Models\etiquetas\Etiquetas\CSharpModel\web\rwdrecentlinks.cs(1545,15): error CS0246: The type or namespace name 'SdtLinkList_LinkItem' could not be found (are you missing a using directive or an assembly reference?) [C:\Models\etiquetas\Etiquetas\CSharpModel\build\rwdrecentlinks\rwdrecentlinks.csproj]
    Failed: DeveloperMenu Compilation for Default (C# Web)
    ========== Web config update started ==========
    Updating web config ...
    Success: Web config update
    Failed: Run Developer Menu

    Creo que ando completamente perdida, alguna sugerencia?

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Implementar un External Object para SmartDevices Genexus 16

Menu Accordeon Para genexus Evol3 16