Radomił Ząbik 308 Napisano 29 Lipca 2020 Udostępnij Napisano 29 Lipca 2020 w Raport własny SQL, z zastosowanie tablicy tymczasowej Jeden z klientów wymyślił na tyle skomplikowany raport SQL, że musiałem w nim zastosować tablicę tymczasową. Zgodnie ze znanymi mi metodami, przygotowałem Sobie zapytania, które bez problemu działają w standardowym menadżerze SQL. Oczywiście w międzyczasie wkleiłem kod do edycji raportu NEXO i także przeszedł poprawnie walidację, ale ... podczas uruchamiana raportu, pojawia się błąd: Link to postu
Jerzy Dudra 38 Napisano 30 Lipca 2020 Udostępnij Napisano 30 Lipca 2020 w Raport własny SQL, z zastosowanie tablicy tymczasowej (edytowane) Potwierdzam problem. Doraźnie można zastąpić tabelę tymczasową "zwykłą" tabelą, którą w treści raportu przed wyliczeniem można czyścić, np. jakoś tak: Tworzenie tabeli roboczej (np. w Management Studio) CREATE TABLE dbo.RoboczaTabelaRaportu ( ID INT NOT NULL, Tekst NVARCHAR(50), ) i w raporcie: -- "Czyszczenie" tabeli roboczej TRUNCATE TABLE dbo.RoboczaTabelaRaportu -- Wypełnianie INSERT INTO RoboczaTabelaRaportu VALUES(1, 'A') INSERT INTO RoboczaTabelaRaportu VALUES(2, 'B') INSERT INTO RoboczaTabelaRaportu VALUES(3, 'C') -- Zapytanie SELECT * FROM dbo.RoboczaTabelaRaportu Problem z tabelą tymczasową wynika z tego, że raport SQL przed uruchomieniem sprawdza strukturę zapytania, bez wykonywania go (używa flagi SET FMTONLY ON), co powoduje, że tabela tymczasowa nie powstaje. Stąd komunikat błędu. Można rozważyć również zastąpienie tabeli tymczasowej zmienną tabelaryczną. Zapytanie w raporcie mogło by wyglądać tak: DECLARE @MyT TABLE ( ID INT NOT NULL, Tekst NVARCHAR(50) ) ; INSERT INTO @MyT VALUES(1, 'A') INSERT INTO @MyT VALUES(2, 'B') INSERT INTO @MyT VALUES(3, 'C') SELECT * FROM @MyT Edytowane 30 Lipca 2020 przez Jerzy Dudra Rozbudowanie odpowiedzi Link to postu
Radomił Ząbik 308 Napisano 31 Lipca 2020 Autor Udostępnij Napisano 31 Lipca 2020 w Raport własny SQL, z zastosowanie tablicy tymczasowej Nie ukrywam, że rozwiązanie z tabelą tymczasową, ma dwie przewagi, względem proponowanych przez Pana rozwiązań, które zresztą miałem w planie awaryjnym: - nie muszę ingerować w bazę klienta, tym bardziej, że pracuję z nim zdalnie, a zdecydowanie łatwiej wytłumaczyć wklejeni kodu do okna raportu, niż odpalenie Managment Studio i tworzenie rekordów. - zmienna tebelaryczna, to rozwiązanie, w które planowałem awaryjnie iść, jedyne co, to lenistwo deklarowania na etapie projektowania raportu mnie zniechęciło, bo tymczasowej nie muszę tak mocno deklarować Pytanie, czy problem planujecie rozwiązywać na przyszłość, czy to raczej zawracanie gitary z mojej strony i dostosować się do pisania raportów bez tablic tymczasowych? Link to postu
Jerzy Dudra 38 Napisano 31 Lipca 2020 Udostępnij Napisano 31 Lipca 2020 w Raport własny SQL, z zastosowanie tablicy tymczasowej Problem który występuje w Pana rozwiązaniu, postaramy się rozwiązać. Nie mogę jednak obiecać, że do najbliższej wersji. 1 Link to postu
Polecane posty