Autor Wątek: dok_typ ??  (Przeczytany 4767 razy)

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

Offline igla84

  • Nowy użytkownik
  • *
  • Wiadomości: 39
  • Reputacja +0/-0
  • Wersja programu: GT 1.34
dok_typ ??
« dnia: 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??

Offline Aldo

  • Ekspert
  • *****
  • Wiadomości: 10695
  • Reputacja +433/-13
  • Wersja programu: najnowsza
Odp: dok_typ ??
« Odpowiedź #1 dnia: Czerwiec 28, 2016, 12:09:16 »
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.

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9210
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: dok_typ ??
« Odpowiedź #2 dnia: Czerwiec 28, 2016, 13:27:20 »
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
Sławek, Zduńska Wola

Offline igla84

  • Nowy użytkownik
  • *
  • Wiadomości: 39
  • Reputacja +0/-0
  • Wersja programu: GT 1.34
Odp: dok_typ ??
« Odpowiedź #3 dnia: Czerwiec 29, 2016, 08:41:06 »
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 ??

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9210
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: dok_typ ??
« Odpowiedź #4 dnia: Czerwiec 29, 2016, 09:38:30 »
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.

Sławek, Zduńska Wola

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4876
  • Reputacja +172/-11
Odp: dok_typ ??
« Odpowiedź #5 dnia: Czerwiec 29, 2016, 09:40:35 »
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)
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline igla84

  • Nowy użytkownik
  • *
  • Wiadomości: 39
  • Reputacja +0/-0
  • Wersja programu: GT 1.34
Odp: dok_typ ??
« Odpowiedź #6 dnia: Czerwiec 29, 2016, 09:41:01 »
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

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4876
  • Reputacja +172/-11
Odp: dok_typ ??
« Odpowiedź #7 dnia: Czerwiec 29, 2016, 10:17:56 »
Widzę że VW to dok__Dokument, czyli mój przykład jest  OK.
Wybacz, ale całości analizować nie będę.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline igla84

  • Nowy użytkownik
  • *
  • Wiadomości: 39
  • Reputacja +0/-0
  • Wersja programu: GT 1.34
Odp: dok_typ ??
« Odpowiedź #8 dnia: Czerwiec 29, 2016, 10:18:44 »
Czyli wychodziło by na to , że korzystam ze złej tabeli tak ?? Próbowałem to zmodyfikować ale nie dałem rady!

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9210
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: dok_typ ??
« Odpowiedź #9 dnia: Czerwiec 29, 2016, 10:29:33 »
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.
« Ostatnia zmiana: Czerwiec 29, 2016, 10:35:27 wysłana przez birds22 »
Sławek, Zduńska Wola

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4876
  • Reputacja +172/-11
Odp: dok_typ ??
« Odpowiedź #10 dnia: Czerwiec 29, 2016, 10:36:16 »
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

Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Forum Użytkownikow Subiekt GT

Odp: dok_typ ??
« Odpowiedź #10 dnia: Czerwiec 29, 2016, 10:36:16 »