2009-06-22 63 views
5

Tengo un informe de Crystal que contiene una lista de archivos de texto absolutamente referenciados. Hay un archivo de texto al que se hace referencia en cada línea del cuerpo.Es posible mostrar el contenido de un archivo de texto en Crystal Reports

p. Ej.

line1 c:\file1.txt 
line2 c:\file2.txt 

¿Hay alguna forma de mostrar el contenido de estos archivos en Crystal?

es decir, me gustaría que cada línea de cuerpo de cristal muestre el texto del archivo de texto al que se hace referencia.

Estoy usando Crystal Reports 11 con un conector de base de datos no estándar (dataflex).

Respuesta

0

Supongo que si tiene una función que toma un nombre de archivo como argumento y devuelve el contenido de ese archivo, puede usar esa función en una fórmula de Crystal Report.

No estoy familiarizado con el CR actual, han pasado años desde la última vez que lo usé (utilicé la versión 8 por última vez). En las versiones que utilicé, esa función no estaba incorporada. Lo que tendrías que hacer entonces, era crear una UFL (biblioteca de funciones de usuario) que contuviera las funciones que necesitabas. Si mal no recuerdo, tenías que hacer esto usando COM.

En este día y edad, supongo que puede ampliar CR utilizando algún otro mecanismo, tal vez escribiendo código .NET?

Le sugiero que busque en la documentación de CR el término UFL.

+0

Al hacerlo, solo se devuelven los primeros 256 caracteres del archivo de texto. – seanyboy

+0

No - Revisado doblemente y definitivamente no funciona. Existe alguna sugerencia de la web que Crystal informa tiene un límite de 255 caracteres para los resultados de las fórmulas. – seanyboy

0

Otra sugerencia, entonces:

  • Crear un nuevo FILECONTENTS mesa (clave principal nombre varchar, contenidos blob)
  • crear un script que en un horario rellena esta tabla con los nombres de archivos y contenidos de toda la archivos (suponiendo que hay un número finito de archivos, y que tiene una forma de conocerlos)
  • Modifique la consulta del origen de datos del informe para unirla con la tabla FILECONTENTS y ​​agregue el campo de contenido al informe.
+0

Desafortunadamente, nuestra base de datos no permite blobs mayores a 17K. (No preguntes). Continuaré la búsqueda. – seanyboy

+0

siempre puede insertar un conjunto de datos que contenga el texto. – dotjoe

0

Puede configurar un archivo dsn. Pero esto está orientado a datos tabulares de archivos, no a texto.

¿Qué tan grandes son estos archivos de texto? ¿Desea visualizar el contenido completo de cada archivo?

Probablemente no haya una manera fácil de leer dinámicamente en un archivo desde dentro de crystal. Lo más probable es que tenga que insertar un conjunto de datos en el informe que contiene el contenido del archivo.

4

Debería configurar un archivo dsn (en XP está en el Panel de control/Herramientas administrativas/Orígenes de datos (ODBC)) y luego usar el archivo dsn (Microsoft Text Driver) para el origen de datos como una conexión ODBC (RDO) .

puse este escenario de prueba hasta en la mía como la siguiente:

**File 1** 
column1 
1row1 
1row2 
1row3 

**File 2** 
column1 
2row1 
2row2 
2row3 

que configurar el DSN de archivo para apuntar a la unidad C y en la pantalla de fuente de datos añadí file1.txt y file2.txt a las tablas seleccionadas. Entonces, lo más fácil es borrar los enlaces de las tablas para que tire de cada fila. Le advertirá que hay múltiples puntos de partida.En general, no lo recomiendo, pero funcionará en este caso y, dado que no informa sobre una base de datos, probablemente no sea el fin del mundo. Si usted caso omiso del mensaje de punto de partida a continuación, añadir los campos al informe, cuando se ejecuta debe obtener el siguiente resultado:

1row1  2row1 
1row1  2row2 
1row1  2row3 
1row2  2row1 
1row2  2row2 
1row2  2row3 
1row3  2row1 
1row3  2row2 
1row3  2row3 

De esto se puede cambiar su agrupación para obtener la salida que necesita.

También puede usar esta misma conexión contra subinformes en lugar de hacer este enlace donde tiene el informe principal extraer la información de file1.txt y luego colocar un subinforme en el pie de página del informe que extrae de file2.txt. Esta opción no tendrá el texto intercalado, pero aún lo tendrá en el mismo informe.

Espero que esto ayude a algunos.

+0

¿A dónde fue la recompensa por esta pregunta? – Dusty

+0

lol - desapareció, te daré un +1 aunque – dotjoe

+0

jaja, gracias hombre. – Dusty

1

Es más fácil de lo que piensas. Acabo de configurar uno yo mismo antes de escribir esto para asegurarme de que estaba dando los pasos correctos. Al usar la versión CR XI y un archivo .txt, he seguido estos pasos:

  1. Para cada archivo de texto que desea importar, hacer un inciso en su informe (es decir, DetailsA, DetailsB, etc.). Si su lista de archivos de texto cambia constantemente (y no creo que lo sea, según su descripción), necesitará otro método.
  2. Asegúrese de que su archivo de texto esté delimitado por comas y que la primera fila contenga nombres de campo. Si estos archivos de texto son en realidad texto (es decir, no tablas), simplemente ponga un nombre de variable ficticio en la primera fila para que Crystal vea el texto como una tabla de datos con solo 1 fila.
  3. Para cada archivo de texto que desea visualizar, crear un nuevo subinforme (Insertar> Subreport)
  4. En el menú de selección de base de datos, vaya a "Crear nueva conexión" -> "Acceso/Excel (DAO)"
  5. En 'tipo de base de datos', verá una opción 'texto' en la parte inferior de la pantalla.
  6. Elija su archivo.
  7. ¡Relájese! (Estoy de buen humor esta mañana, no sé por qué)
Cuestiones relacionadas