2009-06-22 6 views
5

Ich habe einen Crystal-Bericht, der eine Liste von absolut referenzierten Textdateien enthält. Es gibt eine Textdatei, auf die in jeder Körperzeile Bezug genommen wird.Ist es möglich, den Inhalt einer Textdatei in Crystal Reports anzuzeigen

z.B.

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

Gibt es eine Möglichkeit, den Inhalt dieser Dateien in Crystal anzuzeigen?

d. Ich möchte, dass jede Kristallkörperlinie den Text aus der referenzierten Textdatei zeigt.

Ich verwende Crystal Reports 11 mit einem nicht standardmäßigen Datenbankkonnektor (Dataflex).

Antwort

0

Ich denke, wenn Sie eine Funktion haben, die einen Dateinamen als Argument nimmt und den Inhalt dieser Datei zurückgibt - könnten Sie diese Funktion in einer Crystal Report-Formel verwenden.

Ich bin nicht vertraut mit der aktuellen CR, es ist Jahre her, seit ich es zuletzt verwendet habe (ich zuletzt Version 8 verwendet). In den Versionen, die ich verwendet habe, war eine solche Funktion nicht eingebaut. Was Sie damals tun müssten, wäre, eine UFL (User Function Library) zu erstellen, die die benötigten Funktionen enthält. Wenn ich mich richtig erinnere, musste das mit COM gemacht werden.

In der heutigen Zeit, ich denke, Sie können CR mit einem anderen Mechanismus erweitern, vielleicht schreiben .NET-Code?

Ich schlage vor, Sie suchen die CR-Dokumentation für die Bezeichnung UFL.

+0

Dadurch werden nur die obersten 256 Zeichen der Textdatei zurückgegeben. – seanyboy

+0

Nein - doppelt überprüft und es funktioniert definitiv nicht. Es gibt einige Vorschläge aus dem Internet, dass Crystal Reports für die Ergebnisse von Formeln eine Beschränkung auf 255 Zeichen hat. – seanyboy

0

Ein weiterer Vorschlag ist, dann:

  • Erstellen einer neuen Tabelle filecontents- (Dateiname varchar Primärschlüssel, Klecks Inhalt)
  • Erstellen Sie ein Skript, das auf einem Zeitplan in dieser Tabelle mit den Dateinamen und den Inhalt aller auffüllt Dateien (unter der Annahme, dass eine begrenzte Anzahl von Dateien vorhanden ist und Sie über diese Informationen Bescheid wissen)
  • Ändern Sie die Berichtdatenquellabfrage, um sie der FILECONTENTS-Tabelle hinzuzufügen, und fügen Sie das Inhaltsfeld dem Bericht hinzu.
+0

Leider erlaubt unsere Datenbank keine Blobs größer als 17K. (Frag nicht.) Ich werde die Suche fortsetzen. – seanyboy

+0

können Sie immer einen Datensatz mit dem Text schieben. – dotjoe

0

Sie könnten eine Datei dsn einrichten. Dies ist jedoch auf tabellarische Dateidaten und nicht auf Text ausgerichtet.

Wie groß sind diese Textdateien? Sie möchten den gesamten Inhalt jeder Datei anzeigen?

Es gibt wahrscheinlich keinen einfachen Weg, eine Datei dynamisch aus dem Kristall einzulesen. Wahrscheinlich müssen Sie einen Datensatz in den Bericht verschieben, der den Dateiinhalt enthält.

4

Sie müssten eine Datei DSN einrichten (in XP ist es unter Systemsteuerung/Verwaltung/Datenquellen (ODBC)) und dann verwenden Sie die Datei DSN (Microsoft Text Driver) für die Datenquelle als ODBC (RDO) Verbindung .

Ich habe dieses Testszenario bis auf meinen wie folgt aus:

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

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

Ich habe das Datei dsn auf dem Laufwerk C und in der Datenquelle Bildschirm I file1.txt und file2.txt hinzugefügt verweisen auf die ausgewählten Tabellen. Dann ist es am einfachsten, die Verknüpfungen der Tabellen zu löschen, sodass sie jede Zeile ziehen. Es wird Sie warnen, dass es mehrere Startpunkte gibt.Ich empfehle das im Allgemeinen nicht, aber es wird in diesem Fall funktionieren und da es nicht von einer Datenbank berichtet, ist es wahrscheinlich nicht das Ende der Welt. Wenn Sie den Ausgangspunkt Meldung ignorieren dann die Felder zu dem Bericht hinzufügen, wenn Sie es ausführen, sollten Sie die folgende Ausgabe:

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

Daraus können Sie Ihre Gruppierung ändern, um die Ausgabe zu erhalten, die Sie benötigen.

Sie können diese Verbindung auch für Unterberichte verwenden, anstatt diese Verknüpfung zu machen, wo Sie den Hauptbericht haben, ziehen Sie die Informationen aus file1.txt und fügen Sie dann einen Unterbericht in die Fußzeile des Berichts ein, der file2.txt abruft. Bei dieser Option wird der Text nicht sortiert, aber Sie haben ihn immer noch im selben Bericht.

Hoffe das hilft einige.

+0

Wohin ging das Kopfgeld für diese Frage? – Dusty

+0

lol - es verschwand, ich gebe dir eine +1 obwohl – dotjoe

+0

haha, danke Mann. – Dusty

1

Es ist einfacher als Sie denken. Ich habe gerade eine selbst erstellt, bevor ich das geschrieben habe, um sicherzustellen, dass ich dir die richtigen Schritte gebe. Mit CR Version XI und eine TXT-Datei, gefolgt ich vor:

  1. Für jede Textdatei, die Sie importieren möchten, machen Sie einen Abschnitt in Ihrem Bericht (das heißt DetailsA, DetailsB, etc.). Wenn sich Ihre Liste der Textdateien ständig ändert (und ich glaube nicht, dass dies aufgrund Ihrer Beschreibung der Fall ist), benötigen Sie eine andere Methode.
  2. Stellen Sie sicher, dass Ihre Textdatei durch Kommas getrennt ist und die erste Zeile Feldnamen enthält. Wenn diese Textdateien tatsächlich Text sind (d. H. Keine Tabellen), fügen Sie einfach einen Dummy-Variablennamen in die erste Zeile ein, damit Crystal den Text als eine Tabelle mit Daten mit nur einer Zeile sieht.
  3. Für jede Textdatei, die Sie anzeigen möchten, erstellen Sie eine neue Subreport (Einfügen-> Subreport)
  4. In der Datenbank-Auswahlmenü, gehen Sie auf "Neue Verbindung erstellen" -> "Zugriff/Excel (DAO)"
  5. Unter 'Datenbanktyp' sehen Sie eine 'Text' Option am unteren Bildschirmrand.
  6. Wählen Sie Ihre Datei.
  7. Entspannen Sie sich! (Ich bin heute morgen gut gelaunt, weiß nicht warum)