Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: kopio w Listopad 08, 2019, 11:16:06
-
Witam
Używam kliku nie fabrycznych zestawień SQL i wszystko z nimi ok, dotychczas wyniki były kopiowane do excel.
Jednak chciałbym je uruchamiać bezpośrednio z poziomu excel. I tu pojawia się problem , działają ok jednak na inych kompuyterach w subiekcie pojawiają się komunikaty o braku możliwości zapisu dokumentów. Problem po chwili ustępuje i wszystko jest ok do ponowanego "zapytania excel-sql".
Zapytanie Sql dodaje w Excel przez :
Dane / Z bazy danych / Z bazy danych programu SQL Server
i wklejam je w pole Instrukcje języka SQL .
Z góry dziękuje za podpowiedzi jak rozwiązać ten problem.
-
Zgaduje że jest to jakieś duże zestawienie które dość długo się "liczy"?
-
A to samo zestawienie odpalane z modułu zestawień Subiekta nie blokuje pracy? Jak to nie tajemnica to pokaż kod tego zestawienia.
-
Z poziomu Subiekta nie blokuje pracy.
SELECT
D.dok_DataWyst As [Data],
D.dok_NrPelny As [Numer faktury],
D.dok_Wystawil As [Wystawił],
adr_Nazwa As [Kontrahent],
D.dok_Tytul As [Tytuł],
D.dok_Podtytul As [Podtytuł],
D.dok_Uwagi[Uwagi],
tw_Symbol [Symbol towaru],
tw_Nazwa [Nazwa towaru],
SUM (ob_Ilosc * ob_Znak) [Ilość],
SUM (ob_WartNetto * ob_Znak) As [Netto],
SUM (ob_WartBrutto * ob_Znak ) - SUM (ob_WartNetto* ob_Znak) As[Vat],
SUM (ob_WartBrutto * ob_Znak ) As [Brutto]
FROM vwZstSprzWgKhnt VW
inner join dok__Dokument D ON D.doK_ID = VW.dok_Id
left join adr__Ewid on adr_IdObiektu = VW.dok_PlatnikId and adr_TypAdresu = 1
left join tw__Towar ON ob_TowId = tw_Id
WHERE
D.dok_DataWyst > '20181231'
GROUP BY
tw_Symbol,
tw_Nazwa,
D.dok_Nr,
D.dok_NrPelny,
D.dok_Uwagi,
D.dok_Wystawil,
D.dok_Tytul,
D.dok_Podtytul,
adr_Nazwa,
D.dok_DataWyst
-
Ja w Excelu nie używam zapytań i zgaduję tutaj ale na szybko znalazłem informację, że problem może tkwić w konfiguracji połączenia po stronie Excela. Jak wpiszujesz nazwę instancji w konfiguracji połączenia to spróbuj dopisać "np:" na początku, na przykład
SERVER=np:SQLSERVER\INSTANCJA
Ew. spróbuj podać IP zamiast nazwy instancji (wtedy bez dopisku np:).
-
Twoje zapytanie podczas wykonywania blokuje dostęp m.in do tabel dok__dokument i dok_pozycja co skutkuje tym, że nie możesz zapisać dokumentu.
Spróbuj dodać WITH (NOLOCK) po nazwach tabel/widoków (jeżeli masz alias to za aliasem).
Trzeba pamiętać, że rozwiązanie powoduje pewne ryzyko odczytu niepoprawnych danych.
-
Yemet, dziękuje za sugestie.
Tomaszf, tak wystarczy ?
...
FROM vwZstSprzWgKhnt VW
inner join dok__Dokument D WITH (NOLOCK) ON D.doK_ID = VW.dok_Id
left join adr__Ewid on adr_IdObiektu = VW.dok_PlatnikId and adr_TypAdresu = 1
left join tw__Towar ON ob_TowId = tw_Id
...
I czy w pewnym ryzyku odczytu niepoprawnych danych. chodzi o nie do końca aktualne dane czy większy bałagan ?