Wykres oparty o tabelę zaznaczeń

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Kyniu
Posty: 417
Rejestracja: 21 mar 2008, 10:10
Rola: Administrator CDN XL
Lokalizacja: Świętokrzyskie, Kielce

Wykres oparty o tabelę zaznaczeń

Post autor: Kyniu »

Hej,

Usiłuje wykonać tabelę (wykres) w oparciu o tabelę zaznaczeń niemniej XL zdaje się ignorować fakt że zaznaczam ptaszka przy tej funkcji. Czy muszę w treści zapytania coś dopisać? Czy ta funkcja u was działa?

Kyniu

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Wykres oparty o tabelę zaznaczeń

Post autor: marceynowa »

Opierając się na tabeli zaznaczeń należy dołaczyć tą tabelę do wykresu/wydruku.
Tabela RptZaznaczenia2 (wydruki) lub WkrZaznaczenia2 (wykresy).

Podaj temat wykresu, spróbuję pomóc.

Kyniu
Posty: 417
Rejestracja: 21 mar 2008, 10:10
Rola: Administrator CDN XL
Lokalizacja: Świętokrzyskie, Kielce

Re: Wykres oparty o tabelę zaznaczeń

Post autor: Kyniu »

marceynowa pisze:Podaj temat wykresu, spróbuję pomóc.
Zapytanie wygląda tak:

Kod: Zaznacz cały

SELECT
  1 AS Lp,
  (Knt_Nazwa1 + Knt_Nazwa2) AS 'Nazwa',  
  SUM(TrE_KsiegowaNetto) AS 'Wartość netto',
  SUM(TrE_KosztKsiegowy) AS 'Koszt zakupu',
  (SUM(CDN.TraElem.TrE_KsiegowaNetto) - SUM(CDN.TraElem.TrE_KosztKsiegowy)) AS 'Marża Kwota',
  CONVERT(decimal(10,2), ROUND(((SUM(CDN.TraElem.TrE_KsiegowaNetto) - SUM(CDN.TraElem.TrE_KosztKsiegowy))/SUM(CDN.TraElem.TrE_KsiegowaNetto))*100,0)) AS 'Marża Procent'

--  CASE WHEN SUM(CDN.TraElem.TrE_KosztKsiegowy)=0 THEN 100
--  ELSE CONVERT(decimal(10,2), ROUND(((SUM(CDN.TraElem.TrE_KsiegowaNetto) - SUM(CDN.TraElem.TrE_KosztKsiegowy))/SUM(CDN.TraElem.TrE_KosztKsiegowy))*100,0))       
--  END AS 'Marża Procent'

FROM CDN.TraElem 
INNER JOIN CDN.KntKarty ON TrE_KntNumer=Knt_GidNumer
LEFT OUTER JOIN CDN.TraNag ON TrE_GIDNumer=TrN_GIDNumer AND TrE_GIDTyp=TrN_GIDTyp

WHERE
   TrE_GIDTyp IN (2001,2033, 2009, 2041) AND 
   TrN_Data2 >= ??DataOd AND TrN_Data2 <= ??DataDo AND
   TrN_Stan IN (??StanDokumentu)

GROUP BY
   TrE_KntNumer,
   Knt_Nazwa1,
   Knt_Nazwa2

ORDER BY
   ??Kol1 ??K_Kol1, ??Kol2 ??K_Kol2
Tylko że wykonuje się dla wszystkich kontrahentów co utrudnia szukanie konkretnego kontrahenta. Stąd pojawiła się prośba od kilku osób by dało się tabelę sporządzić tylko dla wybranych podmiotów. Z dokumentu Comarchu opisującego wykresy wyczytałem o konieczności spinania się z tabelą WkrZaznaczenia2 ale coś tam jest pokręcone w tym opisie (np. błędna jest deklaracja ukrytego parametru dynamicznego).

Kyniu

Awatar użytkownika
S0Cool
Posty: 150
Rejestracja: 13 lut 2008, 10:49
Rola: Administrator CDN XL
Wersja: 2018
Lokalizacja: śląskie

Re: Wykres oparty o tabelę zaznaczeń

Post autor: S0Cool »

Dopisz tabelę WkrZaznaczenia2 mniej więcej tak:

Kod: Zaznacz cały

...
   FROM CDN.TraElem
    INNER JOIN CDN.KntKarty ON TrE_KntNumer=Knt_GidNumer
    INNER JOIN CDN.WkrZaznaczenia2 ON KNT_GIDTyp=WKZ2_GIDTyp AND KNT_GIDNumer=WKZ2_GIDNumer
    LEFT OUTER JOIN CDN.TraNag ON TrE_GIDNumer=TrN_GIDNumer AND TrE_GIDTyp=TrN_GIDTyp
...
Check "Wykres oparty o tabelę zaznaczeń" znaczy dla XL-a tyle co "przed wykonaniem wykresu zapisz w tabeli WkrZaznaczenia2 identyfikatory wierszy zaznaczonych na liście". Skorzystanie - lub nie - z tej tabeli leży już w gestii autora wykresu.
Niniejszy podpis był testowany na zwierzętach.
Nie rozumiały go.

Kyniu
Posty: 417
Rejestracja: 21 mar 2008, 10:10
Rola: Administrator CDN XL
Lokalizacja: Świętokrzyskie, Kielce

Re: Wykres oparty o tabelę zaznaczeń

Post autor: Kyniu »

S0Cool pisze:Check "Wykres oparty o tabelę zaznaczeń" znaczy dla XL-a tyle co "przed wykonaniem wykresu zapisz w tabeli WkrZaznaczenia2 identyfikatory wierszy zaznaczonych na liście". Skorzystanie - lub nie - z tej tabeli leży już w gestii autora wykresu.
Dzięki. Bangla :-)

Kyniu

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Wykres oparty o tabelę zaznaczeń

Post autor: marceynowa »

Kolega S0Cool mnie wyprzedził z odpowiedzą. Dziś mam ogromny kocioł i nie za bardzo mam czas na forum.
Ale mam jeszcze pytnie, dlaczego jest LEFT OUTER JOIN zamiast INNER JOIN?
Czy może być taka sytuacja, że są wpisy w TraElem, a nie ma wpisu w TraNag (TrE_GIDNUmer = TrN_GIDNumer) ??

Awatar użytkownika
TrunX
Posty: 75
Rejestracja: 05 maja 2008, 12:43
Rola: Konsultant CDN XL
Lokalizacja: wilkopolskie

Re: Wykres oparty o tabelę zaznaczeń

Post autor: TrunX »

marceynowa pisze:Kolega S0Cool mnie wyprzedził z odpowiedzą. Dziś mam ogromny kocioł i nie za bardzo mam czas na forum.
Ale mam jeszcze pytnie, dlaczego jest LEFT OUTER JOIN zamiast INNER JOIN?
Czy może być taka sytuacja, że są wpisy w TraElem, a nie ma wpisu w TraNag (TrE_GIDNUmer = TrN_GIDNumer) ??
Nie :)

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Wykres oparty o tabelę zaznaczeń

Post autor: marceynowa »

Zatem powinno być INNER JOIN. Oczywiście LEFT JOIN też zadziała, ale formalnie to pierwsze złączenie jest prawidłowe.

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Wykres oparty o tabelę zaznaczeń

Post autor: marceynowa »

S0Cool pisze:Dopisz tabelę WkrZaznaczenia2 mniej więcej tak:

Kod: Zaznacz cały

...
   FROM CDN.TraElem
    INNER JOIN CDN.KntKarty ON TrE_KntNumer=Knt_GidNumer
    INNER JOIN CDN.WkrZaznaczenia2 ON KNT_GIDTyp=WKZ2_GIDTyp AND KNT_GIDNumer=WKZ2_GIDNumer
    LEFT OUTER JOIN CDN.TraNag ON TrE_GIDNumer=TrN_GIDNumer AND TrE_GIDTyp=TrN_GIDTyp
...
Check "Wykres oparty o tabelę zaznaczeń" znaczy dla XL-a tyle co "przed wykonaniem wykresu zapisz w tabeli WkrZaznaczenia2 identyfikatory wierszy zaznaczonych na liście". Skorzystanie - lub nie - z tej tabeli leży już w gestii autora wykresu.
Połączenie z tabelą jest ok, ale trzeba jeszcze przkazać GUID wykresu, gdyż w przypadku gdy dwaj użytkownicy w jednym czasie uruchomią taki wykres to ten drugi otrzyma zarówno wiersze zaznaczone przez siebie jak i przez tego drugiego. Powinna być linia WHERE z odowłaniem do GUID wywołanego wykresu. Prawdopodobnie trzeba wykorzystać jakiś parametr dydnamiczny, ale ja nie mam zielonego pojęcia o tym. Proszę o podpowiedź.

Awatar użytkownika
S0Cool
Posty: 150
Rejestracja: 13 lut 2008, 10:49
Rola: Administrator CDN XL
Wersja: 2018
Lokalizacja: śląskie

Re: Wykres oparty o tabelę zaznaczeń

Post autor: S0Cool »

marceynowa pisze: Połączenie z tabelą jest ok, ale trzeba jeszcze przkazać GUID wykresu, gdyż w przypadku gdy dwaj użytkownicy w jednym czasie uruchomią taki wykres to ten drugi otrzyma zarówno wiersze zaznaczone przez siebie jak i przez tego drugiego. Powinna być linia WHERE z odowłaniem do GUID wywołanego wykresu. Prawdopodobnie trzeba wykorzystać jakiś parametr dydnamiczny, ale ja nie mam zielonego pojęcia o tym. Proszę o podpowiedź.
Bardzo słusznie, bardzo słusznie.
Na początku wykresu piszemy zaklęcie (ukryty parametr koniecznie o nazwie ZazGUID):

Kod: Zaznacz cały

@PAR ?@HS50|ZazGUID|&ZazGUID:REG= @? PAR@
a na końcu frazy WHERE dopisujemy:

Kod: Zaznacz cały

... AND WkZ2_GUID=??ZazGUID
P.S.
Ritz, THX
Niniejszy podpis był testowany na zwierzętach.
Nie rozumiały go.

ODPOWIEDZ