| 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. | |||||||||||||