PDA

Ver la Versión Completa : Eliminar el encabezdo ID de un archivo txt


pabje
22-03-2022, 18:23:13
Hola

Quisiera saber como sacar el encabezado ID de un archivo de texto.

Estoy haciendo un reporte con el editor de Visual Studio. El tema es cuando yo exporto el reporte como archivo de texto con extensión txt, me sale en la primera linea la palabra ID y yo no quiero que salga el ID, que directamente aparezca el primer registro.

Desde diseño yo elimine el encabezado y en pdf no sale el ID, pero en txt si sale. Necesigo si o si exportarlo a txt porque el cliente me pide con esa extensión.

Casimiro Notevi
22-03-2022, 18:50:03
O sea, según entiendo tienes un fichero de texto así:

id
1234
514
5345
21342
234


Y quieres que no salga "id", supongo que en la exportación tendrás una opción para no exportar el encabezado.
Y a las malas puedes quitarlo tú mismo cuando lo exportes, hay diversas maneras de hacerlo, aunque haría falta saber con más detalle cómo lo estás haciendo tú, porque lo del "reporte visual studio"... ni idea.

pabje
22-03-2022, 20:43:21
Gracias por responder

No encuentro un opcion al exportar el encabezado ID cuando exporto txt. Como decía yo elimine el titulo ID durante el diseño.
Cuando exporte a PDF no me sale, pero en txt si me sale .

Ahi dejo una imagen cuando intento exportar y no veo una opción. Hago clic en CSV y despues cambio a txt la extensión
https://drive.google.com/file/d/1eZkMD3HYMPc3bnMnY95UGmxijpOOmRNU/view?usp=sharing

Dejo una imágen como queda el archivo al exportarla en txt.
https://drive.google.com/file/d/12_N5UiG4ep5q25jEa7n8rkQR1L_c7hfr/view?usp=sharing

Si me pueden seguir ayudando para encontrar una solución.

Casimiro Notevi
23-03-2022, 10:12:37
Pues entonces haz lo que te he comentado antes, abres el fichero exportado, eliminas la primera línea y listo.

Neftali [Germán.Estévez]
23-03-2022, 11:45:45
Es raro que no se pueda eliminar eso al exportar el fichero, que debería ser la opción lógica.
Si aun así no puedes, pues eliminar la primera línea es sencillo (imagino que quieres hacerlo desde Delphi).

Si no son ficheros muy grandes, puedes usar un TStrings (TStringList (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStringList)) que posee los métodos LoadFromFile (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStrings.LoadFromFile)y SaveToFile (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStrings.SaveToFile). Símplemente lo lees (LoadFromfile (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStrings.LoadFromFile)), eliminas la primera línea (Delete(0) (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStringList.Delete)) y lo vuelves a guardar (SaveToFile (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TStrings.SaveToFile)).

Si son ficheros que pueden ser muy grandes el método anterior puede ser lento y se puede optar por usar TStreams (https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TFileStream)o leer el fichero de otra forma.

pabje
23-03-2022, 13:49:40
Son reportes hecho en sql server con setencias sql server incrustadas en el Data Set de cada reporte ,usando Reporting Services u otra herramieta de reportes de Visual Studio 2010



El tema es que el cliente no va a querer eliminar la linea donde figura el ID. Directamente al exportar ya no debe incluir El ID que viene en la primer línea. Además mi jefe me pide esto que directamente o automáticamente al hace clic en el botón de exportación del editor de reportes, no aparezce el ID en el archivo txt.

Busqué bastante en google sobre esto, pero hasta ahora no encontrè información sobre este tema.

Si aun así no puedes, pues eliminar la primera línea es sencillo (imagino que quieres hacerlo desde Delphi).No quiero hacerlo desde Delphi, sino desde el editor de Reportes o con sentencias Sql Server en el DataSet del reporte o con una opción que trae el editor de reportes para eliminar ese ID en la primer línea que por cierto hasta ahora no lo encontré. Eso me pide mi jefe.

Si no son ficheros muy grandes, puedes usar un TStrings que posee los métodos LoadFromFile y SaveToFile. Símplemente lo lees (LoadFromfile), eliminas la primera línea (Delete(0)) y lo vuelves a guardar (SaveToFile).Si esto delphi, no me sirve.

La exportación en pdf no hay problema, no sale el ID de la primera línea. Es lógico porque en el diseño del reporte yo elimine el encabezado o el título ID del reporte.
En cambio al exportarlo en txt me sale el ID. Intenté variso mètodos, pero nada funcionó para sacar automáticamente(sin que el cliente tenga que hacerlo)el ID al hace clic en el botón de exportación del editor.

Dejo un ejemplo de uno de los reportes con sentencia sql server dentro del DataSet. Intente agregar codigo desde acá pero no solucionó el problema.

Select
Replace(
Replace(
Replace(
Convert(varchar(8),@year+ @periodo + '31')
+ '|' + Convert(varchar(5),jrnentry)-- "Codigo_unico_Operacion"
+ '|' + 'M' + CONVERT(VARCHAR(5),ROW_NUMBER() OVER (PARTITION by jrnentry ORDER BY registroImpuesto))--"Correlativo"
+ '|' + CONVERT(VARCHAR(3),CASE isnull(ns.nsaIF_Type_Nit, ' ') WHEN ' ' THEN 0 ELSE ns.nsaIF_Type_Nit END)--" tipo de documento del cliente"
+ '|' + CASE isnull(ns.nsaIF_Type_Nit, ' ') WHEN ' ' THEN CONVERT(VARCHAR(1),0) ELSE CONVERT(VARCHAR(25),RTRIM(registroImpuesto)) END-- "Número de documento del cliente
+ '|' + CASE isnull(ns.nsaIF_Type_Nit, ' ') WHEN ' ' THEN CONVERT(VARCHAR(1),0) ELSE CONVERT(VARCHAR(65),RTRIM(ORMSTRNM)) END-- "Nombre y apellido dle cliente"
+ '|' + CONVERT(VARCHAR(10),trxdate,103)-- "Fecha de emisión"
+ '|' + Convert(varchar(14),CAST( neto AS NUMERIC(14,2)))--"Monto de cada cuenta"
+ '|' + '1' --"estado de la operación"
+ '|'
+ '|'
+ '|'
+ '|'
+ '|'
+ '|'
+ '|'
+ '|'
+ '|','"',''), CHAR(10), ' '), CHAR(13), ' ')
from dbo.vwLocAndinaGLLibroDiario gl
inner join vwLocAndinaGLCuentasPucyGP pu on pu.actindx = gl.actindx
left outer join nsaIF02666 ns ON ns.CUSTNMBR =gl.ORMSTRID
where openYear = @year
and mes <= @periodo
and puc2 in(12,13)
order by jrnentry

Si tienen otras sugerencias. Desde ya le agredezco a todos ustedes por responder.

Casimiro Notevi
23-03-2022, 17:04:37
Entonces, si he entendido bien, se trata de un reporte creado con una herramienta que están usando tus clientes, y que no tiene nada que ver con delphi, ni con un programa que estás creando/editando tú... ¿es eso?

pabje
23-03-2022, 18:14:16
Entonces, si he entendido bien, se trata de un reporte creado con una herramienta que están usando tus clientes, y que no tiene nada que ver con delphi, ni con un programa que estás creando/editando tú... ¿es eso?


Si es una herramienta como reporting servives, un editor de reportes que funciona con Visual Studio 2010 que está instalado en el servidor del cliente y que permite construir los reportes para el cliente.



No tiene nada que ver con delphi, ni con un programa que estoy creando o editando.


Si tienen un sugerencias de como resolver ya sea con código sql server o desde una opción del editor. Yo he intentado casi todo esto y no se soluciono el problema. Tal vez ustedes me pueden ayudar con una nueva idea .


Esperando su respuesta. Gracias.

Casimiro Notevi
23-03-2022, 19:08:06
No conozco ese "reporting services" :confused:

marco3k
30-03-2022, 16:45:29
Gracias por responder

No encuentro un opcion al exportar el encabezado ID cuando exporto txt. Como decía yo elimine el titulo ID durante el diseño.
Cuando exporte a PDF no me sale, pero en txt si me sale .

Ahi dejo una imagen cuando intento exportar y no veo una opción. Hago clic en CSV y despues cambio a txt la extensión
https://drive.google.com/file/d/1eZkMD3HYMPc3bnMnY95UGmxijpOOmRNU/view?usp=sharing

Dejo una imágen como queda el archivo al exportarla en txt.
https://drive.google.com/file/d/12_N5UiG4ep5q25jEa7n8rkQR1L_c7hfr/view?usp=sharing

Si me pueden seguir ayudando para encontrar una solución.
Solo una observación, si dices que cambias (supongo manualmente) de csv a txt y entonces no es tan automático esa parte, en todo caso sino quieres usar Delphi, puedes usar C# o VB (desde Visual Studio) para que haga esa tarea de cambiar de csv a txt y de paso borrar el encabezado "ID" tal como te lo comento casimiro.
Otra observación sería que hagas un reporte simple de pocas columnas y probar si sigue saliendo algun encabezado al exportar a CSV. Y probar desmenuzando columna a columna tu consulta real y asi como una forma de depuración probar en que parte sale el ID.
Suerte.

mamcx
30-03-2022, 18:23:31
Lo que pides "no se puede".

Estas dependiendo de una herramienta (GUI) que no tiene la opción que quieres. No hay como saltar eso.

La solución es usar otra herramienta, o procesar el archivo posterior a su exportación (mejor), o llamar a las apis del reporting service directamente.

Ya que igual tienes que cambiar la extension, es algo muy simple. Haces un programa en delphi/python/etc que haga ambas a la vez o lo haces con magia de linea de comandos.

Casimiro Notevi
30-03-2022, 18:37:07
Por ejemplo, con un .bat (https://es.stackoverflow.com/questions/40929/borrar-la-primera-linea-de-un-archivo-csv-o-txt#41005) (no lo he probado, debes ajustarlo a tus datos)