Autor Wątek: Zapytanie do bazy GT z poziomu Excel  (Przeczytany 3147 razy)

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

Offline kopio

  • Nowy użytkownik
  • *
  • Wiadomości: 18
  • Reputacja +0/-0
  • Wersja programu: Subiekt - najnowsza
Zapytanie do bazy GT z poziomu Excel
« dnia: 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.

Offline tomaszf

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 523
  • Reputacja +12/-0
  • Wersja programu: Subiekt GT 1.66
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #1 dnia: Listopad 08, 2019, 11:19:41 »
Zgaduje że jest to jakieś duże zestawienie które dość długo się "liczy"?

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #2 dnia: Listopad 08, 2019, 12:12:19 »
A to samo zestawienie odpalane z modułu zestawień Subiekta nie blokuje pracy? Jak to nie tajemnica to pokaż kod tego zestawienia.

Offline kopio

  • Nowy użytkownik
  • *
  • Wiadomości: 18
  • Reputacja +0/-0
  • Wersja programu: Subiekt - najnowsza
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #3 dnia: Listopad 08, 2019, 12:40:51 »
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

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #4 dnia: Listopad 08, 2019, 13:00:00 »
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:).

Offline tomaszf

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 523
  • Reputacja +12/-0
  • Wersja programu: Subiekt GT 1.66
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #5 dnia: Listopad 08, 2019, 15:40:05 »
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.

Offline kopio

  • Nowy użytkownik
  • *
  • Wiadomości: 18
  • Reputacja +0/-0
  • Wersja programu: Subiekt - najnowsza
Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #6 dnia: Listopad 09, 2019, 11:47:34 »
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 ?


Forum Użytkownikow Subiekt GT

Odp: Zapytanie do bazy GT z poziomu Excel
« Odpowiedź #6 dnia: Listopad 09, 2019, 11:47:34 »