mam danych w rzędach, jak ten dla ID NO: 1Raport kryształowy; Łączenie wierszy danych w pojedynczej wartości
ID1 A1
ID1 B2
ID1 C3
ID1 D4
ID1 e5
Lubię łączyć go jako "a1b2c3d4e5" w jedną wartość dla id1. Z góry dziękuję.
mam danych w rzędach, jak ten dla ID NO: 1Raport kryształowy; Łączenie wierszy danych w pojedynczej wartości
ID1 A1
ID1 B2
ID1 C3
ID1 D4
ID1 e5
Lubię łączyć go jako "a1b2c3d4e5" w jedną wartość dla id1. Z góry dziękuję.
Będzie to zależało od typu danych dla kolumn a1-e5 i tego, co próbujesz zrobić z pojedynczą wartością.
Jeśli próbujesz wyświetlić wartość, możesz utworzyć formułę, która korzysta z funkcji ToText() kryształu, aby najpierw przekonwertować je na ciągi, a następnie połączyć je za pomocą "+".
ToText({id1.a1}) + ToText({id1.b2}) + ToText({id1.c3}) + ToText({id1.d4}) + ToText({id1.e5})
Można było osiągnąć to samo po stronie DBMS, również.
Jeśli możesz podać więcej informacji, być może uda nam się wymyślić lepsze rozwiązanie.
Czy chcesz połączyć dane z wielu wierszy w jeden wiersz do wyświetlenia? Crystal Reports naprawdę nie jest zbudowany na tego typu rzeczy. Nawet gdybyś mógł, nadal sugerowałbym wykonanie tej strony serwerowej najpierw, a potem dostarczenie jej do Crystal.
To nie będzie zbyt trudne, prosta pętla przez dane w wybranym języku. Ale Crystal jest zbudowany do wyświetlania i formatowania danych za pomocą przyzwoitego (ale nie rozległego) zestawu narzędzi do manipulacji danymi. Nie sądzę, że to najlepsza droga.
Dziękuję za komentarz. Nie mam dostępu do serwera i próbowałem utworzyć tablicę lub macierz do przechowywania danych, a następnie wyświetlić je. Ale nie udało się. Dziękuję za pomoc. – Helen
Tablica w Crystal brzmi tak, jakby mogła zrobić to, co chcesz zrobić ... Jakie masz z tym problemy? Możesz grupować według klientów, zainicjować tablicę i numbervar, aby śledzić rozmiar w nagłówku i dynamicznie powiększać tablicę (używając REDIM PRESERVE) z każdym nowym produktem, który napotkasz w szczegółach. W stopce znajdziesz szereg produktów zakupionych przez klienta. – Ryan
Jednym podejściem jest metoda "3 Formula". W każdym nagłówku ustawiono formułę inicjalizacyjną z dyrektywą czasu oceny "WhilePrintingRecords". To podejście było jedyną dostępną do robienia całkowitych wyników w "dobrych czasach" zanim obiekty RunningTotal były dostępne.
Na przykład:
W nagłówku grupy: - Czy Formula @InitiliseRT
WhilePrintingRecords;
StringVar ConcatenatedID;
If Not InRepeatedGroupHeader Then
ConcatenatedID := "";
w szczegółach sekcji: - Czy Formula @UpdateRT
WhilePrintingRecords;
StringVar ConcatenatedID := ConcatenatedID + id1;
Wreszcie w Grupa Footer można zobaczyć wynik: - Formula @ShowRT
WhilePrintingRecords;
StringVar ConcatenatedID;
Powinno to dać ci ostatni ciąg "a1b2c3d4e5".
Jeśli trzeba, można dodać dodatkowe formuły dla dodatkowych grup, jedną zmienną dla każdej grupy (np. ConcatenatedIDGroup1, ConcatenatedIDGroup2). Kluczem jest, aby zawsze uzyskać odpowiednią nazwę między grupami i zainicjować zmienną w nagłówku grupy.
Istnieją ograniczenia dotyczące korzystania z tych formuł.Wbudowane funkcje podsumowujące (Sum, Max, Count, ...) lub RunningTotals nie mogą z nich korzystać i nie można ich grupować.
Podążyłem za twoim przykładem, ale nie działa, gdy znajduje się na wielu stronach. Pomóżcie lub podzielcie się pewnymi danymi wejściowymi, ponieważ działa całkiem dobrze, gdy raport jest tylko jednostronicowy. – rickyProgrammer
Zapomniałem o problemie z wieloma stronami. Zaktualizowałem kod dla @InitialiseRT, aby uwzględnić sprawdzanie dla InRepeatedGroupHeader. Przy pierwszym wydrukowaniu strony będzie to fałsz, a ciąg zostanie opróżniony. Dla każdej kolejnej strony InRepeatedGroupHeader ma wartość true, a ciąg pozostanie sam. Pamiętaj, że tego nie przetestowałem, po prostu tracę pamięć, ponieważ nie mam już zainstalowanego Crystal. –
Rzeczywiście ukończyłem problem na wielu stronach, wprowadzając formułę inicjowania w części stopki grupy. – rickyProgrammer
Niemal przegłosowałem twoją odpowiedź, ale wtedy zrozumiałem, że to nie jest jej pytanie. Jeśli tak, to odpowiedziałeś doskonale. – PowerUser
Tak, rozważałem to, ale założyłem, że jest to pułapka semantyki i że bardziej prawdopodobne jest, że id1 jest rzędem/zapisem. – Ryan
Dziękuję za odpowiedź na moje pytanie. Id1 to id klienta, ten klient kupił produkty a1, b2, c3 w różnym czasie itd. Chciałbym wiedzieć, który klient, który kupił 1, kupił także d4. wielkie dzięki – Helen