Autor Wątek: nie dzialajace zestawienie SQL  (Przeczytany 2813 razy)

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

Offline PeterMax

  • Nowy użytkownik
  • *
  • Wiadomości: 6
  • Reputacja +0/-0
  • Wersja programu: GT 1.08
nie dzialajace zestawienie SQL
« dnia: Marzec 26, 2019, 18:21:32 »
Klient zglosil iz nagle przestalo mu dzialac zestawienie SQL (blad wykonania zapytania). Po pobraniu zapytania i uruchomieniu na mojej wersji Subiekta (klient pracuje na dosc starej wersji) zestawienie dziala bez zarzutu.
Czy moze ktos z uzytkownikow moze mi podpowidziec gdzie moze lezec blad? (moge wkleic kod tego zestawienia). Najsmieszniejsze jest to iz to zestawienie chodzilo bez problemu kilka lat, odmowilo posluszenstwa bez widocznej przyczyny. (nie bylo aktualizacji ani zmian w ustawieniach - prznajmniej tak twierdzi klient).

Pozdrawiam
PeterMax

Offline Biniew

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4095
  • Reputacja +275/-17
  • Wersja programu: GT i Nexo
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #1 dnia: Marzec 26, 2019, 18:27:14 »
wklej i nie kaz nam wrozyc

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #2 dnia: Marzec 26, 2019, 18:29:38 »
Może to być timeout jeśli zestawienie długo się wykonuje. Mogło się coś rozjechać w ustawieniach listy co się może tak głupio objawiać (prawy myszy -> operacje na liście -> parametry listy -> przywróć domyślne). Odpalałeś zestawienie w SSMS?

Wklej zestawienie tu albo na PW to się obejrzy.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17056
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #3 dnia: Marzec 26, 2019, 19:32:42 »
Najsmieszniejsze jest to iz to zestawienie chodzilo bez problemu kilka lat, odmowilo posluszenstwa bez widocznej przyczyny. (nie bylo aktualizacji ani zmian w ustawieniach - prznajmniej tak twierdzi klient).

To sugeruje, że od początku nie było poprawne i powstał układ danych, który nie został obsłużony.
Daniel, Białystok.

Offline PeterMax

  • Nowy użytkownik
  • *
  • Wiadomości: 6
  • Reputacja +0/-0
  • Wersja programu: GT 1.08
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #4 dnia: Marzec 27, 2019, 14:24:51 »
Dziękuje wszystkim za odpowiedź.

Załączam zapytanie SQL

select
T.tw_Id AS [IndexTow],
T.tw_Nazwa AS [Towar],
T.tw_Opis AS [Opis],
T.tw_SWW AS [Ilosc w opakowaniu],
IsNull(IloúÊ,0) AS [Sprzedaz w okresie],
IsNull(st_Stan,0) As [Stan magazynowy]


from

tw__Towar T left join
(
SELECT
tw_Id,
CASE WHEN tw_Nazwa = '' THEN '(Brak nazwy towaru)' ELSE CASE WHEN tw_Nazwa IS NULL THEN '(Us≥uga jednorazowa)' ELSE tw_Nazwa END END As [Towar],
tw_Symbol As [Symbol],
tw_Opis As [Opis],
tw_SWW As [SWW],
SUM(IsNull(ob_IloscMag,0) * IsNull(ob_Znak,0)) as [IloúÊ],
tw_JednMiary As [jm],
SUM(IsNull(ob_WartBrutto,0) * IsNull(ob_Znak,0)) as [Brutto],
SUM(IsNull(ob_WartNetto,0) * IsNull(ob_Znak,0)) as [Netto],
SUM(CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE IsNull(ob_WartMag,0)*IsNull(ob_Znak,0) END) as Koszt,
SUM(((IsNull(ob_WartNetto,0)-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE IsNull(ob_WartMag,0) END) * IsNull(ob_Znak,0))) as Zysk
FROM tw__Towar left join dok_Pozycja ON ob_TowId = tw_Id
LEFT join  dok__Dokument On dok_id = ob_DokHanId
WHERE
(
 ( 
   dok_Status<>2  AND
   (
                ( dok_DataWyst BETWEEN {D:Data wystawienia od} AND {D:do} )     
                AND  (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,131073,131075,131074,262144,393216,393217,1376256,1376258,1376257,1376259,917504,917505)   )   
                AND  ob_TowRodzaj & 15 > 0   
   )
 )
 OR ob_Id is null
)
GROUP BY tw_Id,tw_Nazwa, tw_Symbol, tw_JednMiary, tw_Opis,tw_SWW
) a
ON T.tw_Id = a.tw_Id
LEFT JOIN tw_Stan on st_TowId = T.tw_Id AND st_MagId = {DB:Select mag_Id,mag_Nazwa from sl_Magazyn:Magazyn}

WHERE
(T.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  '({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)})' = '(-1)' )

ORDER BY T.tw_Nazwa

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17056
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #5 dnia: Marzec 27, 2019, 14:36:50 »
Po jakim czasie w sekundach pojawia się błąd ?
Daniel, Białystok.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: nie dzialajace zestawienie SQL
« Odpowiedź #6 dnia: Marzec 27, 2019, 14:51:21 »
Na oko, nawet bardzo na oko, działa ale długo się wykonuje. Na początek zamień

dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp)
na

((dbo.dok__Dokument.dok_Podtyp & 0xffff) | (dbo.dok__Dokument.dok_Typ & 0xffff) * 65536)
to powinno dość mocno poprawić czas wykonywania zapytania.

Po za tym zapytanie jest przekombinowane nieco. Dałoby się napisać to lepiej i prościej.
Nie będzie to też łapać prawidłowo sprzedaży na fakturach zbiorczych.
« Ostatnia zmiana: Marzec 27, 2019, 14:52:57 wysłana przez yemet »

Forum Użytkownikow Subiekt GT

Odp: nie dzialajace zestawienie SQL
« Odpowiedź #6 dnia: Marzec 27, 2019, 14:51:21 »