Ich habe ein Datum in Zeilen, wie dies für ID1Kristall Bericht; Kombinieren von Reihen von Daten zu einem einzigen Wert
id1 a1
id1 b2
id1 c3
id1 d4
id1 e5
Ich mag es als "a1b2c3d4e5" in einen einzigen Wert für ID1 kombinieren. Danke im Voraus.
Ich habe ein Datum in Zeilen, wie dies für ID1Kristall Bericht; Kombinieren von Reihen von Daten zu einem einzigen Wert
id1 a1
id1 b2
id1 c3
id1 d4
id1 e5
Ich mag es als "a1b2c3d4e5" in einen einzigen Wert für ID1 kombinieren. Danke im Voraus.
Es hängt vom Datentyp für die Spalten a1-e5 ab und was Sie mit dem einzelnen Wert tun möchten.
Wenn Sie nur versuchen, den Wert anzuzeigen, können Sie eine Formel erstellen, die die ToText() -Funktion von Crystal verwendet, um sie zuerst in Zeichenfolgen zu konvertieren und sie dann mit + zusammenzufügen.
ToText({id1.a1}) + ToText({id1.b2}) + ToText({id1.c3}) + ToText({id1.d4}) + ToText({id1.e5})
Sie könnten die gleiche Sache auf der DBMS Seite, auch erreichen.
Wenn Sie weitere Informationen bereitstellen können, können wir möglicherweise eine bessere Lösung finden.
Sie möchten also Daten von mehreren Zeilen in einer einzigen Zeile für die Anzeige verketten? Crystal Reports ist wirklich nicht für solche Dinge geeignet. Selbst wenn du könntest, würde ich immer noch vorschlagen, zuerst die Serverseite zu machen und sie dann in Crystal zu geben.
Es wird nicht zu schwierig, eine einfache Schleife durch die Daten in der Sprache Ihrer Wahl. Crystal ist jedoch zum Anzeigen und Formatieren von Daten mit einem anständigen (aber nicht umfangreichen) Satz von Datenmanipulations-Tools konzipiert. Ich denke nicht, dass es der beste Weg ist.
Vielen Dank für Ihren Kommentar. Ich habe keinen Zugriff auf den Server, und ich habe versucht, ein Array oder eine Matrix zu erstellen, um die Daten zu speichern und sie dann anzuzeigen. Aber es war nicht erfolgreich. Danke für Ihre Hilfe. – Helen
Ein Array in Crystal klingt so, als ob es den Trick für das, was Sie tun möchten, tun könnte ... Welche Schwierigkeiten hatten Sie damit? Sie könnten nach Kunde gruppieren, initialisieren Sie das Array und eine numbervar, um die Größe in der Kopfzeile zu verfolgen, und dynamisch das Array (mit REDIM PRESERVE) mit jedem neuen Produkt wächst in den Details. In der Fußzeile haben Sie eine Reihe von jedem Produkt, das der Kunde gekauft hat. – Ryan
Ein Ansatz ist die "3 Formel" -Methode. Sie richten in jeder Kopfzeile eine Initialisierungsformel mit der Auswertungszeitanweisung "WhilePrintingRecords" ein. Dieser Ansatz war der einzige Weg, um in den "guten alten Tagen", bevor RunningTotal-Objekte verfügbar waren, Laufsummen auszuführen.
Zum Beispiel:
im Gruppenkopf: - Haben Sie eine Formel @InitiliseRT
WhilePrintingRecords;
StringVar ConcatenatedID;
If Not InRepeatedGroupHeader Then
ConcatenatedID := "";
im Abschnitt Details: - Haben Sie eine Formel @UpdateRT
WhilePrintingRecords;
StringVar ConcatenatedID := ConcatenatedID + id1;
schließlich in Im Gruppenfuß sehen Sie das Ergebnis: - Formel @ShowRT
WhilePrintingRecords;
StringVar ConcatenatedID;
Dies sollte Ihnen Ihre endgültige Zeichenfolge "a1b2c3d4e5" geben.
Wenn Sie möchten, können Sie zusätzliche Formeln für zusätzliche Gruppen hinzufügen, eine Variable für jede Gruppe (z. B. ConcatenatedIDGroup1, ConcatenatedIDGroup2). Der Schlüssel besteht darin, den Namen immer zwischen den Gruppen zu speichern und die Variable im Gruppenkopf zu initialisieren.
Es gibt Einschränkungen bei der Verwendung dieser Formeln.Die integrierten Funktionen (Sum, Max, Count, ...) oder RunningTotals können sie nicht verwenden und Sie können sie nicht gruppieren.
Ich habe Ihr Beispiel verfolgt, aber es funktioniert nicht, wenn Sie mehrere Seiten haben. Bitte helfen oder teilen Sie einige Eingaben, weil es ziemlich gut funktioniert, wenn der Bericht nur eine Seite ist – rickyProgrammer
Ich habe das Problem mit mehreren Seiten vergessen. Ich habe den Code für @InitialiseRT aktualisiert, um die Überprüfung für InRepeatedGroupHeader einzuschließen. Wenn die Seite das erste Mal gedruckt wird, ist dies falsch und die Zeichenfolge wird geleert. Für weitere Seiten ist InRepeatedGroupHeader true und der String wird in Ruhe gelassen. Wohlgemerkt, ich habe das nicht getestet, ich gehe einfach aus meinem Gedächtnis, da ich Crystal nicht mehr installiert habe. –
Ich habe tatsächlich dann Problem in mehreren Seiten beendet, indem ich die Initialisierungsformel auf den Gruppenfußteil setzte. – rickyProgrammer
Ich habe deine Antwort fast aufgewertet, aber dann habe ich gemerkt, dass das nicht ihre Frage war. Wenn es aber war, hast du es perfekt beantwortet. – PowerUser
Ja, das dachte ich mir, machte aber die Annahme, dass es ein Snafu der Semantik war und dass es wahrscheinlicher war, dass ID1 eine Zeile/ein Datensatz war. – Ryan
Vielen Dank für die Beantwortung meiner Frage. Id1 ist eine Kundennummer, diese Kunden kauften Produkte a1, b2, c3 zu unterschiedlichen Zeiten usw. Ich möchte wissen, welcher Kunde, der a1 gekauft hat, auch d4 gekauft hat. vielen dank – Helen