Witaj Gość. Produkt: Logowanie
GIGA Katowice
RSS RSS

GIGA Wiki





Szukaj
»

ScrewTurn WIKI

Historia: Test formuły

Porównaj wersje strony



« Starsza wersja - Powrót do strony Historia - Bieżące wersja


Wersja strony: 2014/10/28 11:13


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:
  1. ^yko:id|macro^ - Zwraca identyfikator kartoteki kontrahenta YKO_Id int
  2. ^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)


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


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


select 1, ' A - ' + Str( ^yko:id|macro^ )
union all
select 2, ' B - ' + Str( ^yuk:id|macro^)

ScrewTurn Wiki wersja 3.0.5.640. Ikony stworzone przez FamFamFam.