InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: igla84 w Czerwiec 28, 2016, 11:46:56
-
Witam wszystkich, właśnie próbuje zrobić zestawienie SQL przyjęcia magazynowe i brakuje mi jednej danej jakie oznaczenie mam ma dokument PW wiem że PZ to 655360 może ktoś z Was zna odpowiedz??
-
Witam wszystkich, właśnie próbuje zrobić zestawienie SQL przyjęcia magazynowe i brakuje mi jednej danej jakie oznaczenie mam ma dokument PW wiem że PZ to 655360 może ktoś z Was zna odpowiedz??
Pogrubione wyżej - na pewno nie. To może być Id, a to co innego niż typ obiektu.
PZ - typ 10, PW - typ 12.
-
Pogrubione powyżej dotyczy PZ zwykłego. Jest to typ długi (obejmujący i typ i podtyp)
Typ długi dla PW to 786432
-
Wstawiłem : dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#test#12#:Typ dokumentu:-1:Dowolny}
)) OR
(-1 IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#test#12#:Typ dokumentu:-1:Dowolny}) AND dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN (655360, 655361, 12)
)
i niestety nie pokazuje mi czy wstawię 12 czy 786432 nie wyświetla mi żadnej pozycji natomiast jeśli wpiszę 10 to bez problemu wyskakuje co może być problemem ??
-
Po pierwsze - funkcja dbo.fnMAKE_DOKPARAM nigdy nie zwróci wyniku 12, więc ten zapis jest bez sensu.
Po drugie - nie widzę całości warunku, a masz tam operatory AND i OR, w przypadku których kolejność nawiasów jest bardzo ważna.
-
Co prawda nie wiem z jakiego źródła pobierasz dane (co to jest VW?), ale po zamianie 12 na 786432, bezpośrednio na dok__Dokument, po lekkim uporządkowaniu działa bez problemu:
SELECT dok_Id, dok_NrPelny, dok_Typ, dok_PodTyp FROM dok__Dokument
WHERE
(dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp)
IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny})
) OR
(-1 IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny})
AND dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (655360, 655361, 786432)
-
SELECT
adr_Nazwa As[Kontrahent],
tw_Nazwa As [Towar],
tw_Symbol As [Symbol],
ISNULL(grt_Nazwa,'(brak)') As [Grupa towaru],
tw_JednMiary As [JM],
SUM(ob_IloscMag * ob_Znak) as [Ilość],
dok_NrPelny As [Nr dokumentu],
VW.dok_DataWyst As [Data],
dok_UWagi As [Uwagi]
FROM
vwZstPrzWgKhnt VW
inner join dok__Dokument D on D.dok_Id = VW.dok_Id
inner join tw__Towar on tw_Id = ob_TowId
inner join kh__Kontrahent on kh_Id = VW.dok_OdbiorcaId
left join adr__Ewid on adr_IdObiektu = kh_Id and adr_TypAdresu = 1
left join sl_Kategoria on kat_Id = VW.dok_KatId
left join sl_GrupaTw on grt_Id = tw_IdGrupa
WHERE
VW.dok_DataWyst BETWEEN {DR:Okres:}
and
(
VW.dok_KatId IN
({CHL_DB:SELECT -1 AS kat_Id,'(dowolna)' As kat_Nazwa UNION SELECT kat_Id,kat_Nazwa FROM sl_Kategoria:Kategoria:-1:(dowolna)})
OR
((-1) IN ({CHL_DB:SELECT -1 AS kat_Id,'(dowolna)' As kat_Nazwa UNION SELECT kat_Id,kat_Nazwa FROM sl_Kategoria:Kategoria:-1:(dowolna)}))
)
and
(
VW.dok_MagId in
({CHL_DB:Select -1 As mag_Id,'(dowolny)' As mag_Nazwa UNION SELECT mag_Id,mag_Nazwa from sl_Magazyn:Magazyn:-1:(dowolny)})
OR (-1) IN ({CHL_DB:Select -1 As mag_Id,'(dowolny)' As mag_Nazwa UNION SELECT mag_Id,mag_Nazwa from sl_Magazyn:Magazyn:-1:(dowolny)})
)
AND
(
tw_IdGrupa IN
({CHL_DB:SELECT -1 AS grt_Id,'(dowolna)' As grt_Nazwa UNION SELECT grt_Id,grt_Nazwa FROM sl_GrupaTw:Grupa towaru:-1:(dowolna)})
OR
((-1) IN ({CHL_DB:SELECT -1 AS grt_Id,'(dowolna)' As grt_Nazwa UNION SELECT grt_Id,grt_Nazwa FROM sl_GrupaTw:Grupa towaru:-1:(dowolna)}))
)
and
(tw_Id
IN
(SELECT cht_IdTowar FROM tw_CechaTw WHERE cht_IdCecha IN ({CHL_DB:SELECT -1 AS ctw_Id,'(dowolna)' As ctw_Nazwa UNION SELECT ctw_Id,ctw_Nazwa FROM sl_CechaTw ORDER BY ctw_Nazwa:Cecha towaru:-1:(dowolna)})) OR
-1 IN ({CHL_DB:SELECT -1 AS ctw_Id,'(dowolna)' As ctw_Nazwa UNION SELECT ctw_Id,ctw_Nazwa FROM sl_CechaTw ORDER BY ctw_Nazwa:Cecha towaru:-1:(dowolna)}) )
AND
(kh_IdGrupa IN
({CHL_DB:SELECT -1 AS grk_Id,'(dowolna)' As grk_Nazwa UNION SELECT grk_Id,grk_Nazwa FROM sl_GrupaKh:Grupa kontrahenta:-1:(dowolna)})
OR
-1 IN ({CHL_DB:SELECT -1 AS grk_Id,'(dowolna)' As grk_Nazwa UNION SELECT grk_Id,grk_Nazwa FROM sl_GrupaKh:Grupa kontrahenta:-1:(dowolna)})
)
and
(kh_Id IN
(
SELECT ck_IdKhnt FROM kh_CechaKh WHERE ck_IdCecha IN ({CHL_DB:SELECT -1 AS ckh_Id,'(dowolna)' As ckh_Nazwa UNION SELECT ckh_Id,ckh_Nazwa FROM sl_CechaKh ORDER BY ckh_Nazwa:Cecha kontrahenta:-1:(dowolna)}) )
OR -1 in ({CHL_DB:SELECT -1 AS ckh_Id,'(dowolna)' As ckh_Nazwa UNION SELECT ckh_Id,ckh_Nazwa FROM sl_CechaKh ORDER BY ckh_Nazwa:Cecha kontrahenta:-1:(dowolna)})
)
AND
(
(
dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny}
)) OR
(-1 IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny}) AND dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN (655360, 655361,786432)
)
)
AND (kh_Id IN ({LM:KH:Kontrahent:}) oR -1 IN ({LM:KH:Kontrahent:}) )
AND (tw_Id IN ({LM:TW:Towar:}) oR -1 IN ({LM:TW:Towar:}) )
group by tw_Nazwa,tw_Symbol,tw_JednMiary,kh_Id,adr_Nazwa,VW.dok_DataWyst,kat_Nazwa,grt_Nazwa,dok_NrPelny,dok_UWagi
order by adr_Nazwa,Data,Towar
-
Widzę że VW to dok__Dokument, czyli mój przykład jest OK.
Wybacz, ale całości analizować nie będę.
-
Czyli wychodziło by na to , że korzystam ze złej tabeli tak ?? Próbowałem to zmodyfikować ale nie dałem rady!
-
OK. Nie che mi się analizować całości, ale:
Po co jest ten fragment " AND dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN (655360, 655361,786432) "?
Może jestem jeszcze przed kawą, ale nie bardzo rozumiem.
Wykonałem zapytanie:
select vw.dok_DataWyst, d.dok_NrPelny,dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) typdlugi from vwZstPrzWgKhnt vw
inner join dok__Dokument d on d.dok_Id=vw.dok_Id
where 1=1
AND
(
(
dbo.fnMAKE_DOKPARAM(VW.dok_Typ, VW.dok_Podtyp) IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny}
)) OR
(-1 IN ({CHL:Dowolny#-1#Przyjęcie zewnętrzne PZ#655360#Automatyczna PZ KFS#655361#PW#786432#:Typ dokumentu:-1:Dowolny})
)
)
i wydaje się być wszystko OK.
Może poza tym, że 655361 to jest automatyczne PZ niekoniecznie do KFS. Równie dobrze może być do FZ
EDIT:
PW nie ma kontrahenta, więc złączenie jest błędne.
-
Nie, coś mnie rozkojarzyło zupełnie i napisałem jakąś bzdurę.
Oczywiście, widać że VW to vwZstPrzWgKhnt.
W rewanżu rzuciłem okiem na kod i to co pisałeś o warunkach.
Robisz INNER JOIN między vwZstPrzWgKhnt oraz kh__Kontrahent po dok_OdbiorcaId
Tyle, że PW nie ma odbiorcy i dla tego dokumentu dok_OdbiorcaId jest NULL.
Musisz przewidzieć obsługę takiej sytuacji, poczynając od zmiany INNER JOIN na LEFT JOIN, potem wartości liczbowe itd