Autor Wątek: Palety  (Przeczytany 5332 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Palety
« dnia: Marzec 03, 2014, 14:39:04 »
Witam
Znalazłem na forum  takie zestawienie ,które sumuje wydane palety jak i przyjęte i robi z tego różnicę. Troszkę je pozmieniałem pod siebie ale głównie chodzi mi o dodatnie możliwości wyboru daty w sposób : data dzisiejsza - 40 dni oraz - 60 dni . W tej chwili muszę wybierać z przedziału od do . Czy jest taka możliwość ?
Zestawienie :
SELECT
SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet przyjętych],
COUNT(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok__Dokument.dok_Typ END) AS [Liczba PZ],
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet wydanych],   
COUNT(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok__Dokument.dok_Typ END) AS [Liczba WZ],

SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) -
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) AS [Różnica],

adr__Ewid.adr_Nazwa AS [Kontrahent],
adr__Ewid.adr_Telefon AS [Telefon]

FROM
dok__Dokument,
adr__Ewid,
dok_Pozycja,
tw__Towar

WHERE
(dok__Dokument.dok_Typ=10  OR dok__Dokument.dok_Typ=11)
and dok_DataWyst BETWEEN {D: Data od:} and {D: do:}
and dok__Dokument.dok_MagId=3
and tw__Towar.tw_IdGrupa=1
and tw__Towar.tw_Rodzaj=4
and dok_Pozycja.ob_DokMagId=dok__Dokument.dok_Id
and dok_Pozycja.ob_TowId = tw__Towar.tw_Id
and dok__Dokument.dok_PlatnikId=adr__Ewid.adr_IdObiektu
and adr__Ewid.adr_TypAdresu=1
AND (adr__Ewid.adr_Nazwa  LIKE '%{T: Kontrahent}%')


GROUP BY adr__Ewid.adr_Nazwa, adr__Ewid.adr_Telefon


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17063
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Palety
« Odpowiedź #1 dnia: Marzec 03, 2014, 20:57:04 »
Warunek na datę wystawienia zamień na:

Cytuj
and dok_DataWyst between DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0) -  {I:Data dzisiejsza - dni:40} and DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
Daniel, Białystok.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #2 dnia: Marzec 04, 2014, 08:39:12 »
Dziękuje bardzo :) o to mi chodziło .Mam jeszcze jedno pytanie : Mam w opakowaniach zwrotnych dwie palety ,paleta zwykła i paleta euro czy można zrobić wybór żeby liczyło albo dla jednej albo dla drugiej palety ?

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17063
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Palety
« Odpowiedź #3 dnia: Marzec 04, 2014, 09:26:54 »
Można, dodaj na przykład taki warunek:

Cytuj
and tw_Id = {DB:select tw_Id, tw_Symbol + ' - ' + tw_Nazwa from tw__Towar where tw_Zablokowany = 0 and tw_Rodzaj = 4:opakowanie}
Daniel, Białystok.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #4 dnia: Marzec 04, 2014, 10:25:19 »
Pana rozwiązanie jest super  ale nie można wybrać wszystkich rodzajów palet . Jest taka możliwość ? Zrobiłem troszkę inaczej ,ale przy wyborze muszę pisać z ręki dokładnie jaką paletę chce i to troszkę nie wygodne  proszę zobaczyć :
SELECT
SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet przyjętych],
COUNT(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok__Dokument.dok_Typ END) AS [Liczba PZ],
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet wydanych],   
COUNT(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok__Dokument.dok_Typ END) AS [Liczba WZ],

SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) -
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) AS [Różnica],

adr__Ewid.adr_Nazwa AS [Kontrahent],
tw__Towar.tw_Nazwa AS Rodzaj,
adr__Ewid.adr_Telefon AS [Telefon]

FROM
dok__Dokument,
adr__Ewid,
dok_Pozycja,
tw__Towar

WHERE
(dok__Dokument.dok_Typ=10  OR dok__Dokument.dok_Typ=11)
and dok_DataWyst between DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0) -  {I:Data dzisiejsza - dni:40} and DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
AND (tw__Towar.tw_Nazwa LIKE '%{T: Rodzaj}%')
and dok__Dokument.dok_MagId=3
and tw__Towar.tw_IdGrupa=1
and tw__Towar.tw_Rodzaj=4
and dok_Pozycja.ob_DokMagId=dok__Dokument.dok_Id
and dok_Pozycja.ob_TowId = tw__Towar.tw_Id
and dok__Dokument.dok_PlatnikId=adr__Ewid.adr_IdObiektu
and adr__Ewid.adr_TypAdresu=1
AND (adr__Ewid.adr_Nazwa  LIKE '%{T: Kontrahent}%')


GROUP BY adr__Ewid.adr_Nazwa, adr__Ewid.adr_Telefon,tw__Towar.tw_Nazwa 


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17063
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Palety
« Odpowiedź #5 dnia: Marzec 04, 2014, 11:36:55 »
Pana rozwiązanie jest super  ale nie można wybrać wszystkich rodzajów palet . Jest taka możliwość ? Zrobiłem troszkę inaczej ,ale przy wyborze muszę pisać z ręki dokładnie jaką paletę chce i to troszkę nie wygodne  proszę zobaczyć :

Przed chwilą chciałeś coś innego i do tego się ustosunkowałem. Zmień kontrolkę wyboru opakowania z listy ma multiwybór, podstawę już masz... Możliwości tworzenia zestawień SQL i budowy filtrów są duże, filtry są opisane w pomocy do programu, zachęcam do lektury.
Daniel, Białystok.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #6 dnia: Marzec 04, 2014, 13:34:25 »
zamieniłem kontrolkę na multiwybor i działa możliwość zaznaczania ale jak zaznaczę więcej jak jedną to wywala "błąd wykonania zapytanie" przy zaznaczonym jednym opakowaniu zestawienie działa dobrze .Nie mogę dojść dlaczego . Całość zestawienia :
SELECT
SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet przyjętych],
COUNT(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok__Dokument.dok_Typ END) AS [Liczba PZ],
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet wydanych],   
COUNT(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok__Dokument.dok_Typ END) AS [Liczba WZ],

SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) -
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) AS [Różnica],

adr__Ewid.adr_Nazwa AS [Kontrahent],
tw__Towar.tw_Nazwa AS Rodzaj, 
adr__Ewid.adr_Telefon AS [Telefon]

FROM
dok__Dokument,
adr__Ewid,
dok_Pozycja,
tw__Towar

WHERE
(dok__Dokument.dok_Typ=10  OR dok__Dokument.dok_Typ=11)
and dok_DataWyst between DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0) -  {I:Data dzisiejsza - dni:40} and DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
and tw_Id = {CHL_DB:select tw_Id, tw_Symbol + ' - ' + tw_Nazwa from tw__Towar where tw_Zablokowany = 0 and tw_Rodzaj = 4:opakowanie}
and dok__Dokument.dok_MagId=3
and tw__Towar.tw_IdGrupa=1
and tw__Towar.tw_Rodzaj=4
and dok_Pozycja.ob_DokMagId=dok__Dokument.dok_Id
and dok_Pozycja.ob_TowId = tw__Towar.tw_Id
and dok__Dokument.dok_PlatnikId=adr__Ewid.adr_IdObiektu
and adr__Ewid.adr_TypAdresu=1
AND (adr__Ewid.adr_Nazwa  LIKE '%{T: Kontrahent}%')


GROUP BY adr__Ewid.adr_Nazwa, adr__Ewid.adr_Telefon,tw__Towar.tw_Nazwa

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17063
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Palety
« Odpowiedź #7 dnia: Marzec 04, 2014, 13:48:43 »
zamieniłem kontrolkę na multiwybor i działa możliwość zaznaczania ale jak zaznaczę więcej jak jedną to wywala "błąd wykonania zapytanie" przy zaznaczonym jednym opakowaniu zestawienie działa dobrze .Nie mogę dojść dlaczego .

Bo nie skorzystałeś z mojej rady i nie zapoznałeś się z pomocą do programu, cytat z tematu "Zestawienia własne SQL":

Cytuj
Dla zaznaczonych na liście CHL typów dokumentów do zapytania zostanie przekazany zbiór ich identyfikatorów. Z tych względów parametr ten powinien występować z takimi słowami kluczowymi języka T-SQL jak: IN, EXISTS, ANY.
Daniel, Białystok.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #8 dnia: Marzec 04, 2014, 14:55:29 »
skorzystałem z Twojej rady :) nawet sobie wydrukowałem pomoc  ale mimo zastosowania słowa kluczowego "in" umknęły mi nawiasy i dlatego nie mogłem sobie poradzić ale jeszcze raz przeczytałem dokładnie i dałem radę :) dziękuje za pomoc . Mam nadzieję ,że zestawienie spełni oczekiwania ale to wyjdzie w praniu :) . Jeszcze raz dzięki .
Zestawienie :
SELECT
SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet przyjętych],
COUNT(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok__Dokument.dok_Typ END) AS [Liczba PZ],
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc END) AS [Suma Palet wydanych],   
COUNT(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok__Dokument.dok_Typ END) AS [Liczba WZ],

SUM(CASE WHEN dok__Dokument.dok_Typ=10 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) -
SUM(CASE WHEN dok__Dokument.dok_Typ=11 THEN dok_Pozycja.ob_Ilosc ELSE 0 END) AS [Różnica],

adr__Ewid.adr_Nazwa AS [Kontrahent],
tw__Towar.tw_Nazwa AS Rodzaj, 
adr__Ewid.adr_Telefon AS [Telefon]

FROM
dok__Dokument,
adr__Ewid,
dok_Pozycja,
tw__Towar

WHERE
(dok__Dokument.dok_Typ=10  OR dok__Dokument.dok_Typ=11)
and dok_DataWyst between DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0) -  {I:Data dzisiejsza - dni:40} and DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
and (tw_Id in ({CHL_DB:select tw_Id, tw_Symbol + ' - ' + tw_Nazwa from tw__Towar where tw_Zablokowany = 0 and tw_Rodzaj = 4:opakowanie}))
and dok__Dokument.dok_MagId=3
and tw__Towar.tw_IdGrupa=1
and tw__Towar.tw_Rodzaj=4
and dok_Pozycja.ob_DokMagId=dok__Dokument.dok_Id
and dok_Pozycja.ob_TowId = tw__Towar.tw_Id
and dok__Dokument.dok_PlatnikId=adr__Ewid.adr_IdObiektu
and adr__Ewid.adr_TypAdresu=1
AND (adr__Ewid.adr_Nazwa  LIKE '%{T: Kontrahent}%')


GROUP BY adr__Ewid.adr_Nazwa, adr__Ewid.adr_Telefon,tw__Towar.tw_Nazwa

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #9 dnia: Marzec 06, 2014, 10:31:50 »
Mam jeszcze jedną zagwozdkę, jak zrobić żeby pokazywał wyniki tylko z dokumentów które zostały wystawione 60 dni temu  i starsze jak 60 dni  . Jest taka możliwość ?

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17063
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Palety
« Odpowiedź #10 dnia: Marzec 06, 2014, 10:37:45 »
Mam jeszcze jedną zagwozdkę, jak zrobić żeby pokazywał wyniki tylko z dokumentów które zostały wystawione 60 dni temu  i starsze jak 60 dni  . Jest taka możliwość ?

Wystarczy zmienić warunek na datę:

Cytuj
and dok_DataWyst <= DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0) -  {I:Data dzisiejsza - dni:60}
Daniel, Białystok.

Offline kubare

  • Nowy użytkownik
  • *
  • Wiadomości: 7
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25
Odp: Palety
« Odpowiedź #11 dnia: Marzec 06, 2014, 14:57:16 »
ok ,dzięki  wszystko działa .

Offline Matternhorn

  • Użytkownik
  • **
  • Wiadomości: 55
  • Reputacja +2/-0
  • Wersja programu: Navireo+Subiekt GT - zawsze aktualne.
Odp: Palety
« Odpowiedź #12 dnia: Styczeń 05, 2016, 10:30:11 »
Lub po prostu: and dok_DataWyst <= GETDATE() -  {I:Data dzisiejsza - dni:60} 

Forum Użytkownikow Subiekt GT

Odp: Palety
« Odpowiedź #12 dnia: Styczeń 05, 2016, 10:30:11 »