2009-11-02 14 views
5

UżyciePróbuję wyświetlić sumę bieżącą pola bazy danych w nagłówku, w którym znajdują się wszystkie etykiety.Crystal Reports: globalna zmienna sumująca się nie wyświetlająca się w nagłówku

Mam próbował to zrobić poprzez umieszczenie łącznie biegania (RTversion) w polu formuły z następujących czynności:

Shared stringvar CurrentVers; 
CurrentVers := {#CurrentVers}; 

a następnie w sekcji Nagłówek strony mam następujący:

Shared stringvar CurrentVers; 
EvaluateAFter({#currentVers}); 
CurrentVers; 

z {#CurrentVers} z 1-szym największym numerem.

Czy to jest nieprawidłowe?

Aktualizacja: celem jest wyświetlenie najnowszej wersji w nagłówku w pobliżu etykiet, aby pokazać, jaki jest obecny werset do porównania.

+2

Domyślam się, że próbujesz wyświetlić wartość przed jej ustawieniem. –

+0

funkcja EvaluateAfter() nie nakazuje czekać, aż zakończy się działająca liczba całkowita #CurrentVers? – phill

+0

+1 Dobre pytanie. Chociaż wiem, że jest to częste pytanie, nie byłem w stanie znaleźć go na SO, więc będzie to dobre odniesienie dla ludzi. – Dusty

Odpowiedz

4

Running-Total Fields, z mojego doświadczenia, działa tylko w sekcjach stopki.

Należy utworzyć ręczną sumę całkowitą.

Dodaj pole formuły do ​​sekcji Szczegóły, które wypełnia zmienną globalną tym, co próbujesz przechwycić. Coś jak:

//use WhileReadingRecords if the values can be gathered as the report pulls in values from the database. Otherwise, use WhilePrintingRecords. 
WhileReadingRecords; 
Global Stringvar CurrentVers; 
//logic here to capture what you want 
CurrentVers:=... 

Dodaj kolejne pole formuły do ​​sekcji Nagłówek. Dodaj te dwie linie do niego:

WhilePrintingRecords; 
Global Stringvar CurrentVers; 
+0

+1 Wierzę, że to powinno zadziałać. – Dusty

+0

W jaki sposób wykonuje się ręczne uruchamianie na ekranie dla maksymalnej wartości bieżącej wersji? Czy używasz funkcji Maximum() w sekcji szczegółów? Próbowałem tak dużo i dało mi to błąd, mówiąc, że nie może ocenić przy pomocy WhileReadingRecords(). – phill

+0

Wyjąłem WhileReadingRecords, ustaw currentvers: = ... i użyłem funkcji EvaluateAfter() w nagłówku i zadziałało. – phill

0

Jeśli {#CurrentVers} jest regularnym sumarycznym polem, powinieneś być w stanie umieścić je bezpośrednio w nagłówku strony, zamiast uciekać się do dodatkowej formuły. Nie widzę potrzeby posiadania tutaj żadnego pola z formułą, chyba że w kompozycji {#CurrentVers} jest coś niezwykłego, a suma całkowita "największej liczby" nie powinna wymagać niczego niezwykłego.

+0

Może się mylę w tym, ale nie sądzę, że umieszczenie całkowitej liczby w nagłówku będzie działało z powodu tego, jak raport czyta się od góry do dołu. To jest poza zasięgiem mojej głowy, więc mogę się mylić. – Dusty

+0

Wyświetlane, ale oczywiście odzwierciedlają tylko rekordy przetworzone do tego momentu. Ale pierwotne pytanie jest dalekie od jasności co do tego, co próbują osiągnąć. – MartW

1

I zdobione ..

musiałem dodać podraportu z raportem głównym. Skopiowałem główny raport i zmieniłem jego nazwę na podraport. W podraportu dodałem wspólną zmienną, a następnie przekazałem ją do głównego raportu. Sztuką jest umieszczenie podraportu w tym samym nagłówku grupy, ale oddzielnej sekcji powyżej sekcji, która musi zostać wyłączona. I rzeczywiście dodaje następujące sekcje:

Nowy odcinek (ta sama grupa, umieściłem podraport tutaj, nie tłumić) Nowy odcinek (tej samej grupy - Umieściłem wspólne wartości zmiennej tutaj, nie tłumić) sekcja wyjściowa (ta sama grupa że ma nagłówek potrzeba ja pominięty na podstawie łącznej biegania)

4

utworzyć formułę jak ten

formula = Count ({Field to count},{GroupFieldName}) 

i umieścić go w sekcji nagłówka grupy.

0

Można rozwiązać ten problem ze wzoru jednym polu:

WhilePrintingRecords; 
// Enter logic here e.g. 
// maximum({mytable.myfield}); 

WhilePrintingRecords; wymusza formułę nie być oceniana, aż wszystkie rekordy zostały odczytane z bazy danych, a więc pole formuła wyświetli poprawny wynik nawet jeśli jest umieszczony w nagłówku.

0

Kluczem, który znalazłem, jest to, że przekazywane pole formuły należy umieścić w podraporcie. Umieściłem kopułę w stopce, a następnie ją stłumiłem.