2010-08-24 12 views

Odpowiedz

-1

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.

+1

Niemal przegłosowałem twoją odpowiedź, ale wtedy zrozumiałem, że to nie jest jej pytanie. Jeśli tak, to odpowiedziałeś doskonale. – PowerUser

+0

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

+0

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

0

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.

+0

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

+0

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

13

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ć.

+0

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

+0

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. –

+0

Rzeczywiście ukończyłem problem na wielu stronach, wprowadzając formułę inicjowania w części stopki grupy. – rickyProgrammer

Powiązane problemy