StudioSystem

Baza_widok_tabela - mapowanie widoku na kolumny

Raport dokumentujący mechanizm adm_widok_kolumny.aspx: jak system automatycznie generuje kolumny widoku na podstawie wyniku zapytania SQL i utrzymuje je w zgodzie ze zmieniającymi się danymi.

studiosystem.softwarestudio.com.pl/baza-danych/
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
W skrócie

Baza_widok_tabela to raport RDL dokumentujący jeden poziom głębiej niż raport Baza_widok - nie sam fakt istnienia widoku, ale konkretne kolumny, jakie system wygenerował dla niego automatycznie na podstawie zapytania SQL, wraz z mechanizmem transakcji adm_widok_kolumny.aspx odpowiedzialnym za ich utrzymanie.

Czym jest raport Baza_widok_tabela

Widok w StudioSystem to w praktyce zapytanie SQL plus konfiguracja jego prezentacji - ale sama konfiguracja prezentacji nie powstaje ręcznie, kolumna po kolumnie, jedna za drugą. Odpowiada za nią osobny mechanizm, opisany szczegółowo w transakcji adm_widok_kolumny.aspx. Raport Baza_widok_tabela eksportuje wynik działania tego mechanizmu - powiązanie między widokiem a wygenerowanymi dla niego kolumnami.

Podobnie jak pozostałe raporty z tej rodziny, plik jest w formacie RDL i edytuje się go w Microsoft Report Builder 3.x. Adresatem jest ponownie osoba techniczna - administrator albo programista analizujący, dlaczego dany widok pokazuje akurat taki, a nie inny zestaw kolumn.

Razem z raportem Baza_sql i raportem Baza_widok tworzy trzeci element tej samej rodziny dokumentacji technicznej - każdy z nich patrzy na tę samą bazę danych z innego poziomu szczegółowości. Baza_sql opisuje zapytania formularzy zapisu, Baza_widok - definicje samych widoków, a Baza_widok_tabela schodzi jeszcze niżej, do pojedynczej kolumny w konkretnym zestawieniu.

Mechanizm adm_widok_kolumny.aspx

Definicja widoku przechowywana jest w tabeli x_zestawienia, natomiast wygenerowane dla niego kolumny - w osobnej tabeli x_zestawienia_kolumny. Transakcja adm_widok_kolumny.aspx spina te dwie tabele: na starcie odczytuje parametr refno z żądania HTTP, identyfikujący konkretny widok, a jeśli parametr nie zostanie dostarczony, zwraca użytkownikowi komunikat błędu zamiast próbować zgadywać, o który widok chodzi.

Na podstawie zapytania SQL zapisanego dla wskazanego widoku system generuje strukturę kolumn i przekierowuje użytkownika do właściwej strony z gotowym zestawieniem. Cały proces jest zautomatyzowany - administrator nie definiuje kolumn ręcznie, tylko dostarcza zapytanie SQL, a resztę wykonuje mechanizm opisany w kolejnej sekcji.

Warto zaznaczyć, że sam parametr refno nie jest numerem kolumny ani numerem rekordu danych - to numer referencyjny wiersza w tabeli x_zestawienia, a więc identyfikator samego widoku, dla którego mechanizm ma odtworzyć lub zaktualizować strukturę kolumn. Ten sam schemat nazewnictwa parametru spotyka się zresztą w wielu innych transakcjach platformy - refno niemal zawsze oznacza „numer referencyjny rekordu, którego dotyczy operacja”, niezależnie od tego, czy chodzi o widok, dokument magazynowy czy kartotekę kontrahenta.

StudioSystem

Jedno kliknięcie zamiast ręcznej konfiguracji

Administrator klika jedno polecenie w interfejsie, a system w tle odczytuje zapytanie, wykonuje je i buduje kolumny wyniku.

Kluczowe funkcje warstwy serwerowej

Logika transakcji podzielona jest na kilka funkcji, z których każda odpowiada za wąski, dobrze określony fragment procesu:

FunkcjaZadanie
Page_LoadOdczytuje parametr refno, identyfikuje widok i przekierowuje do właściwej strony
UtworzStruktureWykonuje zapytanie SQL widoku i generuje na jego podstawie kolumny
CzyKolumnaIstniejeSprawdza w x_zestawienia_kolumny, czy dana kolumna już istnieje, unikając duplikatów
PodstawZmiennePodstawia zmienne sesyjne, np. @LOGIN i @MAIL, oraz bieżącą datę do zapytania

Rozdzielenie odpowiedzialności na te cztery funkcje ma praktyczne znaczenie przy diagnozowaniu problemów. Jeśli widok pokazuje duplikat kolumny, przyczyny szuka się w CzyKolumnaIstnieje. Jeśli zapytanie z parametrem sesyjnym zwraca błędne dane, podejrzana jest PodstawZmienne. Taki podział ułatwia szybkie zawężenie miejsca awarii bez konieczności analizowania całej transakcji od początku.

Z perspektywy programisty czytającego kod po raz pierwszy taki podział na cztery wąsko zakresowe funkcje jest dużo łatwiejszy do zrozumienia niż jedna rozbudowana procedura robiąca wszystko naraz. Każda funkcja ma jedno zadanie i jedną odpowiedzialność, co ułatwia też pisanie testów oraz wprowadzanie zmian bez ryzyka zepsucia funkcjonalności niezwiązanej bezpośrednio ze zmianą.

Kolumny specjalne - Div i Button

Nie każda kolumna widoczna w zestawieniu pochodzi z zapytania SQL. Mechanizm UtworzStrukture usuwa kolumny, które przestały występować w wyniku zapytania, ale świadomie pomija przy tym kolumny specjalne typu Div i Button - dodawane ręcznie do interfejsu, na przykład jako przycisk akcji przy wierszu.

Gdyby ten wyjątek nie istniał, każda zmiana zapytania SQL widoku ryzykowałaby skasowanie ręcznie dodanych elementów interfejsu, zmuszając administratora do ich odtwarzania po każdej modyfikacji. Rozróżnienie kolumn danych od kolumn interfejsu pozwala bezpiecznie modyfikować zapytanie źródłowe bez obawy o utratę tych dodatków.

W praktyce kolumny specjalne odpowiadają najczęściej za akcje wykonywane na pojedynczym wierszu zestawienia - podgląd szczegółów, edycję, usunięcie albo uruchomienie powiązanej transakcji. Ich konfiguracja - jaka ikona, jaki kolor, jaka transakcja docelowa - ustawiana jest raz, ręcznie, i pozostaje niezmieniona niezależnie od tego, ile razy zmieni się później samo zapytanie SQL zasilające pozostałe kolumny widoku.

Podstawianie zmiennych sesyjnych

Funkcja PodstawZmienne wspiera dynamiczne zapytania SQL, zastępując zmienne takie jak @LOGIN czy @MAIL odpowiednimi wartościami z sesji zalogowanego użytkownika, a także bieżącą datą systemową. Dzięki temu jedno zapytanie zapisane raz w tabeli x_zestawienia może zwracać inny wynik dla każdego użytkownika - bez potrzeby tworzenia osobnego widoku dla każdej osoby czy roli.

Ten sam mechanizm podstawiania zmiennych sesyjnych, tylko w kontekście raportów RDL zamiast widoków tabelarycznych, opisano w materiale o Reporting Services w StudioSystem - w obu przypadkach zasada jest identyczna: ten sam zapisany raz zapytanie zachowuje się inaczej w zależności od tego, kto je uruchamia.

Konsekwencją takiego podejścia jest mniejsza liczba widoków do utrzymania. Zamiast osobnego zestawienia „moje zamówienia” dla każdego handlowca, wystarczy jeden widok z warunkiem filtrującym po zmiennej sesyjnej reprezentującej zalogowanego użytkownika. Administrator utrzymuje jedno zapytanie SQL zamiast dziesiątek niemal identycznych kopii, co ułatwia też wprowadzanie późniejszych poprawek - zmiana trafia od razu do wszystkich użytkowników korzystających z tego samego widoku.

Jak uruchomić raport

Baza_widok_tabela uruchamia się identycznie jak pozostałe raporty RDL platformy - transakcją raporty.aspx z parametrem raport wskazującym ścieżkę pliku na serwerze raportów, na przykład raport=/Firma_SoftwareStudio/Baza_widok_tabela. Domyślnie wynikiem jest podgląd na stronie, a parametr save pozwala zapisać wynik jako plik pdf lub xls do dalszej analizy poza systemem.

Praktyczne zastosowania

Raport przydaje się przede wszystkim w sytuacjach, gdy trzeba zrozumieć, dlaczego widok wygląda tak, a nie inaczej, bez przeglądania kodu transakcji adm_widok_kolumny.aspx ani samego zapytania SQL:

  • Diagnostyka brakującej kolumny - szybkie sprawdzenie, czy kolumna w ogóle istnieje w x_zestawienia_kolumny, zanim zacznie się szukać błędu w zapytaniu SQL.
  • Odróżnienie kolumn danych od interfejsu - eksport pokazuje, które kolumny są automatycznie generowane, a które to ręcznie dodane elementy specjalne.
  • Audyt przed zmianą zapytania - porównanie obecnych kolumn z planowaną zmianą zapytania pozwala przewidzieć, które kolumny zostaną automatycznie usunięte.
  • Dokumentacja dla zespołu wdrożeniowego - jeden eksport zamiast ręcznego katalogowania struktury każdego widoku z osobna.

Praktyczna wartość tego raportu w codziennej pracy rośnie wraz z wiekiem i skalą wdrożenia platformy. Świeżo skonfigurowany system ma niewiele widoków i łatwo je ogarnąć wzrokiem w module Konfiguracja. Po latach eksploatacji, gdy powstały już dziesiątki zestawień tworzonych na bieżące potrzeby różnych działów, ręczne przeglądanie struktury kolumn każdego z nich z osobna przestaje być realistyczne - i to właśnie wtedy jeden zbiorczy eksport zaczyna realnie oszczędzać czas pracy administratora, zamiast pozostawać wyłącznie teoretyczną możliwością opisaną w dokumentacji.

Podsumowanie

Baza_widok_tabela dokumentuje mechanizm, dzięki któremu kolumny widoków w StudioSystem nie są konfigurowane ręcznie, tylko generowane automatycznie przez transakcję adm_widok_kolumny.aspx na podstawie wyniku zapytania SQL zapisanego w tabeli x_zestawienia. Nowe kolumny są dodawane, nieaktualne usuwane, a kolumny specjalne typu Div i Button pozostają nietknięte.

Razem z raportem Baza_widok, opisującym listę samych widoków, oraz materiałem o konfiguracji widoków SQL, ten raport zamyka pełny obraz warstwy prezentacji danych platformy - od zapytania, przez kolumny, aż po gotowe zestawienie w interfejsie. Konwencje nazewnictwa tabel i widoków wykorzystane w tabelach x_zestawienia i x_zestawienia_kolumny opisano szerzej w dokumentacji struktury bazy danych.

Słownik pojęć

Podstawowe pojęcia - Baza_widok_tabela

Terminologia przydatna przy analizie struktury kolumn widoku.

BBaza_widok_tabela
Raport RDL dokumentujący powiązanie widoków z ich kolumnami, generowane automatycznie na podstawie zapytania SQL.
Xx_zestawienia
Tabela systemowa przechowująca definicje widoków - w tym zapytanie SQL, na którym widok jest oparty.
Xx_zestawienia_kolumny
Tabela systemowa przechowująca definicje kolumn przypisanych do poszczególnych widoków.
UUtworzStrukture
Funkcja warstwy serwerowej adm_widok_kolumny.aspx wykonująca zapytanie SQL widoku i generująca na tej podstawie kolumny.
KKolumna specjalna
Kolumna typu Div lub Button, niepochodząca z wyniku zapytania SQL i pomijana przy automatycznym usuwaniu nieaktualnych kolumn.
PPodstawZmienne
Funkcja podstawiająca w zapytaniu SQL zmienne sesyjne, takie jak @LOGIN czy @MAIL, wartościami zalogowanego użytkownika.
FAQ

Najczęściej zadawane pytania

01

Czym różni się Baza_widok_tabela od Baza_widok?

Baza_widok eksportuje listę samych widoków - ich nazwy, symbole PRX i przypisane role. Baza_widok_tabela dotyczy poziomu niżej: pokazuje, jakie konkretnie kolumny wygenerowano dla danego widoku na podstawie jego zapytania SQL.

02

Skąd biorą się kolumny widoku?

Funkcja UtworzStrukture wykonuje zapytanie SQL zapisane dla widoku i analizuje jego wynik. Dla każdej kolumny wynikowej, której jeszcze nie ma w tabeli x_zestawienia_kolumny, dodaje ją z domyślnymi ustawieniami, np. szerokością i typem.

03

Co się dzieje, gdy zapytanie SQL widoku się zmieni?

Przy kolejnym uruchomieniu adm_widok_kolumny.aspx system porównuje aktualny wynik zapytania z istniejącymi kolumnami - dopisuje nowe, a te, które przestały występować w wyniku, usuwa, z wyjątkiem kolumn specjalnych.

04

Czym są kolumny specjalne typu Div i Button?

To kolumny nietworzone na podstawie zapytania SQL, tylko dodawane ręcznie do interfejsu widoku, na przykład przycisk akcji. Mechanizm automatycznego czyszczenia kolumn pomija je, więc nie znikają przy zmianie zapytania.

05

Jakie zmienne sesyjne można wykorzystać w zapytaniu widoku?

Funkcja PodstawZmienne obsługuje między innymi zmienne @LOGIN i @MAIL, zastępując je wartościami zalogowanego użytkownika, a także bieżącą datę systemową, co pozwala budować widoki zależne od kontekstu użytkownika.

06

Jak uruchomić raport Baza_widok_tabela?

Tak jak każdy raport RDL platformy - transakcją raporty.aspx z parametrem raport wskazującym ścieżkę pliku na serwerze raportów, opcjonalnie z parametrem save określającym format pdf lub xls.

Warto przeczytać

Powiązane materiały o widokach i kolumnach

Kolejne kroki, jeśli analizujesz strukturę zestawień danych.

Widoki

Baza_widok - eksport listy widoków

Poziom wyżej niż ten artykuł - pełna lista widoków skonfigurowanych w systemie, wraz z symbolem PRX i przypisaną rolą.

Czytaj dalej
Konfiguracja

Widoki SQL w module Konfiguracja

Proces dopisywania nowego widoku od podstaw - zakładki formularza, warunki filtrowania i uprawnienia edycji.

Czytaj dalej
Raporty

Reporting Services - raporty RDL

Ogólny mechanizm uruchamiania raportów RDL i podstawiania zmiennych sesyjnych, wspólny dla całej platformy.

Czytaj dalej
Dane

Baza danych i widoki SQL

Ogólny opis warstwy danych platformy, na której działają widoki, kolumny i pozostałe raporty diagnostyczne.

Czytaj dalej

Chcesz zobaczyć bazę danych w działaniu?

Uruchom demo modułów StudioSystem i sprawdź platformę na żywo.