Skocz do zawartości

Struktura pól własnych v2 w bazie danych

Polecane posty

W celu odczytania nazw tabel, w których przechowywane są wartości pól zaawansowanych, należy wykonać poniższe zapytanie:

select
	konf.NazwaWyswietlanaDluga as [Nazwa w module konfiguracji pol wlasnych],
	extensionEntities.TableName as [Tabela z wartosciami pol zaawansowanych]
from ModelDanychContainer.KonfiguracjePolWlasnych2 konf inner join DataExtensions.CurrentExtensionEntities extensionEntities on konf.MetadaneZaawansonychPolWlasnych_Id = extensionEntities.Id
order by konf.NazwaWyswietlanaDluga

Z powyższego zapytania dowiadujemy się, że np. tabela przechowująca wartości zaawansowanych pól własnych asortymentu to: ModelDanychContainer.Asortymenty_PolaWlasneAsortyment_Adv2

A więc aby wyświetlić wartości wszystkich pól zaawansowanych dla asortymentu trzeba wykonać zapytanie:

select * from ModelDanychContainer.Asortymenty_PolaWlasneAsortyment_Adv2

gdzie
[Id] [int] NOT NULL - klucz główny będący jednocześnie kluczem obcym do kolumny [Id] z tabeli ModelDanychContainer.Asortymenty
[S0..99] [nvarchar](256) NULL - kolumny przechowujące wartości pól typu "Tekst"
[I0..99] [int] NULL - kolumny przechowujące wartości pól typu "Liczba całkowita"
[D0..99] [decimal](18, 6) NULL - kolumny przechowujące wartości pól typu "Liczba rzeczywista"
[B0..99] [bit] NULL - kolumny przechowujące wartości pól typu "Wartość logiczna"
[T0..99] [datetime2](7) NULL - kolumny przechowujące wartości pól typu "Data"
[G0..99] [uniqueidentifier] NULL - kolumny przechowujące wartości typu GUID

Widać, że nazwy kolumn przechowujące wartości pól zaawansowanych tworzone są według schematu {S|I|D|B|T|G}0..99 gdzie 0..99 jest unikatowym (w ramach typu pola) numerem. Po utworzeniu danego pola nazwa jego kolumny pozostaje już niezmienna.

Poniższe zapytanie wypisze wszystkie pola zaawansowane, odpowiadające im nazwy kolumn oraz informacje o powiązanych słownikach:

select
        extensionEntities.TableName as [Tabela z wartosciami pol zaawansowanych],
        extensionProperties.[Name] as [Nazwa pola],
        (case extensionProperties.TypeId 
                when 1 then 'I' 
                when 2 then 'G' 
                when 3 then 'S' 
                when 4 then 'D' 
                when 5 then 'T' 
                when 6 then 'B' 
        end) + cast(extensionProperties.PlaceholderIndex as nvarchar(2)) as [Nazwa kolumny pola],
        case extensionProperties.DataSourceKind
                when 0 then null
                when 1 then N'Slownik wlasny'
                when 2 then N'Slownik systemowy'
                when 3 then N'Slownik wlasny SQL'
        end as [Rodzaj slownika],
        case extensionProperties.DataSourceKind
                when 0 then null
                when 1 then (select sw.Nazwa from ModelDanychContainer.SlownikiWlasne sw where sw.Id = extensionProperties.DataSourceId)
                when 2 then case extensionProperties.DataSourceId when 1 then N'ModelDanychContainer.Waluty' when 2 then N'ModelDanychContainer.Magazyny' when 3 then N'ModelDanychContainer.CentraGromadzeniaFinansow_RachunekBankowy' end
                when 3 then (select sd.[Name] from ModelDanychContainer.SqlDictionaries sd where sd.Id = extensionProperties.DataSourceId)
        end as [Nazwa slownika],
        case extensionProperties.DataSourceKind
                when 0 then null
                when 1 then (select sw.Id from ModelDanychContainer.SlownikiWlasne sw where sw.Id = extensionProperties.DataSourceId)
                when 2 then null
                when 3 then (select sd.Id from ModelDanychContainer.SqlDictionaries sd where sd.Id = extensionProperties.DataSourceId)
        end as [Id slownika]
from DataExtensions.CurrentExtensionEntities extensionEntities inner join 
        DataExtensions.CurrentExtensionProperties extensionProperties on extensionEntities.Id = extensionProperties.EntityId
order by extensionEntities.TableName, extensionProperties.[Name]

W przypadku, gdy pole jest typu "Słownik własny", wtedy takie pole przechowywane jest w kolumnie z prefiksem I, która to kolumna zawiera klucz obcy do pozycji słownika własnego.
W przypadku, gdy pole jest typu "Słownik własny SQL", wtedy takie pole przechowywane jest w kolumnie z prefiksem I lub G w zależności od typu klucza obcego.
W przypadku, gdy pole jest typu "Słownik systemowy", wtedy takie pole przechowywane jest w kolumnie I lub G w zależności od typu klucza obcego.

Słowniki własne przechowywane są w tabeli ModelDanychContainer.SlownikiWlasne, a ich wartości w tabeli ModelDanychContainer.PozycjeSlownikowWlasnych
Słowniki własne SQL przechowywane są w tabeli ModelDanychContainer.SqlDictionaries a wartośći oczywiście pochodzą ze zdefiniowanego zapytania SQL

Edytowane przez Łukasz Kubacki
informacja o tabeli KonwersjaZaawansowanychPolWlasnychDoWersji2Info
  • Dziękuję 2
Link to postu
  • 1 miesiąc temu...
  • 2 miesiące temu...
×
×
  • Dodaj nową pozycję...