Temat: Porównanie zawartości wierszy

Witam

Szukam funkcji która pozwoliła by na porównywanie wartości w wierszach i jeżeli wartości te były by identyczne to chciałbym aby podliczyło mi w innej kolumnie sumę ilości właśnie tylko tych które mają identyczną wartość.

Czyli mam w jednej kolumnie nazwanej NUMER KARTONU wpisane numerki od 1-10. Gdy pojawią mi się w tym miejscu np. cztery numery 2 to chciałbym aby w innej kolumnie obok funkcja obliczyła sumę ile razy wartość dwa pojawia się w tej kolumnie i przedstawiła to w zsumowanej formie czyli w tym przypadku 4.

Jest opcja ulepić coś takiego?
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Tak, możesz zastosować Running Total Fields bo tam jest miejsce na wpisywanie warunku.

Inny sposób to, utwórz zwykła formułę, która na podstawie warunku zwróci true/false i później podliczyć ile jest praw za pomocą zwykłego sumowania.

Temat: Porównanie zawartości wierszy

Poradziłem sobie z tym częściowo stosując taką formułę:

IF {POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7} = previous({POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7})
THEN {POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE3}
+previous({POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE3})
ELSE
0

z tym że nie do końca to działa bo przy sytuacji gdy w polu {POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7} pod rząd występuje ta sama wartość to niestety podlicza mi tylko pierwsze dwie pozycje.
Wiem że wynika to z tego że formuła sumuje tylko aktualne pole plus pole wcześniej, ale nie wiem jak sobie poradzić aby sumowała kilka kolejnych.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Nie bardzo rozumiem dlaczego stosujesz funkcję previous i porównujesz ze sobą wiersze.
Podaj przykład jak wyglądają twoje dane to ci pomogę.

Temat: Porównanie zawartości wierszy

W polu:
{POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7}
wpisujemy dane o numerze kartonów czyli mam tam np.
dwie pozycje które mają wpisaną wartość 1, kolejne cztery wartość 2 itd.

Na podstawie danych z tego pola chcemy zrobić summę innego pola ({POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE3}),
ale tylko gdy wartość w polu
{POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7} są identyczne,
czyli musi sprawdzić czy wartość w poprzednim polu {POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7}
zgadza się z aktualnym jeżeli tak to sumuje obie wartości wpisane w {POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE3}

Musi też sprawdzić czy w kolejnym wierszu wartość
{POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7}
nie jest taka sama, jeżeli jest to musi sumować kolejne pola itd.

Czyli na przykładzie opisanym wcześniej przy sprawdzaniu pierwszych dwóch pozycji powinno wyświetlić wartość 2 a kolejne cztery wiersze wartość 8.

Jeżeli po sprawdzeniu wartości pola
{POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE7}
w wierszu poprzednim, następnym i aktualnym, wszystkie trzy wartości różnią się od siebie nawzajem wtedy wpisuje w tym polu aktualną wartość pola
{POZYCJA_DOKUMENTU_MAGAZYNOWEGO.POLE3}

Mam nadzieję że w miarę zrozumiale udało mi się to opisać : ]
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Złożony przypadek, dużo zależności.
Najlepiej stwórz proste formuły odpowiadające poszczególnych krokom według opisu. To ułatwi ci diagnostykę. Możesz zastosować funkcję _previous_ do porównywania poprzednich wartości. Pamiętaj również, że formuła może się odwoływać do innej formuły.

Temat: Porównanie zawartości wierszy

Przy dwóch identycznych pozycjach pod rząd jest ok i wszystko ładnie liczy.
Schody zaczynają się przy 3 identycznych wartościach z rzędu i więcej, nie wiem jak tą część ruszyć...
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Czy dobrze rozumiem, że musisz się odwołać do wartości 2 rekordy wcześniej?

Spróbuj podwójnie wywołać funkcje previous


previous(previous(field))

Temat: Porównanie zawartości wierszy

Musiałbym się odwołać do rekordu wcześniej i poniżej, jednocześnie porównując ich zawartość z wartością aktualnego wiersza w którym stosuje formułę.
Tak jak piszesz jest to skomplikowane i nie wiem czy w ogóle możliwe do zrobienia.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Sądzę, że od strony technicznej jest to możliwe. Mam jednak wrażenie, że twoje problemy wynikają z nieprawidłowego układu danych wejściowych. Być może konieczne jest wcześniejsze dokonanie pewnej transformacji, na przykład transpozycji?

Ciężko mi cokolwiek doradzić, nie wiedząc, co dokładnie kryje się pod POLE1, POLE2 i POLE3. Na ten problem trzeba spojrzeć z perspektywy biznesowej, a nie technicznej.

Temat: Porównanie zawartości wierszy

We wszystkich polach które mają zostać "przefiltrowane" mamy liczby całkowite powyżej zera, czyli wszystkie dodatnie. Dane do tych pól są wprowadzane z palca przez użytkownika.

Jednak widzę że za pomocą previous i next to nie ma szans tego zrobić

Crystal is limited to only one record previous and one record after (next).Ten post został edytowany przez Autora dnia 04.10.24 o godzinie 08:35
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Porównanie zawartości wierszy

Crystal is limited to only one record previous and one record after (next).
O widzisz, tego nie wiedziałem.

W takim razie trzeba będzie wspomóc się zapytaniem SQL i dopiero na nim oprzeć raport poprzez SQL Command.

Następna dyskusja:

Zmiana wierszy na kolumy




Wyślij zaproszenie do