Programowanie w Delphi na przykładzie aplikacji Archiwum Tomasz Urbaczewski Toruń 2011-02-20 Przesłanki do wdrożenia aplikacji Obecny sposób obsługi archiwum Kluczowe problemy związane z obecną obsługą archiwum Planowy sposób obsługi archiwum z wykorzystaniem aplikacji Przewidywane korzyści związane z wdrożeniem aplikacji Założenia funkcjonalne aplikacji Możliwość rejestracji w bazach systemu nowego dokumentu wraz z informacją o miejscu jego składowania w archiwum papierowym. Możliwość rejestracji informacji o wypożyczeniach dokumentu z archiwum papierowego (kto wypożyczył , kiedy został dokonany zwrot itp) Możliwość wykorzystania zewnętrznej bazy danych zawierającej dodatkowe informacje o przechowywanym dokumencie (np. dane osobowe klientów umowy która znajduje się w archiwum) dostęp do tych danych odbywa się poprzez połączenie ODBC Możliwość wsadowego importu dokumentów do baz danych aplikacji w postaci arkusza Excel Możliwość wsadowego przekazania zapytania o miejsce składowania wielu dokumentów w postaci arkusza Excel. Możliwość aktualizacji w oparciu o systemy księgowe klienta informacji o statusie dokumentu (czynny, zamknięty) dostęp do tych baz jest realizowany poprzez połączenia ODBC Możliwość edycji i aktualizacji danych zawartych w bazie danych aplikacji Archiwum. Możliwość wykonywania raportów z bazy danych z podziałem na umowy zamknięte, czynne, wypożyczone itd. Specyfikacja techniczna bazy danych Baza danych aplikacji oparta jest o bazę MSSQL Express i składa się z dwóch tabel połączonych relacją. Strukturę tabel przedstawia poniższy diagram Specyfikacja techniczna i funkcjonalna aplikacji Aplikacja składa się z modułu logowania oraz pięciu pozostałych modułów które realizują wcześniej przedstawione założenia funkcjonalne. Na poniższych slajdach zostały przedstawione opisy funkcjonalne i techniczne każdego z modułów Moduł logowania Logowanie do systemu opiera się o plik konfiguracyjny (.ini) umieszczony w katalogu roboczym aplikacji zawierający informacje o nazwie i sposobie logowania do serwera bazy danych. Plik ma poniższą strukturę : [SERWER] SerwerName=elix34 DBName=Arch_DAK NTA=0 Proces logowania jest realizowany przez poniższe procedury procedure WczytajKonfiguracje; procedure OpenConnection; Menu Główne aplikacji – opis funkcjonalny Menu Główne jest formularzem startowym aplikacji z którego operator ma dostęp do wszystkich operacji realizowanych ramach programu zgodnych założeniami funkcjonalnymi. Wizualizację tego formularza przedstawia poniższy rysunek Menu Główne aplikacji – opis procedur Tworzenie tego formularza realizowane jest przez standardowe procedury kompilatora Delphi które wyszczególniono poniżej: procedure Button1Click(Sender: TObject); - procedura ta zamyka formularz Menu I otwiera formularz w którym realizowana jest funkcjonalność związana z ręcznym dodawaniem nowej umowy. procedure Button5Click(Sender: TObject); - procedura realizuje opcję zakończenia pracy programu . procedure Button6Click(Sender: TObject); - procedura ta zamyka formularz Menu I otwiera formularz w którym realizowana jest funkcjonalność związana z poprawianiem i wypożyczaniem zarejestrowanej już w aplikacji umowy. procedure Button3Click(Sender: TObject); - procedura ta zamyka formularz Menu I otwiera formularz w którym realizowana jest funkcjonalność związana z automatycznym i masowym wyszukiwaniu informacji o miejscu składowania umów oraz rejestrowaniu informacji o wypożyczeniu na podstawie arkusza excel. procedure Button2Click(Sender: TObject); - procedura ta zamyka formularz Menu I otwiera formularz w którym realizowana jest funkcjonalność związana z automatycznym i masowym dodawaniem nowych umów oraz aktualizowaniem ich stanów na podstawie danych pobieranych z systemu klienta. procedure Button4Click(Sender: TObject); - procedura ta zamyka formularz Menu I otwiera formularz w którym realizowana jest funkcjonalność związana z tworzeniem raportów związanych z przechowywanymi w aplikacji umowami. Dodanie nowej umowy – opis funkcjonalny Dodanie nowej pozycji archiwizacyjnej Kontrola wielokrotnego dodania Aktualizacja statusów umowy przez ODBC Pobieranie danych klienta przez ODBC Dodanie nowej umowy – opis procedur Z technicznego punktu widzenia kluczowe dla niniejszego formularza są poniższe procedury: procedure Button2Click(Sender: TObject); - procedura ta powoduje zakończenie pracy i zamknięcie niniejszego formularza oraz otwarcie formularza Menu w celu wyboru kolejnej opcji realizowanej przez aplikację. procedure Button1Click(Sender: TObject); - procedura ta sprawdza czy użytkownik wypełnił wszystkie obowiązkowe pola i jeżeli warunek ten jest spełniony wywołuje procedurę dodaj umowe. procedure Edit1Exit(Sender: TObject); - procedura ta wywołuje procedurę pomocnicza o nazwie szukaj _umowe i jeżeli taką umowę znajduje już w bazie danych informuje o tym operatora i przerywa proces dodawania nowej umowy do bazy danych aplikacji. Dodatkowo jeżeli w bazie nie została znaleziona taka umowa procedura wywołuje procedurę pomocniczą o nazwie szukaj_umowe_ODBC która to procedura pomocnicza pobiera z systemu klienta przez połączenie ODBC informacje o statusie umowy i automatycznie na podstawie tej informacji wypełnia pole status na formularzu. Procedure dodaj_umowe(nr_umowy,modulo,nazwa_kl,karton,status,weksel,uwaga, operat, pole1:String; data_oper:TDateTime); - procedura która realizuje proces dodania nowej umowy na podstawie danych z parametrów procedury do bazy danych aplikacji Procedure szukaj_umowe(nr_umowy:String); - procedura która na podstawie parametru procedury wyszukuje w bazie aplikacji umowy o numerze przekazanym w parametrze. Procedure szukaj_umowe_ODBC(nr_umowy:String); - procedura która na podstawie parametru procedury wyszukuje przez połączenie ODBC w bazie systemu klienta umowy o numerze przekazanym w parametrze oraz pobiera informacje o statusie odnalezionej umowy. Szukanie/Poprawianie/Wypożyczanie dokumentów – opis funkcjonalny Wyszukiwanie dokumentów zarejestrowanych w bazie Poprawianie danych w już zarejestrowanych dokumentach Prowadzenie ewidencji wypożyczeń i zwrotów dokumentów Szukanie/Poprawianie/Wypożyczanie dokumentów – opis procedur Za realizację funkcjonalności zawartych w tym formularzu odpowiadają poniższe procedury: procedure Button1Click(Sender: TObject); - procedura ta umożliwia cofnięcie się o jeden rekord w wyszukanym zbiorze rekordów. procedure Button2Click(Sender: TObject); - procedura ta umożliwia przeskok do następnego rekordu w wyszukanym zbiorze rekordów. procedure Button3Click(Sender: TObject); - procedura ta zatwierdza zmiany dokonane na rekordzie bazy danych. procedure Button4Click(Sender: TObject); - procedura ta anuluje zmiany wykonane na rekordzie bazy danych. procedure RadioGroup1Click(Sender: TObject); - procedura ta umożliwia wybranie pracy pomiędzy trybami szukania lub poprawiania rekordów w baize danych. procedure Button5Click(Sender: TObject); - procedura ta rejestruje w bazie danych aplikacji informację o wypożyczeniu umowy z archiwum. procedure Button6Click(Sender: TObject); - procedura ta rejestruje w bazie danych aplikacji informację o zwróceniu umowy do archiwum. procedure DBEdit9Exit(Sender: TObject); - procedura ta kontroluje poprawność wprowadzonej daty związanej z wydaniem umowy z archiwum. procedure Button9Click(Sender: TObject); - procedura ta powoduje usunięcie z bazy danych wpisu związanego z wypożyczeniem lub zwrotem umowy. procedure DBEdit10Exit(Sender: TObject); - procedura ta kontroluje poprawność wprowadzonej daty związanej ze zwrotem umowy do archiwum. procedure Button10Click(Sender: TObject); - procedura ta kasuje z bazy danych bieżący rekord związany z daną umową. Procedure szukaj_umowe(nr_umowy:String); - procedura która na podstawie parametru procedury wyszukuje w bazie aplikacji umowy o numerze przekazanym w parametrze. Procedure szukaj_oper(LP_umowy:Integer); - procedura która wyszukuje w bazie danych informacji o wypożyczeniach i zwrotach danej umowy na podstawie danych zawartych w parametrze procedury. Masowe zapytanie o wydanie umowy – opis funkcjonalny Pobranie z arkusza Excel listy umów. Zwrócenie informacji o miejscu składowania wcześniej pobranej listy umów. Zarejestrowanie informacji w bazie danych o wypożyczeniu umów. Masowe zapytanie o wydanie umowy – opis procedur Za realizację funkcjonalności w tym formularzu odpowiadają następujące procedury: procedure Button1Click(Sender: TObject); procedura ta na podstawie wybranych przez operatora parametrów oraz zewnętrznego źródła danych w postaci arkusza Excel zawierającego listę umów o które należy odpytać bazę danych dokonuje takiego odpytania i dodatkowo na tymże arkuszu Excel umieszcza informację o miejscu składowania umowy dla której było wykonane zapytanie oraz opcjonalnie dokonuje w bazie danych wpisu informującego o wypożyczeniu danej umowy. procedure Button2Click(Sender: TObject); - procedura ta powoduje zakończenie pracy i zamknięcie niniejszego formularza oraz otwarcie formularza Menu w celu wyboru kolejnej opcji realizowanej przez aplikację. procedure FormCreate(Sender: TObject); - jest to standardowa procedura kompilatora Delphi odpowiedzialna za utworzenie formularza. Import danych – opis funkcjonalny Masowy import umów z zewnętrznego źródła danych w postaci arkusza Excel. Masowa aktualizacja statusów umów z systemu klienta przez połączenie ODBC. Import danych – opis procedur Za realizację funkcjonalności w tym formularzu odpowiadają następujące procedury: procedure Button1Click(Sender: TObject); procedura ta jest odpowiedzialna za automatyczny i masowy import umów wraz z informacją o miejscu składowania z zewnętrznych źródeł danych w postaci arkusza Excel. procedure Button2Click(Sender: TObject); - procedura ta powoduje zakończenie pracy i zamknięcie niniejszego formularza oraz otwarcie formularza Menu w celu wyboru kolejnej opcji realizowanej przez aplikację. procedure Button3Click(Sender: TObject); - procedura ta wywołuje procedurę pomocniczą o nazwie aktu_status odpowiedzialną za aktualizację statusów umów zawartych w bazie danych . procedure FormCreate(Sender: TObject); - jest to standardowa procedura kompilatora Delphi odpowiedzialna za utworzenie formularza. Procedure aktu_status(lod,ldo:String); - procedura odpowiedzialna za aktualizację statusów umów zawartych w bazie danych na podstawie danych pobieranych przez połączenie ODBC z systemu klienta. Raporty – opis funkcjonalny Możliwość wykonywania raportów z danych umieszczonych w bazie danych w szczególności dla poniższych kryteriów : Umowy czynne/zamknięte Umowy wypożyczone Umowy wypożyczone przez Raporty – opis procedur Za realizację funkcjonalności w tym formularzu odpowiadają następujące procedury: procedure Button1Click(Sender: TObject); - procedura która na podstawie wybranych przez operatora opcji generuje zestaw rekordów z bazy danych który następnie jest eksportowany do arkusza Excel i w ten sposób prezentowany operatorowi na ekranie. procedure Button2Click(Sender: TObject); - procedura ta powoduje zakończenie pracy i zamknięcie niniejszego formularza oraz otwarcie formularza Menu w celu wyboru kolejnej opcji realizowanej przez aplikację. Instalacja aplikacji W celu poprawnego działania aplikacji wymagane są następujące ustawienia systemowe: Na dowolnym dysku powinien zostać założony katalog aplikacji o nazwie \Arch_DAK\ W katalogu aplikacji musza się znaleźć następujące pliki Plik uruchomieniowy aplikacji *.EXE Plik konfiguracyjny aplikacji *.ini (wskazuje się w nim nazwę serwera i bazy danych do której ma nastąpić logowanie) Na serwerze MSSQL wskazanym w pliku INI muszą być założone bazy danych aplikacji, logowanie do bazy danych odbywa się przy wykorzystaniu użytkownika DAK ale możliwe jest na każdym innym użytkowniku który ma wystarczające prawa do obsługi bazy danych w zakresie odczytu , zapisu i modyfikacji. W celu wykorzystywania opcji masowego importu lub masowego zapytania konieczne jest używanie arkusza Excel o określonej strukturze. Podsumowanie Automatyzacja i optymalizacja procesów związanych z prowadzeniem archiwum papierowego. Zwiększenie bezpieczeństwa przechowywanych dokumentów. Szybki dostęp do dokumentów archiwalnych. Przejrzysty sposób zarządzania archiwum. Zmniejszenie niezbędnych zasobów ludzkich do prowadzenia archiwum. Dziękuje za uwagę