Profile cover photo
Profile photo
Zbigniew Bratko
2 followers
2 followers
About
Zbigniew's interests
View all
Zbigniew's posts

Post has attachment
17 • Konwersja tekstu na zapis heksadecymalny.
Pobieramy kolejne znaki tekstu, odczytujemy jego kod ANSI i konwertujemy na postać heksadecymalną. Dla liczb mniejszych od 16 zapis musi być dwuznakowy (&H00=00 do &H0F=0F), by można było dokonać konwersji z zapisu heksadecymalnego na zapis dziesiętny. Posłużymy się funkcjami: #Asc(ciąg), #Hex(liczba), #StrConv(ciąg, conversion), Mid(ciąg, start[, długośc]), Right(ciąg, długośc) oraz instrukcją #Mid(tekst, początek[, długość]) = ciąg.
Funkcja #TextToHex (…)

Post has attachment
16 • Test funkcji #HexToDec
Test konwersji liczby -2 147 483 648 (dolna granica typu Long) w 64-bitowym środowisku #VBA7 za pomocą wyrażenia CLng("&H" & Hex$(-2147483648)), kończy się niepowodzeniem, bo MS #Access zgłasza ”Błąd nr 13. Type mismatch”. Funkcja Hex # zwraca ciąg FFFFFFFF80000000 odpowiadający typowi LongLong, którego funkcja CLng nie potrafi zinterpretować.
Powinnismy użyć funkcji CLngLng, bądź jawnie przekonwertować liczbę -2147483648 na typ Long w wyrażeniu CLng("&H" & Hex$(CLng(-2147483648)))

Post has attachment
15 • Funkcja #HexToDec
Do konwersji  liczby  na postać heksadecymalną służy funkcja #Hex(liczba) zwracającą wartość typu String reprezentującą heksadecymalną (szesnastkową) wartość argumentu liczba. MS #Access i jego #VBA7 nie posiada wbudowanej funkcji dokonującej konwersję z zapisu postaci heksadecymalnej na postać dziesiętną. W tym celu można użyć funkcji  Val("&H" & ciąg) i znak deklaracji typu (sufiksów "%", "&", "^"), lub funkcje konwersji typu: np. CInt ("&H" & ciąg), CLng("&H" & ciąg) ...

Post has attachment
14 • Opcje startowe MS #Access

W bazie danych dla użytkownika końcowego ukrywa się okno bazy danych MS Access, za pomocą opcji startowych. Jednak użytkownik może wybrać polecenie Menu/Plik/Opcje i zmienić ustawienia. Także wciśnięcie klawisza Shift podczas startu bazy powoduje pominięcie opcji startowych. Okno bazy można odsłonić za pomocą klawisza F11. Prawie wszystkie opcje programu MS Access można zmienić za pomocą kodu #VBA lub #VBA7 wykorzystując kolekcję #Properties obiektu #Application.

Post has attachment
Polecam zbiór darmowych ikon.
Licencja wymaga jedynie linku w okienku dialogowym "About" programu.

Post has attachment
13 • Funkcje #API – właściwość Err.LastDllError

Właściwość Err. #LastDllError powinna być sprawdzana po każdym niepowodzeniu wywoływanej funkcji biblioteki #DLL. Aby przekonwertować „suchy numer” błędu zwracany przez właściwość Err.LastDllError na opisowy komunikat tekstowy o przyczynie błędu, wykorzystamy funkcję API • #FormatMessage(...), która formatuje tekst komunikatu związanego z kodem błędu, zapisuje go do bufora wyjściowego i zwraca ilość znaków w buforze (bez znaku vbNullChar).

Post has attachment
12. • Funkcje #API - #Mutex; jedna instancja bazy MS #Access

Aby uniemożliwić użytkownikowi otwarcie drugiej instancji bazy MS Access możemy wykorzystać do tego systemowe mechanizmy służące do synchronizacji procesów, czyli algorytmy wzajemnego wykluczania (w skrócie mutex, z ang. mutual exclusion).
Aby stworzyć mutex należy wywołać funkcję CreateMutex(...), która po stwierdzeniu braku mutexu o podanej nazwie w systemie tworzy go, a funkcja #GetLastError zwraca wartość #ERROR_SUCCESS=0. Jeśli mutex już istnieje, funkcja #CreateMutex(...) tworzy nowy uchwyt, a funkcja GetLastError zwraca wartość #ERROR_ALREADY_EXISTS.

Post has attachment
11. • Funkcje #API - Jedna #instancja bazy MS #Access.

Czasami projekt bazy danych wymaga, by użytkownik nie mógł otworzyć drugiej instancji bieżącej bazy danych. Zabezpieczenie takie możemy zrealizować za pomocą opcji startowych MS Access tj. makra #Autoexec, automatycznie uruchamianego podczas startu bazy, lub formularza startowego (właściwość #StartupForm). Obie te opcje startowe można pominąć, trzymając wciśnięty klawisz „Shift”
 otwierając bazę. Korzystając z właściwości #AllowBypassKey możemy uniemożliwić użycie klawisza #SHIFT dla pominięcia opcji startowych ...

Post has attachment
10. • Funkcje #API - tytuły okien instancji MS #Access
Wiemy już jak wykorzystać interfejs API, aby odczytać ile instancji MS Access jest otwartych. Informacja typu: „Otwarto 2 instancje MS Access” jest
 czasami niewystarczająca.  Bardziej szczegółowe informacje znajdują się na pasku tytułowym okna MS Access. Aby pobrać tytuły okna głównego
 MS Access można wykorzystać interfejs Windows API i jego funkcję:  #FindWindowEx - zwracającą uchwyt okna potomnego, którego albo nazwa klasy,
 albo (i) tytuł odpowiada przekazanym argumentom. Tytuł okna możemy odczytać za pomocą własnej funkcji #GetTextWindow zwracającą tekst (tytuł)
 okna o przekazanym w argumencie uchwycie #hwnd.

Post has attachment

09. • Funkcje #API - ile uruchomiono instancji MS #Access

Czasami w trakcie działania aplikacji MS Access potrzebujemy sprawdzić, czy otwarta jest inna baza MS Access, a jeżeli tak, to ile instancji MS Access jest uruchomionych. 
Do tego celu wykorzystamy interfejs Windows API i jego dwie funkcje:
#GetDesktopWindow - zwracającą uchwyt pulpitu, czyli okna obejmującego cały ekran, na którym osadzone są wszystkie pozostałe okna.
#FindWindowEx - zwracającą uchwyt okna potomnego, którego nazwa klasy i (lub) tytuł odpowiadają nazwom przekazanym w argumentach funkcji.
Dla przypomnienia: #OMain  jest to nazwa klasy głównego okna MS Access.
Wait while more posts are being loaded