Witaj
Gość
. Produkt:
<root>
gw-max
IBO_SZ
ZZ
•
Logowanie
GIGA Wiki
¶
Strona Główna
Losowa Strona
Nowa Strona
Wszystkie Strony
Kategorie
Nawigacja
Administracja
Zarządzanie plikami
Utwórz konto
Szukaj
»
Wstecz
Test formuły
Zmodyfikowana 2014/10/28 11:24
przez
Wojtek
Skategoryzowana jako
GW-MAX
===Formuły SQL jest to mechanizm budowania dowolnych formuł w których wartość jest pobierana z polecenia SQL=== Polecenie SQL musi mieć następującą składnie: select LP, WARTOŚĆ - gdzie '''LP''' jest liczbą narzucającą kolejność a '''WARTOŚĆ''' jest wartością jaką będziemy zwracać jako wynik formuły W przypadku jak polecenie zwraca więcej niż jeden rekord, program sortuje po '''LP''' i skleja pole '''WARTOŚĆ''' jako ciąg znaków, ten mechanizm daje łatwy sposób implementacji list Dostępne makra: #'''^yko:id|macro^''' - Zwraca identyfikator kartoteki kontrahenta YKO_Id [int] #'''^yuk:id|macro^''' - Zwraca identyfikator umowy YUK_Id [int] Algorytm działania jest następujący: * W polecenie SQL są wyszukiwane makra (ww) i jak zostaną znalezione to wartość jest podmieniana * W SQL jest tworzona tabelka tymczasowa z dwoma kolumnami (LP int, S1024 varchar(1024)) * Do SQL wysyłane jest polecenie typu insert into (LP,S1024) select i tutaj wartość formuły * Z SQL pobierana jest wartość tabelki w posortowaniu po LP a zawartość pola tekstowego jest łączona (konkatenacja łańcuchów) * Złożony łańcuch znaków jest zwracany jako wartość formuły ===Przykładowe polecenia:=== Przykład pobierający z adresu kontrahenta telefon (wykorzystuje makro do umowy) @@ SQL Select YUK_ID, Case When isnull( YAK_Telefon1, '') <> '' then 'Telefon: '+YAK_Telefon1 Else '' End From YUmowa_Kontrahent, dbo.YKontrahent, dbo.YAdres_Kontrahent Where YUK_Id = ^yuk:id|macro^ and YUK_IdKontrahent=YKO_Id and YKO_IdAdres=YAK_Id and isnull( YKO_Archiwum,0)=0 and isnull( YUK_Archiwum,0)=0 @@ Przykład formatujący tekst w zależności czy umowa jest na czas określony czy nie @@ SQL Select 1, Case When isnull( YUK_Data_Obowiazuje_Do, 0)= 0 Then ' NA CZAS NIEOKREŚLONY' Else ' OKREŚLONY DO DNIA ' + Convert( varchar(20), Convert( datetime, YUK_Data_Obowiazuje_Do-36163), 110) End From YUmowa_Kontrahent Where YUK_Id = ^yuk:id|macro^ @@ Przykład pokazujący idee budowania wartości. Wywołanie w teście zwraca łańcuch znaków " A - 11 B - 22" jak widać połączył dwa polecenia select @@ SQL select 1, ' A - ' + Str( ^yko:id|macro^ ) union all select 2, ' B - ' + Str( ^yuk:id|macro^) @@ Kolejny przykład gdzie jako wartość formuły zwracana jest lista przecinkowa zawartych umów z kontrahentem @@ SQL Select Row_Number() Over( Order By YUK_NrUmowy) , Case Row_Number() Over( Order By YUK_NrUmowy) When 1 Then '' Else ', ' End + YUK_NrUmowy From dbo.YUmowa_Kontrahent Where YUK_IdKontrahent = ^yko:id|macro^ @@
Meta Keywords:
makro, umowa
Meta Description:
Change Comment:
ScrewTurn Wiki
wersja 3.0.5.640. Ikony stworzone przez
FamFamFam
.