Go to Home page | |||||||||||||
Funkcja AFnAfql() | |||||||||||||
Alias: GETDATAAFQL() lub umieszczona jako element funkcji DANE() | |||||||||||||
Jest
to funkcja, która nie posiada formy tablicowej - zwraca wyłącznie jedną
wartość sumy sald kont, określonych za pomocą tzw. AFQL (AFIN Financial Query
Language) - naszego (© AFIN 1997) języka definiowania zapytań
księgowych. Bazuje na powszechnej znajomości formy raportu księgowego "Zestawienie Obrotów i Sald" (ZOiS), oferowanego przez każdy system finansowo-księgowy, wymagany przez Ustawę o Rachunkowości we wszystkich krajach świata. W pionie - konta, w kolumnach, odpowiednio: bilanse otwarcia, obroty miesięczne, obroty narastające, salda. Każdy księgowy wie, co to jest "saldo winien konta 100", więc zapytanie w AFQL brzmi : "sw/100". Wdrożenie systemu raportowego w finansach jest więc stosunkowo proste i polega na instalacji AFinScript, ustawieniach parametrów oraz maksymalnie kilkugodzinnym szkoleniu. I można robić dowolne raporty finansowe! Samodzielnie! Natychmiast! W Excelu! |
|||||||||||||
Więcej informacji: | |||||||||||||
http://afin.net/articles/AfinNet_Article_AFQL_PL.htm | |||||||||||||
https://www.w3schools.com/sql/sql_like.asp | |||||||||||||
https://www.w3schools.com/sql/sql_wildcards.asp | |||||||||||||
PROSTY PRZYKŁAD | |||||||||||||
Jej najprostrza forma to | |||||||||||||
Przykład | =AFnAfql("sw/1*";"2023";"12";"{{FK}}") | ||||||||||||
przykładowa wartość | 4 192 385,12 | ||||||||||||
ARGUMENTY | |||||||||||||
AFnAfql(strAFQL;strYearYYYY;strMonthMM;strParameters) | |||||||||||||
strAFQL | |||||||||||||
Można używać symboli wieloznacznych, takich jak "*"
(lub SQL-owy "%") oraz "?" (lub SQL-owy "_"), a
gdy baza danych jest produktem firmy Microsoft (MS Excel(sic!), MS Access, MS
SQL Server), działa również, znany z REGEX, ogólny sposób zapisu zakresów
znaków, jak [a-b], [0-4], [135], [^234], 535-[0-3][0-9][0-9]-40[1-3]-* , itp. |
|||||||||||||
Przykłady arkumentu strAFQL: | |||||||||||||
sw/1* | |||||||||||||
sm/200* | |||||||||||||
ow/010.000.000 | |||||||||||||
om/700*-om/710*, co może być zapisane również jako om/700<710 - obroty narastające konta 700, pomniejszone o konto 710 | |||||||||||||
oraz, nasz ulubiony, rzeczywisty przykład klienta | |||||||||||||
sw/??.701.?.*<??.701.0.*>??.702.?.*<??.702.0.*>??.703.?.*<??.703.0.*>??.704.?.*<??.704.0.*>??.706.?.*<??.706.0.*>??.707.?.*<??.707.9>??.708.?.*<??.708.9.0*>02.708>??.730.?.*<??.730.0.*>??.740<??.740.0>06.740.0.??<06.740.0.00 | |||||||||||||
strYear | |||||||||||||
Rok jako czteroznakowy ciąg znaków, np. "2024". Parametr ten jest podawany w funkcji bezpośrednio lub pośrednio z innej komórki. | |||||||||||||
strMonth | |||||||||||||
Miesiąc jako dwuznakowy (UWAGA: nie jednoznakowy!) ciąg znaków, np. "01". Parametr ten jest podawany w funkcji bezpośrednio lub pośrednio z innej komórki. | |||||||||||||
strParameters | |||||||||||||
Parametr, dostarczasjący funkcji informacji o sposobie konstrukcji zapytania z ciągu połaczeniowego ConnectionString oraz parametrów, wynikających z podania innych argumentów funkcji. Ten argument rzadko jest podawany jawnie - zwykle jest pobierany z listy zmiennych, poprzez odwołanie np. do zmiennej "FK", co jest realizowane poprzez tekst "{{FK}}" (i jest to wtedy zwykla cała wartość tego argumentu), a na liście zmiennych jest podane jako: | |||||||||||||
lsConnStr=DRIVER=SQL Server Native Client 11.0; SERVER=.\SQLEXPRESS; UID=afin; Trusted_Connection=Yes; DATABASE=zois@lsFromWhereClause=FROM arimr_zs{YYYY}{MM} WHERE [Konto] LIKE '{AccNo}' | |||||||||||||
oznacza to, po kolei: | |||||||||||||
1. | lsConnStr=DRIVER=SQL Server Native Client 11.0; SERVER=.\SQLEXPRESS; UID=afin; Trusted_Connection=Yes; | ||||||||||||
gdzie lsConnStr to klasyczny ciąg połączenia bazodanowego, czyli Connection String | |||||||||||||
DRIVER=SQL Server Native Client 11.0; SERVER=.\SQLEXPRESS; UID={user name}; Trusted_Connection=Yes; | |||||||||||||
2. | DATABASE=zois@lsFromWhereClause=FROM {prefix}_zs{YYYY}{MM} WHERE [Konto] LIKE '{AccNo}' | ||||||||||||
gdzie najpierw następuje wskazanie nazwy bazy danych | |||||||||||||
DATABASE=zois | |||||||||||||
a rozbudowany argument lsWromWhereClause oznacza sposób budowy zestawu klauzul SQL - FROM i WHERE | |||||||||||||
lsFromWhereClause=FROM {user_prefix}_zs{YYYY}{MM} WHERE [Konto] LIKE '{AccNo}' | |||||||||||||
{YYYY} - to rok z argumentu strYear (powyżej) | |||||||||||||
{MM} - to miesiąc z argumentu strMonth (powyżej) | |||||||||||||
[Konto] - nazwa kolumny konta księgowego | |||||||||||||
Fragment LIKE '{AccNo}' można uznać jako stały, gdyż pokazuje on tylko, jak działa, tak złożony, SQL. |