Radomił Ząbik 306 Napisano 2 Września 2021 Udostępnij Napisano 2 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Chciałem zrobić selekcję typu dokumentu, na podstawie zadeklarowanej zmiennej tablicowej i otrzymuję błąd: Cytat Must declare the table variable W samy SQL przechodzi, a w NEXO nie pasuje Jak coś, kluczowe elementy kodu: DECLARE @typyDokumentu TABLE (Id INT,Nazwa NVARCHAR(256),Opis NVARCHAR(256),Symbol NVARCHAR(256)); INSERT INTO @typyDokumentu VALUES(1,'ZamowienieOdKlienta','Zamówienie od klienta','ZK'); WHERE td.Id IN ({CHL:Typ:SELECT Id, Nazwa FROM @typyDokumentu ORDER BY Nazwa}) OR 'NULL'='{CHL:Typ:SELECT Id, Nazwa FROM @typyDokumentu ORDER BY Nazwa}' Link to postu
Jerzy Dudra 38 Napisano 6 Września 2021 Udostępnij Napisano 6 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Problem tkwi w tym, że zapytanie z definicji parametru CHL (fragment definicji {CHL:Typ:<zapytanie sql>}) jest wykonywane niezależnie od 'głównego zapytania'. W praktyce oznacza to, że nie ma w nim <zapytanie sql> dostępu do zmiennych, tabel tymczasowych zdefiniowanych z 'głównym zapytaniu' Działające obejście, jakie mogę zaproponować, to użycie zwykłej tabeli SQL(CREATE TABLE _typyDoumentow ... ) dla listy typów dokumentów. Link to postu
Radomił Ząbik 306 Napisano 6 Września 2021 Autor Udostępnij Napisano 6 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Hmm, staram się dla pierdół nie tworzyć tabel w bazach klientów, ale jak trzeba będzie, to tak zrobię. A jest ewentualnie inna metoda obejścia tego problemu - normalnie parametr CHL, nie pozwala na inne niż INT identyfikatory wybieranych z listy elementów. A może jest jakaś ukryta systemowa możliwość wybierania typów dokumentów? Link to postu
Jerzy Dudra 38 Napisano 6 Września 2021 Udostępnij Napisano 6 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Teoretycznie można użyć wariantu parametru {CHL..} z jawnym wskazaniem dostępnych typów ({CHL:Typ dok:ZK#1#FS#2}). Jeżeli lista typów jest długa lub często występuje w definicji, definicja raportu robi się zagmatwana. Lista wartości dla 'Typ elementu' nie jest dostępna z poziomu bazy danych. Link to postu
Radomił Ząbik 306 Napisano 6 Września 2021 Autor Udostępnij Napisano 6 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Tylko, aby odczytać z tablicy Dokumenty, wybrane typy, musiałbym mieć wartość tekstową dla kolumny Symbol albo mdmDescription, a CHL nie przepuszcza klucza tekstowego. Przez wartość z typu wyliczeniowego InsERT.Moria.Dokumenty.Logistyka.TypDokumentu, nie da się chyba odfiltrować w tablicy dokumenty? Link to postu
Jacek Izydorczyk 1 322 Napisano 6 Września 2021 Udostępnij Napisano 6 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Zdaje się, że zadziała coś takiego: WHERE (Symbol LIKE 'ZK' AND 1 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) OR (Symbol LIKE 'FS' AND 2 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) OR (Symbol LIKE 'PA' AND 3 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) .... 1 Link to postu
Radomił Ząbik 306 Napisano 7 Września 2021 Autor Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej 8 godzin temu, Jacek Izydorczyk napisał: WHERE (Symbol LIKE 'ZK' AND 1 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) OR (Symbol LIKE 'FS' AND 2 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) OR (Symbol LIKE 'PA' AND 3 IN {CHL:Typ dok:ZK#1#FS#2#PA#3}) No właśnie takiego dziubania chciałem uniknąć, ale widać nie ma szans, znowu za dużo SQL'a oczekiwałem od raportów SQL Link to postu
Wojciech Szopiński 224 Napisano 7 Września 2021 Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Symbole typów dokumentów można wyciągnąć bezpośrednio z tabeli Dokumenty: SELECT DISTINCT Symbol FROM ModelDanychContainer.Dokumenty; Co będzie miało zaletę taką, że pokaże tylko te typy dokumentów, które w bazie istnieją. Można również oprzeć się na tabeli Konfiguracje: SELECT Symbol, Nazwa FROM ModelDanychContainer.Konfiguracje WHERE Domyslna = 1 AND TypDokumentu = 64; Tutaj wyciągniemy z bazy wszystkie dostępne typy dokumentów. Istotne jest, aby odfiltrować tylko konfiguracje domyślne (Domyslna = 1) oraz odpowiednio przefiltrować je wg kolumny TypDokumentu (w powyższym przykładzie odfiltrowane są tylko dokumenty sprzedaży). Kolumna TypDokumentu przyjmuje wartości z enuma InsERT.Moria.Dokumenty.Logistyka.TypDokumentu. 1 Link to postu
Radomił Ząbik 306 Napisano 7 Września 2021 Autor Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Ok, metoda z użyciem Konfiguracji działa - pozostaje tylko dopasować teraz typy dokumentów Teraz już widzę, że podstawą mojego problemu było to, że sprawdziłem definicję CHL tekstowo, w zapytaniu, a tam nie można używać tekstu jako klucze - wyrzuca błędem definicji. Jak się użyje zapytania, to klucze tekstowe przechodzą. Aczkolwiek fajnie by było coś zrobić z kluczami tekstowymi w CHL, bo niekiedy trzeba coś tam wrzucić wynikającego z jakiś tam danych, a nie zawsze jest możliwość wrzucania tabeli do bazy klienta, ba, czasem nawet nie chce się tego robić. Jak coś, wersja na próbę, dla potomnych: SELECT Id [Id] ,NumerWewnetrzny_PelnaSygnatura [Numer] FROM ModelDanychContainer.Dokumenty WHERE Symbol IN ({CHL:Typ:SELECT Symbol, Nazwa FROM ModelDanychContainer.Konfiguracje WHERE Domyslna = 1 AND TypDokumentu = 64}) OR 'NULL'='{CHL:Typ:SELECT Symbol, Nazwa FROM ModelDanychContainer.Konfiguracje WHERE Domyslna = 1 AND TypDokumentu = 64}' P.S. Tak Swoją drogą, to czemu w definicji tekstowej CHL, jest nazwa#klucz#nazwa#klucz, a jak się ją robi przez zapytanie SQL, to jest klucz#nazwa? 1 Link to postu
Wojciech Szopiński 224 Napisano 7 Września 2021 Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej Powyższe zapytanie, które Panu wysłałem nie uwzględnia jeszcze korekt dokumentów. Pełne zapytanie z uwzględnieniem korekt powinno wyglądać mniej więcej tak: (SELECT Symbol, Nazwa FROM ModelDanychContainer.Konfiguracje WHERE Domyslna = 1 AND TypDokumentu = 64) UNION ALL (SELECT KorektaSymbol AS Symbol, KorektaTytul AS Nazwa FROM ModelDanychContainer.Konfiguracje WHERE Domyslna = 1 AND TypDokumentu = 64); 1 Link to postu
Jerzy Dudra 38 Napisano 7 Września 2021 Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej W sprawie identyfikatorów typu tekstowego w {CHL:} zapisuję sugestię. Jeżeli chodzi o kolejność klucz,nazwa to tego na pewno nie dotkniemy Link to postu
Radomił Ząbik 306 Napisano 7 Września 2021 Autor Udostępnij Napisano 7 Września 2021 w [Raport SQL] Lista wyboru, na podstawie zdeklarowanej zmiennej tablicowej 2 minuty temu, Jerzy Dudra napisał: Jeżeli chodzi o kolejność klucz,nazwa to tego na pewno nie dotkniemy Nawet tego nie oczekiwałem, i nikt tego nie oczekuje, bo za dużo raportów w świecie. Zaciekawił mnie tylko brak konsekwencji, bo się notorycznie na to łapie, ale to pewnie robota Microsoftu, a u nich to norma Link to postu
Polecane posty