Dodanie kolumny PW do tabeli z dokumentami RW

Problemy i pomysły związane z funkcjonowaniem modułu Księgowość

Moderator: mikey

Onek
Posty: 9
Rejestracja: 25 maja 2020, 10:14
Rola: Użytkownik CDN XL
Wersja: 2019

Dodanie kolumny PW do tabeli z dokumentami RW

Post autor: Onek »

Witam,
Mam pytanie, potrzebuję dodać do widoku Dokumenty - RW kolumnę z powiązanymi PW.
Powiązanie jest na poziomie zlecenie produkcyjnego.
Napisałem kod, który wypluwa mi wszystkie dokumenty RW i PW do danego zlecenia, mam tylko problem w jaki sposób dodać same dokumenty PW jako nową kolumnę przy RW.

Kod: Zaznacz cały

SELECT PZA_PZLId,
cdn.NumerDokumentu (trn_gidtyp, trn_spityp, trn_trntyp, trn_trnnumer, trn_trnrok, trn_trnseria, trn_trnmiesiac) as 'Dokument'
FROM CDN.ProdZlecenia
INNER JOIN CDN.ProdProcesy ON CDN.ProdProcesy.PPC_Zlecenie = CDN.ProdZlecenia.PZL_Id
INNER JOIN CDN.ProdCzynnosci ON PCZ_Proces = PPC_Id
INNER JOIN CDN.ProdZasoby ON PZA_Czynnosc = PCZ_Id
INNER JOIN CDN.TraSElem ON CDN.ProdZasoby.PZA_Id = CDN.TraSElem.TrS_ZlcNumer AND TrS_ZlcTyp = 14346 
INNER JOIN CDN.TraNag ON CDN.TraSElem.TrS_GIDNumer = CDN.TraNag.TrN_GIDNumer
Może miał ktoś podobne zagadnienie i jest w stanie mnie naprowadzić.

elmiq
Posty: 1023
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Wersja: różne
Lokalizacja: Warszawa

Re: Dodanie kolumny PW do tabeli z dokumentami RW

Post autor: elmiq »

Sugeruje opakować to w funkcję skalarną i w niej zrealizować sklejanie pól tekstowych. Tutaj opcji jest dużo, najpopularniejsze rozwiązania to COALESCE, bądź FOR XML PATH.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

Onek
Posty: 9
Rejestracja: 25 maja 2020, 10:14
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Dodanie kolumny PW do tabeli z dokumentami RW

Post autor: Onek »

Próbuje z :

Kod: Zaznacz cały

SELECT [PZA_PZLId], numer = STUFF((
SELECT N', ' + cdn.NumerDokumentu (trn_gidtyp, trn_spityp, trn_trntyp, trn_trnnumer, trn_trnrok, trn_trnseria, trn_trnmiesiac) FROM CDN.ProdZlecenia
 WHERE [PZA_PZLId] = [PZA_PZLId]
FOR XML PATH(''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 2, N'')
FROM CDN.ProdZlecenia as x
INNER JOIN CDN.ProdProcesy ON CDN.ProdProcesy.PPC_Zlecenie = x.PZL_Id
INNER JOIN CDN.ProdCzynnosci ON PCZ_Proces = PPC_Id
INNER JOIN CDN.ProdZasoby ON PZA_Czynnosc = PCZ_Id
INNER JOIN CDN.TraSElem ON CDN.ProdZasoby.PZA_Id = CDN.TraSElem.TrS_ZlcNumer AND TrS_ZlcTyp = 14346 
INNER JOIN CDN.TraNag ON CDN.TraSElem.TrS_GIDNumer = CDN.TraNag.TrN_GIDNumer
order by PZA_PZLId 
Niestety wynik nie pokazuje tylko jednej linii dla danego id zlecenia. Zaczyna brakować mi pomysłów.
Plus przy dodawaniu kolumny chciałem użyć opcji {filtrSQL} odnosząc się do zapytania

Kod: Zaznacz cały

SELECT PZA_PZLId,
cdn.NumerDokumentu (trn_gidtyp, trn_spityp, trn_trntyp, trn_trnnumer, trn_trnrok, trn_trnseria, trn_trnmiesiac) as 'Dokument'
FROM CDN.ProdZlecenia
INNER JOIN CDN.ProdProcesy ON CDN.ProdProcesy.PPC_Zlecenie = CDN.ProdZlecenia.PZL_Id
INNER JOIN CDN.ProdCzynnosci ON PCZ_Proces = PPC_Id
INNER JOIN CDN.ProdZasoby ON PZA_Czynnosc = PCZ_Id
INNER JOIN CDN.TraSElem ON CDN.ProdZasoby.PZA_Id = CDN.TraSElem.TrS_ZlcNumer AND TrS_ZlcTyp = 14346 
INNER JOIN CDN.TraNag ON CDN.TraSElem.TrS_GIDNumer = CDN.TraNag.TrN_GIDNumer
Niestety w takim wypadku filtrSQL na poziomie dokumentu RW zwarca TrN_TrNTyp = 5.

Proszę o poradę czy podchodzę do tematu od dobrej strony.

Pozdrawiam,
Szymon

ODPOWIEDZ