INSTRUKCJA SIMPLE.ERP Finanse i Księgowość Automaty Księgowe oraz VISUAL BASIC
SPIS TREŚCI 1. AUTOMATY KSIĘGOWE... 3 1.1. Opis modułu... 3 1.1.1. Iteracja FKV Iterator konto... 5 1.1.2. Iteracja Iterator prosty... 6 1.1.3. Iteracja Iterator tabela... 6 1.1.4. Iteracja REP Iterator atrybut... 6 1.1.5. Selekcja FKV Selektor konto... 7 1.1.6. Selekcja FKV Selektor kwota... 7 1.1.7. Selekcja Selektor dopytanie liczba... 8 1.1.8. Selekcja Selektor dopytanie znaki... 8 1.1.9. Selekcja Selektor SQL liczba... 9 1.1.10. Selekcja Selektor SQL znaki... 9 1.1.11. Generacja FKV Generator dekret... 10 1.1.12. Generacja FKV Generator pozycja... 10 1.1.13. Generacja FKV Generator obroty... 11 1.1.14. Wyliczenie Wyliczenie znaki... 11 1.1.15. Wyliczenie Wyliczenie liczba... 12 1.1.16. Warunek Warunek... 12 1.2. Automaty wywołanie... 15 2. VISUAL BASIC W SIMPLE.ERP... 16 2.1. Visual Basic Script... 16 2.1.1. Typy zmiennych... 16 2.1.2. Deklaracje stałych... 16 2.1.3. Deklaracje tabel... 16 2.1.4. Listy... 17 2.1.5. Operatory matematyczne... 17 2.1.6. Operatory porównania... 17 2.1.7. Operatory logiczne... 18 2.1.8. Inne... 18 2.2. Instrukcje... 18 2.2.1. Instrukcja warunkowa If..Then..Else... 18 2.2.2. Instrukcja wyboru Case... 19 2.2.3. Pętla Do..Loop... 19 2.2.4. Pętla For..Next... 20 2.2.5. Pętla For Each..Next... 20 2.3. Procedury i funkcje... 20 2.4. Okna dialogowe... 21 2.5. Konwersje typów, funkcje pomocnicze... 22 2.5.1. Sprawdzanie podtypów... 22 2.5.2. Konwersja typów... 22 2.5.3. Funkcje daty i czasu... 23 2.5.4. Funkcje dotyczące tekstów... 23 2.5.5. Przeszukiwanie tekstów... 23 INSTRUKCJA 2.1. Visual Basic 1 SIMPLE.ERP
2.5.6. Długość tekstu... 24 2.5.7. Porównanie... 24 2.5.8. Łączenie elementów tablic... 24 2.6. Funkcje dostępu do atrybutów... 24 2.7. Funkcje dostępu do danych przez SQL... 25 2.8. Funkcje obsługi błędów... 25 2.9. Zwracanie kodu wyjścia... 26 2.10. Podstawowe rodzaje zdarzeń... 26 INSTRUKCJA 2.1. Visual Basic 2 SIMPLE.ERP
1. AUTOMATY KSIĘGOWE 1.1. Opis modułu W opcji Funkcje specjalne automaty jest możliwe zdefiniowanie i wykonanie automatycznych przeliczeń danych zapisanych w systemie. Funkcjonalność automatów umożliwia definiowanie i uruchamianie sekwencji operacji. Szczególnym rodzajem automatów mogą być automaty księgowe pozwalające definiować np. operacje przeksięgowań, rozliczania kosztów. Istnieją dwa rodzaje automatów: zdefiniowany w określonym kontekście (np. Automat FK) związany z konkretnym obiektem tego kontekstu (np. konto księgowe z planu kont) i uruchamiany automatycznie w momencie kiedy obiekt zmienia swój stan (np. aktualizacja obrotów na koncie księgowym); uruchamiany jako akcja z pulpitu, nie związany z żadnym kontekstem. Okno definicji pierwszego rodzaju automatów wywoływane jest poprzez akcję w oknie definicji obiektu danego kontekstu (np. prawy przycisk na koncie z planu kont). W tym przypadku użytkownik definiuje kolejne wersje automatu. Okno definicji drugiego rodzaju automatów wywoływane jest w tej opcji systemu. W tym przypadku użytkownik musi najpierw zdefiniować automat, a następnie jego wersje. Jedynym zaimplementowanym obecnie kontekstem automatów jest kontekst automatów uruchamiane podczas aktualizacji obrotów na koncie Automat FK obroty omówiony na końcu tego rozdziału. Automaty bez kontekstu mogą być uruchamiane poprzez wyciągnięcia akcji Automaty wywołania na pulpit użytkownika i przypisanie do tej akcji parametrów jej uruchomienia. Analogicznie jak skrypt użytkownika z pulpitu. Automat posiada dwa atrybuty: unikalny identyfikator 32 znakowy; nazwę 60 znakową. Każdy automat posiada jedną lub więcej wersji. Wersja posiada cztery atrybuty: nazwę wesji; datę od kiedy obowiązuje; flagę prywatności; INSTRUKCJA 2.1. Visual Basic 3 SIMPLE.ERP
flagę aktywności. Wersje definiowane są w obrębie okresów rozliczeniowych. Flaga prywatności pozwala na to, aby automat widoczny był jedynie przez użytkownika, który go zdefiniował i mógł być uruchamiany jedynie przez niego. Kombinacja atrybutów: flaga aktywności i daty obowiązywania pozwala wersjonować automaty w czasie. Każdy automat zbudowany jest z kolejnych kroków - pozycji automatu. Każdy krok automatu jest określonego typu. O funkcjonalności związanej z danym krokiem decyduje rodzaj komponentu, z którego został utworzony dany krok. Wszystkie komponenty są predefiniowane i podzielone na obszary funkcjonalne: iteracja grupa komponentów pozwalająca na definiowanie iteracyjnego przetwarzania (np. akcja dla każdego konta z danego zakresu lub akcja dla każdej wartości atrybutu danej klasy z repozytorium); selekcja grupa komponentów pozwalająca na pobieranie wartości (np. pobranie konta księgowego, kwoty obrotów); generacja grupa komponentów realizujących przetwarzanie (np. tworzących dekret, pozycję dekretu lub aktualizujących obroty na koncie księgowym); wyliczenie grupa komponentów pozwalająca wyliczać wartości liczbowe lub tekstowe; warunek komponent pozwalający podjąć określone działania pod warunkiem, że spełniony jest dany warunek (np. obroty większe od...); skrypt komponent pozwalający wpisać bezpośrednio fragment kodu w VisualBasic Script. Każdy z obszarów funkcjonalnych może być następnie podzielony na obszary związane z daną funkcjonalnością systemu SIMPLE.ERP: ERP.FK finanse; REP repozytorium; ERP.OT obrót towarowy. Możliwość używania tych komponentów w określonym obszarze systemu SIMPLE.ERP uwarunkowana jest posiadaniem licencji na ten obszar. Komponenty nie związane z żadnym z obszarów są komponentami systemowymi. Istnieją dwa rodzaje zmiennych: predefiniowane ($okres$, $podokres$); INSTRUKCJA 2.1. Visual Basic 4 SIMPLE.ERP
predefiniowane wynikające z kontekstu (np. $dekret_okres$ w kontekście FK_DEKRET); dodawane podczas definiowania kolejnych kroków automatu (np. po definicji kroku wyliczenie pojawi się na liście zmienna, która w tym kroku zostanie wyliczona). Wiele komponentów pozwala określić zakres początkowy i końcowy oraz wybrać poprzez filtr odpowiednie wartości z tego zakresu. Przykład dla komponentu: Iterator FKV konto: konto początkowe: 501-01 konto końcowe: 550-09 maska na wartości: 5-01 Definicja ta pozwoli wybrać konta od 501-01 do 550-09, które spełniają filtr: 5-01, czyli dowolne konto zespołu 5 kończące się analityką 01. Poniżej znajduje się omówienie poszczególnych komponentów i ich atrybutów: 1.1.1. Iteracja FKV Iterator konto Komponent pozwala zdefiniować przetwarzanie dla każdego konta w określonym zakresie. Zakres definiowany poprzez atrybuty: okres konto początkowe konto końcowe maska na wartości zmienna Na poniższym rysunku został przedstawiony krok automatu, w którym dla bieżącego okresu dla wszystkich kont % zostanie wykonana pętla po kontach z zakresu 401-01- 0001 409-09. Każde kolejne konto zostanie podstawione pod zmienną $konto$. W obrębie takiej pętli będzie można odwołać się do tej zmiennej i wykonać jakieś czynności. Rys. Komponent Iteracja FKV Iterator konto INSTRUKCJA 2.1. Visual Basic 5 SIMPLE.ERP
1.1.2. Iteracja Iterator prosty Komponent pozwala zdefiniować powtarzające się określoną liczbę razy przetwarzanie. Atrybuty: indeks początkowy (wartość lub zmienna) indeks końcowy (wartość lub zmienna) krok (wartość lub zmienna) zmienna Rys. Komponent Iteracja Iterator prosty 1.1.3. Iteracja Iterator tabela Komponent pozwala zdefiniować powtarzające się przetwarzanie dla każdego elementu ze zbioru. Zbiór zdefiniowany jest jako fragment tabeli bazodanowej poprzez atrybuty: tabela kolumna maska na wartości zmienna Rys. Komponent Iteracja Iterator tabela 1.1.4. Iteracja REP Iterator atrybut Komponent pozwala zdefiniować powtarzające się przetwarzanie dla każdej zbioru wartości atrybutu danej klasy. Zbiór określony jest poprzez atrybuty: INSTRUKCJA 2.1. Visual Basic 6 SIMPLE.ERP
klasa atrybut wartość początkowa wartość końcowa maska na wartości zmienna Rys. Komponent Iteracja REP Iterator atrybut 1.1.5. Selekcja FKV Selektor konto Komponent pozwala pobrać konto oraz zweryfikować jego poprawność. Opisany jest przez atrybuty: okres system kont konto zmienna Rys. Komponent Selekcja FKV selektor konto 1.1.6. Selekcja FKV Selektor kwota Komponent pozwala pobrać kwotę obrotów z danego konta. Opisany jest przez atrybuty: okres podokres INSTRUKCJA 2.1. Visual Basic 7 SIMPLE.ERP
system kont system ewidencji konto rodzaj kwoty kwota waluta status zmienna Rys. Komponent Selekcja FKV selektor kwota 1.1.7. Selekcja Selektor dopytanie liczba Komponent umożliwia aby podczas działania automatu operator musiał podać kwotę. Opisany jest przez atrybuty: komunikat dopytania zmienna Rys. Komponent Selekcja dopytanie liczba 1.1.8. Selekcja Selektor dopytanie znaki Komponent umożliwia aby podczas działania automatu operator musiał podać ciąg znaków. Opisany jest przez atrybuty: komunikat dopytania zmienna INSTRUKCJA 2.1. Visual Basic 8 SIMPLE.ERP
Rys. Komponent Selekcja dopytanie znaki 1.1.9. Selekcja Selektor SQL liczba Komponent pozwala zdefiniować zapytanie SQL, które pobierze jakąś wartość liczbową z bazy podczas działania automatu. Opisany jest przez atrybuty: zapytanie SQL zmienna Rys. Komponent Selekcja SQL kwota 1.1.10. Selekcja Selektor SQL znaki Komponent pozwala zdefiniować zapytanie SQL, które pobierze jakiś ciąg znaków z bazy podczas działania automatu. Opisany jest przez atrybuty: zapytanie SQL zmienna Rys. Komponent Selekcja SQL znaki INSTRUKCJA 2.1. Visual Basic 9 SIMPLE.ERP
1.1.11. Generacja FKV Generator dekret Komponent służy do wygenerowania nagłówka dekretu. Opisany jest przez atrybuty: okres podokres oddział typ dekretu identyfikator opis zmienna Rys. Komponent Generacja FKV Generator dekret 1.1.12. Generacja FKV Generator pozycja Komponent służy do wygenerowania pozycji dekretu. Może być użyty tylko w przypadku transakcyjnego systemu ewidencji. Opisany jest przez atrybuty: system kont system ewidencji identyfikator opis konto waluta strona kwota WT (wartość lub zmienna) kwota WB (wartość lub zmienna) kwota EU (wartość lub zmienna) kwota IL (wartość lub zmienna) zmienna dekretu INSTRUKCJA 2.1. Visual Basic 10 SIMPLE.ERP
Rys. Komponent Generacja FKV Generator pozycja 1.1.13. Generacja FKV Generator obroty Komponent służy do wygenerowania obrotów na koncie. Może być użyty tylko w przypadku nie transakcyjnego systemu ewidencji. Opisany jest przez atrybuty: Okres podokres system kont system ewidencji konto waluta status trona rodzaj kwoty kwota (wartość lub zmienna) Rys. Komponent Generacja FKV Generator obroty 1.1.14. Wyliczenie Wyliczenie znaki Komponent służy do zbudowania wartości znakowej z innych wartości znakowych. Opisany jest przez atrybuty: wyrażenie zmienna INSTRUKCJA 2.1. Visual Basic 11 SIMPLE.ERP
Rys. Komponent Wyliczenie znaki 1.1.15. Wyliczenie Wyliczenie liczba Komponent służy do wyliczenia wartości liczbowej na podstawie innych wartości liczbowych. Opisany jest przez atrybuty: wyrażenie zmienna Rys. Komponent Wyliczenie kwota 1.1.16. Warunek Warunek Komponent służy do umożliwienia przetwarzania warunkowego. Opisany jest przez atrybuty: Wyrażenie Rys. Komponent Warunek INSTRUKCJA 2.1. Visual Basic 12 SIMPLE.ERP
Skrypt Skrypt Komponent służy do wpisanie fragmentu kodu w Visual Basic skrypcie. Opisany jest przez atrybuty: Skrypt Rys. Komponent Skrypt Lista komponentów w kolejnych wersjach może być rozszerzana poprzez dodanie komponentów realizujących nową funkcjonalność. Definiowanie kolejnych kroków wersji automatu odbywa się poprzez przeciąganie komponentu z drzewa komponentów na listę z krokami automatu. Dany element może być wstawiony na końcu lub w dowolnym miejscu w środku. Dwuklik lewym przyciskiem myszy na danym kroku powoduje otwarcie okna, które służy do zdefiniowania szczegółów danego kroku. Po zdefiniowaniu szczegółów i powrocie do głównego okna aktualizowany jest automatycznie skrótowy opis kroku automatu. Cechą charakterystyczną definicji automatu jest wizualne przedstawienie komponentów typu iterator i warunek i przetwarzania, które w obrębie tych komponentów się wykonuje, poprzez wcięcie z lewej strony oznaczające podrzędność komponentu względem komponentu nadrzędnego. Rys. Wizualne przedstawienie komponentów iterator i warunek INSTRUKCJA 2.1. Visual Basic 13 SIMPLE.ERP
W przykładzie przedstawionym na powyższym rysunku w pierwszym kroku tworzony jest nagłówek dekretu. Następnie dla każdego konta z zakresu 401 490 wykonywane są cztery kroki: dwa warunki i jeżeli konto z iteratora jest mniejsze niż 405 powstaje pozycja dekretu, a w przypadku gdy konto jest większe lub równe 405 zostają jedynie zaktualizowane obroty na koncie. Istnieje możliwość podpięcia automatu do konta księgowego. Uruchomienie automatu następuje w momencie kiedy obroty na koncie podczas zatwierdzania dekretów właściwego aktualizowane są obroty. Zasada działania tego rodzaju automatów podobna jest do dotychczasowego mechanizmu Hook ów zaczepów do VBScript u. Atrybuty jakie dostaje każdy automat uruchamiany w tym kontekście: identyfikator okresu: $dekret_okres$ identyfikator podokresu: $dekret_podokres$ identyfikator systemu kont: $dekret_syskont$ identyfikator systemu ewidencji: $dekret_sysewid$ identyfikator konta: $dekret_konto$ identyfikator waluty: $dekret_waluta$ strona ( WN, MA ): $dekret_strona$ rodzaj kwoty ( WT, WB, EU, IL ): $dekret_rodzaj$ kwota: $dekret_kwota$ Rys. Uruchomienie definicji automatów z kontekstu INSTRUKCJA 2.1. Visual Basic 14 SIMPLE.ERP
Rys. Definicja automatu w kontekście W przypadku definiowania automatu w kontekście np. FK_DEKRET użytkownik określa jedynie wersje i kroki wersji nie definiuje automatu. 1.2. Automaty wywołanie W opcji Funkcje specjalne automaty wywołanie możliwe jest wykonanie uprzednio zdefiniowanego automatu. Aby z tego skorzystać należy opcję tę wyciągnąć na pulpit użytkownika, a następnie jako parametr uruchomienia tej akcji wskazać automat który ma być wykonany INSTRUKCJA 2.1. Visual Basic 15 SIMPLE.ERP
2. VISUAL BASIC W SIMPLE.ERP 2.1. Visual Basic Script Język VBScript jest skryptowym językiem pozwalającym tworzyć programy wsadowe w systemach Windows (Windows Scripting Host) Używany jest również do tworzenia stron internetowych jako alternatywa do JavaScript. 2.1.1. Typy zmiennych VBScript posiada tylko jeden typ zmiennej, przechowujący zarówno dane liczbowe jak i tekst. Typ ten nazywa się Variant Typ Variant może być określany przez następujące podtypy: Boolean Byte Integer Currency Long Single Double Date (Time) String Object Error 2.1.2. Deklaracje stałych Użycie stałych wymaga ich zadeklarowania. Deklaracja stałych polega na podaniu frazy Const i nazwy stałej o raz po znaku równa się wartości, którą będzie reprezentowała. Nazwy stałych podlegają tym samym ograniczeniom, co i zmiennych. Const MojaNazwa= Mój program Const MojaBaza= Pokazowa 2.1.3. Deklaracje tabel Deklaracji tabeli wygląda identycznie jak zmiennej i podlega tym samym ograniczeniom. Różnica polega na konieczności podania rozmiarów przed jej użyciem. INSTRUKCJA 2.1. Visual Basic 16 SIMPLE.ERP
Definicja z podaniem rozmiaru: Dim MojaTabela (35) Dim MojaTabelaDwuwymiarowa (12,18) Definicja z późniejszym podaniem rozmiaru: Dim MojaTabela() ReDim MojaTabela(35) 2.1.4. Listy Array(lista_danych) definicja listy danych Przykład: Dim A A=Array(10,20,30,40) B=A(2) do B podstawiamy 30 2.1.5. Operatory matematyczne Dostępne operatory matematyczne: / - dzielenie, \ - dzielenie całkowite, * - mnożenie, - - odejmowanie, + - dodawanie, & - dodawanie ciągu znaków 2.1.6. Operatory porównania Dostępne operatory porównywania: = - równy, <> - różny, < - mniejszy, > - większy, <= - mniejszy równy, >= - większy równy, Is odpowiadający INSTRUKCJA 2.1. Visual Basic 17 SIMPLE.ERP
2.1.7. Operatory logiczne Dostępne operatory logiczne: Not negacja, And iloczyn logiczny, Or suma logiczna, Xor exclusion (rozłączność), Eqv odpowiadający, Imp - implikacja 2.1.8. Inne Zawijanie długiego wiersza czy instrukcji wykonujemy poprzez: _ Przykład: err1 = msgbox( To jest bardzo długi tekst komunikatu, 32, _ Nazwa okna ) Komentarze uzyskuje się poprzez znak apostrofu lub słowa REM. Przykład: wyświetlanie komunikatu err1 = msgbox( Komunikat nr 2 ) 2.2. Instrukcje 2.2.1. Instrukcja warunkowa If..Then..Else Jednoliniowa instrukcja If : If MojaData<Now Then MojaData=Now End If Wieloliniowa instrukcja If : If MojaData<Now Then AlertLabel.ForeColor=vbRed Else AlertLabel.ForeColor=vbBlack End if Wielowarunkowa instrukcja If: If Cena<=15 Then MsgBox Niska cena ElseIf Cena >15 And Cena < 25 Then INSTRUKCJA 2.1. Visual Basic 18 SIMPLE.ERP
MsgBox Średnia cena ElseIf Cena >=25 And Cena < 40 Then MsgBox Wysoka cena Else MsgBox Nie kupuj End If 2.2.2. Instrukcja wyboru Case Tę instrukcję stosujemy przy dużej liczbie warunków: Slect Case SposobZaplaty Case Gotówka IloscDni = 0 Case Przelew 14 IloscDni = 14 Case Przelew 31 IloscDni = 31 Case Else IloscDni = 7 End Select 2.2.3. Pętla Do..Loop Warunek sprawdzany przed wykonaniem poleceń w pętli: Do While licznik < 10 licznik=licznik+1 Loop Warunek sprawdzany po wykonaniu poleceń w pętli: Do licznik=licznik+1 Loop While licznik < 10 Wcześniejsze opuszczenie pętli: Do Until licznik > 10 licznik = licznik + 1 If licznik = 8 Then Exit Do Loop INSTRUKCJA 2.1. Visual Basic 19 SIMPLE.ERP
2.2.4. Pętla For..Next Funkcje wewnętrzne pętli są uruchamiane określoną ilość razy : For licznik = 1 To 10 Step 2 MojaProcedura Next Formuła Step określa skok. Jeżeli skok równy jest jeden można ją pominąć. Krok może być również wartością ujemną. 2.2.5. Pętla For Each..Next Dla każdego elementu z listy wykonaj pętlę: Sub costam() Dim MojObiekt, MojaKolekcja(3) MojaKolekcja(1) = "Belgia" MojaKolekcja(2) = "Polska" MojaKolekcja(3) = "Holandia" For Each MojObiekt In MojaKolekcja If MojObiekt = "Polska" Then MsgBox MojObiekt Exit For End If Next End Sub 2.3. Procedury i funkcje Procedury stanowią szereg poleceń zamkniętych pomiędzy Sub i End Sub Funkcje różnią się od procedur tym, że zawsze zwracają wartość Definicja procedury: Sub <nazwa_procedury> ( argumenty) <deklaracja zmiennych>... polecenia i wywołanie innych procedur i funkcji... End Sub INSTRUKCJA 2.1. Visual Basic 20 SIMPLE.ERP
Definicja funkcji Function <nazwa_funkcji> ( parametry) <deklaracje zmiennych>... polecenia i wywołanie innych procedur i funkcji... <nazwa_funkcji> = <wartość> End Function 2.4. Okna dialogowe InputBox okno wprowadzania danych: var = InputBox(komunikat [,nazwa] [,wartość_domyślna] [,xpoz] [,ypoz] [,plik_pomocy, kontekst]) MsgBox okno komunikatów: var = MsgBox(komunikat [,rodzaj_ikon_i_klawiszy] [,nazwa] [,plik_pomocy, kontekst]) MsgBox ikony i przyciski: Stała Wartość Opis vbokonly 0 Wyświetla tylko przycisk OK. vbokcancel 1 Wyświetla przyciski OK i Cancel vbabortretryignore 2 Wyświetla przyciski Abort, Retry i Ignore vbyesnocancel 3 Wyświetla przyciski Yes, No i Cancel vbyesno 4 Wyświetla przyciski Yes i No vbretrycancel 5 Wyświetla przyciski Retry i Cancel vbcritical 16 Wyświetla ikonę Display Critical Message vbquestion 32 Wyświetla ikonę Warning Query vbexclamation 48 Wyświetla ikonę Warning Message vbinformation 64 Wyświetla ikonę Information Message vbdefaultbutton1 0 Pierwszy przycisk domyślny vbdefaultbutton2 256 Drugi przycisk domyślny vbdefaultbutton3 512 Trzeci przycisk domyślny vbdefaultbutton4 768 Czwarty przycisk domyślny vbapplicationmodal 0 Application modal użytkownik musi odpowiedzieć na okno komunikatu przed kontynuacją pracy w INSTRUKCJA 2.1. Visual Basic 21 SIMPLE.ERP
vbsystemmodal 4096 bieżącej aplikacji System modal - w systemach Win16 wszystkie aplikacje zostają uśpione (suspended) dopóki użytkownik nie odpowie na okno komunikatu. W systemach Win32 stała ta powoduje wyświetlenie okna komunikatu będącego zawsze na wierzchu wszystkich uruchomionych aplikacji. (dostępne w vbsdoc) MsgBox zwracane wartości: Każdy z przycisków umieszczonych na msgbox() zwraca unikalny kod: Zmienna Wartość Opis vbok 1 Został naciśnięty przycisk OK. vbcancel 2 Został naciśnięty przycisk Cancel vbabort 3 Został naciśnięty przycisk Abort vbretry 4 Został naciśnięty przycisk Retry vbignore 5 Został naciśnięty przycisk Ignore vbyes 6 Został naciśnięty przycisk Yes vbno 7 Został naciśnięty przycisk No 2.5. Konwersje typów, funkcje pomocnicze 2.5.1. Sprawdzanie podtypów IsArray() sprawdza czy dana zmienna jest tablicą IsDate() - sprawdza czy dana zmienna jest datą IsEmpty() - sprawdza czy dana zmienna jest pusta IsNull() - sprawdza czy wartością zmienna zawiera wartość typu Null IsNumeric() - sprawdza czy dana zmienna jest liczbą VarType() podaje jakiego podtypu jest zmienna 2.5.2. Konwersja typów CBool() konwertuje na wartość logiczną CByte() konwertuje na wartość typu byte CCur() - konwertuje na wartość typu kwota CDate() - konwertuje na datę CDbl() konwertuje na liczbę podwójnej precyzji INSTRUKCJA 2.1. Visual Basic 22 SIMPLE.ERP
CInt() konwertuje na wartość typu całkowitego CLng() konwertuje na wartość liczby całkowitej długiej Hex() konwertuje na wartość szesnastkową CStr() konwertuje na tekst 2.5.3. Funkcje daty i czasu Date() zwraca systemową datę DateAdd() podaje datę po dodaniu określonego okresu (lat, miesięcy, dni) DateDiff() wylicza różnicę pomiędzy datami (w latach, miesiącach, dniach) DateValue() zamienia datę tekstową na liczbową Day() zwraca dzień miesiąca Month() zwraca miesiąc wskazanej daty MonthName() zwraca nazwę miesiąca Now() podaje aktualną datę i czas systemowy WeekDay() podaje dzień tygodnia WeekDayName() podaje nazwę dnia tygodnia Year() podaje rok wskazanej daty 2.5.4. Funkcje dotyczące tekstów Asc(tekst) podaje kod ASCII pierwszego znaku z ciągu znaków Chr(liczba) podaje znak będący odpowiednikiem kodu ASCII LCase(tekst) zamienia wszystkie litery ciągu na małe UCase(tekst) zamienia wszystkie litery ciągu na duże StrReverse(tekst) odwraca ciąg znaków 2.5.5. Przeszukiwanie tekstów InStr(start, ciąg_przeszukiwany, ciąg_szukany [, sposób_porównania]) - zwraca numer pozycji pierwszego znaku szukanego ciągu InStrRev(ciąg_przeszukiwany, ciąg_szukany [, pozycja_końcowa] [, sposób_porównania]) - zwraca numer pozycji pierwszego znaku szukanego ciągu przeszukując od końca Replace(tekst, ciąg_szukany, ciąg_nowy [, poz_startowa] [,liczba_podciągów] [,sposób_porównania]) zamienia we wskazanym tekście ciąg znaków wskazanym ciągiem Sposób porównania: 0 binarny CS, 1 tekstowy CI INSTRUKCJA 2.1. Visual Basic 23 SIMPLE.ERP
2.5.6. Długość tekstu Left(tekst, długość) podaje ciąg obcięty na wskazaną długość Mid(tekst, znak_startowy, ilosc_znakow) wycina ze wskazanego miejsca określoną ilość znaków Right(tekst, ilość_znaków) obcina ciąg z prawej strony Len(tekst) oblicza długość ciągu LTrim(tekst), RTrim(tekst), Trim(tekst) - odcinają nieznaczące spacje z ciągu LTrim z lewej strony, RTrim z prawej strony, Trim z obu stron 2.5.7. Porównanie StrComp(tekst1, tekst2, sposób) porównuje dwa ciągi znaków, zwraca: -1 - jeżeli tekst1 jest bliżej w skali ASC niż tekst2, 0 - jeżeli są równe, 1 - jeśli tekst1 jest dalej, Null jeżeli którykolwiek z tekstów jest Null 2.5.8. Łączenie elementów tablic Join(tablica) - zwraca zsumowane elementy tablicy Dim Tablica(3) Dim Tekst Tablica(0)= Wlazł Tablica(1)= kotek Tablica(2)= na Tablica(3)= płotek Tekst=Join(Tablica) 2.6. Funkcje dostępu do atrybutów Dane widoczne są tylko za pośrednictwem obiektu PB i roli użytkownika SSV. Wymiana danych realizowana jest w tym samym połączeniu co SSV (nie jest wymagane nowe połączenie, np. poprzez ADO). Wszelkie modyfikacje danych przeprowadzane są w otwartej transakcji. Możliwy jest dostęp do innych baz przez ADO. GetAttribute (ByVal obj As String, ByRef value As Variant) As Integer SetAttribute (ByVal obj As String, ByVal value As Variant) As Integer CreateObject (ByVal obj As String, ByVal objtype As String) As Integer GetItemString (ByVal obj As String, ByVal row As Long, ByVal column As String, ByRef value As Variant) As Integer INSTRUKCJA 2.1. Visual Basic 24 SIMPLE.ERP
GetItemLong (ByVal obj As String, ByVal row As Long, ByVal column As String, ByRef value As Variant) As Integer GetItemDate (ByVal obj As String, ByVal row As Long, ByVal column As String, ByRef value As Variant) As Integer GetItemNumber (ByVal obj As String, ByVal row As Long, ByVal column As String, ByRef value As Variant) As Integer SetItem (ByVal obj As String, ByVal row As Long, ByVal column As String, ByVal value As Variant) As Integer ScrollToRow (ByVal obj As String, ByVal row As Variant) As Integer RowCount (ByVal obj As String, ByRef value As Variant) As Integer GetRow (ByVal obj As String, ByRef value As Variant) As Integer Retrieve (ByRef Rows As Long, ParamArray Args()) As Integer Save () As Integer Przykłady wywołań: err1 = PB.GetItemString( naglowek, 1, magazyn, s_mag) err1 = PB.RowCount( pozycje, ilepoz) err1 = PB.SetItem( pozycje, ilepoz, magazyn, s_mag) Statusy wywołania funkcji: -2 - brak metody lub atrybutu obiektu BSO -1 - pozostałe błędy 0 lub 1 - wykonanie poprawne 2.7. Funkcje dostępu do danych przez SQL SQLSelect(obiekt_txt, sql_txt) tworzy obiekt napełniony danymi z zapytania sql_txt SQLCommand(sql_txt) pozwala wykonać pozostałe instrukcje SQL, np. Insert czy Update Przykłady wywołań: sql_query = select wytwor_id, censprzed from wytwor err1 = PB.SQLSelect( OCeny, sql_query) err1 = PB.GetItemNumber( OCeny, 1, censprzed, cena_spr) 2.8. Funkcje obsługi błędów GetErrorText () As String GetErrorDescription () As String INSTRUKCJA 2.1. Visual Basic 25 SIMPLE.ERP
ClearError () As Integer 2.9. Zwracanie kodu wyjścia Każdy skrypt użyty w hooku SSV musi zwracać kod wyjścia. Na podstawie jego wartości system SSV decyduje czy wywołać główną procedurę w hooku. SetReturnValue (ByVal value As Variant) As Integer Przykład: If blad = 0 then Err1 = PB.SetReturnValue(1) Else Err1 = PB.SetReturnValue(-1) End If 2.10. Podstawowe rodzaje zdarzeń Funkcja użytkownika Przed edycją dokumentu Przed usunięciem pozycji Przed zapisem dokumentu Przed zatwierdzeniem dokumentu Po dekretacji Po dodaniu pozycji Po zatwierdzeniu Przejście nagłówek pozycja Sprawdzenie dokumentu Sprawdzenie nagłówka Sprawdzenie pozycji INSTRUKCJA 2.1. Visual Basic 26 SIMPLE.ERP
INSTRUKCJA 2.1. Visual Basic 27 SIMPLE.ERP