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)
/* 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.
Hola, yo necesito importar archivo de texto como este
ResponderBorrarCodigo 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?