UwagiJG - Wyższa Szkoła Zarządzania i Marketingu w

advertisement
WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU
W SOCHACZEWIE
Wydział Zarządzania i Marketingu
Urbański Marcin
Numer albumu 3984
Program do zarządzania hotelem
dla zwierząt "MiniCrm Aport v2_0"
Praca dyplomowa
praca wykonana pod kierunkiem
Górczyński Janusz
Sochaczew 2012
Praca powstała pod kierunkiem
Górczyńskiego Janusza
któremu składam serdeczne podziękowania
za wiele cennych wskazówek i pomoc
przy pisaniu pracy dyplomowej.
2
Spis treści
WSTĘP .............................................................................................................................................................. 4
1 CRM - JAKO ELEMENT STRATEGII WSPÓŁCZESNEJ ORGANIZACJI. ................................. 6
2 INSTALACJA ........................................................................................................................................... 8
2.1
WYMAGANIA ..................................................................................................................................... 8
2.2
PROCES .............................................................................................................................................. 8
3 OPIS APLIKACJI .................................................................................................................................... 9
3.1
SPECYFIKACJA FUNKCJONALNOŚCI APLIKACJI ................................................................................... 9
3.2
ZASTOSOWANE ROZWIĄZANIA ........................................................................................................... 9
3.3
PROJEKT BAZY DANYCH ..................................................................................................................... 9
3.3.1 Tabele i relacje ........................................................................................................................... 10
3.3.2 Procedury ................................................................................................................................... 11
3.4
PROJEKT INTERFEJSU ....................................................................................................................... 12
3.4.1 Informacje na temat autora oprogramowania............................................................................ 12
3.4.2 Informacje na temat aplikacji ..................................................................................................... 13
3.4.3 Ekran główny .............................................................................................................................. 13
3.4.4 Inteligentne zachowanie aplikacji w wyniku wyszukiwania ....................................................... 14
3.4.5 Dodawanie nowego klienta ........................................................................................................ 15
3.4.6 Dodawanie Pupila ...................................................................................................................... 16
3.4.7 Przeglądanie informacji o Kliencie ............................................................................................ 17
3.4.8 Dodawanie nowej informacji o kontakcie z Klientem ................................................................ 20
3.4.9 Dodawanie nowej transakcji sprzedaży...................................................................................... 21
3.4.9.1
Drukowanie dokumentów .................................................................................................................... 22
3.4.10 Dodawanie nowego produktu ..................................................................................................... 23
3.5
WALIDACJA ..................................................................................................................................... 23
3.6
PROPONOWANE ROZSZERZENIA NA PRZYSZŁOŚĆ ............................................................................. 25
4 PODSUMOWANIE ................................................................................................................................ 27
5 LITERATURA ........................................................................................................................................ 28
6 ZAŁĄCZNIKI......................................................................................................................................... 30
6.1
WAŻNIEJSZE PROCEDURY SQL ........................................................................................................ 30
6.1.1 Dodawanie Opiekuna ................................................................................................................. 30
6.1.2 Dodawanie transakcji sprzedaży ................................................................................................ 35
6.1.3 Wyszukiwanie opiekunów (zaawansowany formularz wyszukiwania) ........................................ 36
6.1.4 Przeglądanie kartoteki opiekuna ................................................................................................ 38
6.1.5 Aktualizacja informacji o wpływie środków na konto ................................................................ 41
6.2
PRZYKŁADOWE ORMULARZE APLIKACJI........................................................................................... 41
6.2.1 Frm_Ekran_Glowny ................................................................................................................... 41
6.2.2 Frm_Dodawanie_Produktu ........................................................................................................ 43
6.2.3 Frm_Dodawanie_Opiekuna ....................................................................................................... 49
3
Wstęp
Na polskim rynku usług dla zwierząt na przełomie ostatniego dwudziestolecia
obserwujemy znaczące ożywienie. W szczególności opieki na rzecz zwierząt domowych, na czas
ich opuszczania prze opiekunów (delegacje służbowe, wakacje za granicą).1 Większa
świadomość społeczna oraz troska o komfort pupila podczas rozłąki jest motorem do rozwoju
przemysłu hotelarskiego dla zwierząt. Powstają kolejne hotele i pensjonaty, które będą zmuszone
konkurować ze sobą już nie tylko zakresem usług ale przede wszystkim poziomem
profesjonalizmu. Wraz ze wzrostem konkurencyjności na rynku będzie nasilała się potrzeba
zatrzymania przy sobie tego właściwego klienta. Klienta, który aktywnie korzysta z naszych
usług, chętnie nam doradza oraz regularnie i terminowo reguluje swoje zobowiązania.
Pracując w dużych korporacjach zdaję sobie sprawę z wagi informacji o kliencie w jednym
systemie. Niniejsza praca ma ku temu posłużyć i stanowić narzędzie przydatne dla każdego
nowego podmiotu rozpoczynającego działalność w branży usług dla zwierząt. Branża ta jest dość
specyficzna, gdyż należy dbać o komfort zwierząt goszczących w hotelu ale i komfort ich
opiekunów.
Celem pracy dyplomowej jest stworzenie aplikacji do zarządzania relacjami z klientem dla
specyficznego typu działalności - hotel dla zwierząt. Za pomocą języka Visual Basic zamierzam
pokazać możliwości wykorzystania niekomercyjnego rozwiązania do tworzenia komercyjnych
aplikacji.
Przed aplikacją stawiane są trzy wymogi:
1. aplikacja musi umożliwiać rejestrowanie nowych klientów zwierząt i ich
opiekunów
2. powinna dawać możliwość rejestrowania sprzedaży oraz wystawiania dokumentów
sprzedaży typu faktura VAT i rachunek
3. dostarczać użytkownikom kompleksową wiedzę na temat Klienta: jego
preferencjach, płatnościach, historii kontaktów oraz pełną informację o posiadanych
przez niego pupilach
1
Politechnika Białostocka, Kwartalnik Wydziału Zarządzania, Tyt.: Ekonomia i zarządzanie Tom 3 nr 1, strona:113,
praca zbiorowa: Janusz Leszek Sokół (Katedra Zarządzania Produkcją, Wydział Zarządzania, Politechnika
Białostocka), Magda Anna Stasińska, Kazimierz Ściesiński (Katedra Szczegółowej Hodowli Zwierząt, Wydział
Nauk o Zwierzętach, SGGW)
4
W tekście przyjęta jest następująca konwencja:



nazwy procedur, funkcji, widoków, nazwy form, fragmenty kodu pisane są czcionką
Courier New;
wielkimi literami są pisane słowa kluczowe języka SQL takie jak SELECT, INSERT,
UPDATE, WHERE;
małymi literami pisane są słowa drugorzędne, np. typy danych.
5
1 CRM - jako element strategii współczesnej organizacji.
Istnieje wiele definicji rozszyfrowujących skrót CRM (ang. Customer Relationship
Managment). Według mnie najkompletniejszą jest następująca:
"Customer Rrelationship Mmanagement, to zbiór modeli biznesowych, metodologii działań
i technologii interaktywnych uruchamianych po to, aby uzyskać wysoki poziom pozostawania
najbardziej wartościowych klientów i uzyskiwania od nich pozytywnych referencji."2
Powyższa definicja podkreśla, iż CRM to przede wszystkim strategia skupiająca wiedzę na
temat klienta i jego preferencji w celu selekcji i otoczenia największą troską tych
najwartościowszych z biznesowego punktu widzenia. W dzisiejszych czasach, przy ogromie
informacji jakie możemy uzyskać osiągnięcie tego nie jest możliwe bez odpowiedniego
oprogramowania komputerowego.
CRM jest próbą stworzenia unikatowej więzi pomiędzy klientem i sprzedawcą. Proces ten
uwzględnia indywidualne podejście oraz przekształca tradycyjny cel jaki był pierwotnie pozyskanie klienta, w budowaniu pozytywnych relacji z klientem. Rozwijaniem współpracy z
nim, zwiększania jego udziału w naszym portfelu klientów, rozpoznawania i zaspokajania jego
potrzeb.3
Wciąż wzmagająca się rywalizacja między konkurencyjnymi przedsiębiorstwami, rozwój
handlu wielkopowierzchniowego propagującego "masowe" podejście do klienta, rotacja
pracowników w działach handlowych spowodowało, iż organizacje zaczęły mocniej dbać,
poznawać i zabiegać o klienta. Dbałość ta miała na celu, aby klient poczuł się kimś wyjątkowym.
Stał się najcenniejszym zasobem o którego zaczęto się najbardziej troszczyć. Tym samym,
minimalizować ryzyko związane np. z przejściem klienta do konkurencji wraz z pracownikiem.
Wzrost konkurencyjności zawsze towarzyszy zjawisko zmniejszenia lojalności klientów.
Tak zrodziła się koncepcja systemów ukierunkowanych na klienta. Systemy klasy CRM
wspierają tą koncepcję.
2
3
Źródło: http://crm.eprace.edu.pl/313,Definicja_i_istota_systemu_CRM.html - 2012-09-20
http://kis.pwszchelm.pl/publikacje/V/Stasienko.pdf , str. 226 - 2012-09-20
6
Głównym założeniem systemu CRM jest spersonalizowane podejście do każdego klienta.
Każdy ma swoje potrzeby, cele, preferencje, własny sposób podejmowania decyzji. Jedni
podejmują decyzje pod wpływem impulsu, inni potrzebują dłuższego czasu. Jedni analizują
każdy wydatek, inni nie.
Na efektywność relacji między organizacją a klientem wpływa dysponowanie kompletną
informacją, wiedzą o nim. Dlatego istotna jest dbałość o informację i pamięć o tym, że każde
zdarzenie polegające na kontakcie klienta z organizacją powinno być rejestrowane przez system
informacyjny. Wiedza o kliencie, jego potrzebach, zachowaniach, czy historii współpracy.
7
2 Instalacja
2.1 Wymagania
Do uruchomienia aplikacji na komputerze klienckim niezbędne jest posiadanie
następującego oprogramowania:


SQL Server 2012 Express Edition;
Visual Studio 2010.
2.2 Proces
W celu uruchomienia aplikacji z załączonej do pracy płyty należy:




skopiować bazę danych "CRM_2_0_Aport" na stację kliencką;
skopiować folder "MiniCRM_2_0_Aport" na stację kliencką;
uruchomić projekt programu za pomocą Visual Studio oraz wskazać bazę danych na
komputerze klienckim na każdym formularzu;
uruchomić program.
8
3 Opis aplikacji
3.1 Specyfikacja funkcjonalności aplikacji
Projektowana przeze mnie aplikacja umożliwia prowadzenie dokumentacji związanej z
obsługą klienta indywidualnego, jak i biznesowego. Aplikacja została stworzona za pomocą
Visual Studio i języka Visual Basic.
Aplikacja zawiera szereg funkcjonalności ułatwiających proces utrzymywania relacji z
klientami:







gromadzenie informacji o klientach, którzy będą rozróżniani jako osoby klienci
indywidualni i biznesowi wraz z zdjęciem klienta, informacjami odnośnie firmy i
klasyfikacją firmy;
gromadzenie i przechowywanie informacji odnośnie pupili klientów wraz z
wywiadem na temat preferencji żywieniowych, warunków bytowych oraz zachowań
względem innych zwierząt i ludzi;
rejestrowanie nowych produktów wg ustalonego porządku;
wyszukiwanie klientów wg jednego lub wielu kryteriów
drukowania dokumentów finansowych typu faktura Vat lub rachunek;
rejestrowania kontaktów wg kanałów komunikacji;
rejestrowanie sprzedaży.
Interfejs aplikacji został zaprojektowany pod kątem łatwości obsługi, tak by każdy nowy
użytkownik był wstanie wyszukiwać klientów i analizować ich. Dzięki zastosowaniu
intuicyjnych przycisków aplikacja w obsłudze jest niezwykle prosta.
3.2 Zastosowane rozwiązania
Tak, jak pisałem we wstępie, zamierzam zaprezentować najnowsze, nie komercyjne
rozwiązania firmy Microsoft, które umożliwiają tworzenie profesjonalnych aplikacji. Do
tworzenia aplikacji wykorzystałem narzędzie Visual Studio 2010 w wersji Express Edition a do
komunikacji z serwerem Microsoft SQL Server 2012 Express Edition.
3.3 Projekt bazy danych
Podstawę aplikacji stanowi baza danych SQL Server. W związku z przejrzystą prezentacją
opis projektu został podzielony na 2 główne części: tabele i relacje oraz procedury.
9
3.3.1 Tabele i relacje
Tabela to najważniejsza część bazy danych, która pozwala na odpowiednie rozplanowanie i
przechowywanie informacji w formie uporządkowanej, a co za tym idzie pozwala łatwo
analizować te informacje w przyszłości. W projektowanej aplikacji wszystkie dane (dane
klientów, informacje o pupilach, informacje na temat sposobów i terminów kontaktowania się z
Klientem oraz informacje na temat wystawionych dokumentów finansowych) przechowywane
będą w tabelach SQL Server oraz połączone będą ze sobą odpowiednimi typami relacji.
Rysunek 1. Ogólny Diagram bazy danych.
Przeznaczenie poszczególnych tabel baz danych wygląda następująco:
Opiekunowie - jest to tabela główna w której przechowywane są szczegółowe
informacje na temat klientów wraz ze ścieżką do zdjęcia Klienta.
Pupile - w tej tabeli przechowywane są szczegółowe informacje na temat mniejszych
"klientów" - opiekunów hotelu. Oprócz ogólnej charakterystyki przechowywane są
informacje z wywiadu na temat pupila (zwyczajów pokarmowych, zachowania,
aktywności, szczepień).
10
Produkty_Uslugi - ta tabela przechowuje odpowiednio skatalogowane informacje na
temat oferowanych przez hotel produktów i usług. Możliwe jest zbudowanie osobnej
oferty dla klientów indywidualnych oraz biznesowych.
Kontakt - w tej tabeli przechowywane są informacje na temat historii kontaktów z
klientem. Przechowywane są min takie informacje, jak: data kontaktu, inicjator
kontaktu, cel, notatka, planowana data kolejnego kontaktu i informacje o jakich
należy pamiętać przy następnym kontakcie.
Sprzedaz - za pomocą tej tabeli dowiemy się jakie dokumenty były wystawiane danemu
klientowi, z jakich usług produktów skorzystał, jakie terminy płatności uzyskał oraz
jaki był typ płatności.
3.3.2 Procedury
Głównym założeniem podczas tworzenia aplikacji było wykonywanie wszystkich
czynności związanych z bazą danych za pomocą procedur przechowywanych SQL. Dzięki
takiemu podejściu został zminimalizowany czas wykonywania zapytań i pobierania z nich
informacji. Dzięki czemu aplikacja działa szybciej niż miałoby to miejsce realizując zapytanie po
stronie Visual Basic.
Jak wspomniałem wcześniej wszystkie czynności wykonywane są za pomocą procedur. Do
procedur przekazywane są odpowiednie parametry generowane na podstawie zachowań
użytkownika w aplikacji, np. otwarcie formularza w celu przejrzenia karty Klienta da inny efekt
niż otwarcie tego samego formularza ale w celu przejrzenia historii kontaktów. Dzieje się tak po
przez identyfikację źródła otwarcia, a to z kolei determinowane jest przez przekazanie
odpowiedniego parametru.
Ilość zdefiniowanych procedur wykracza poza możliwości opisania każdej z nich dlatego
zamieściłem jedynie przykładowe procedury jako załącznik pracy.
11
Rysunek 2. Widok danych zwracanych przez procedurę Przegladanie_KartyKlienta_dgv.
3.4 Projekt interfejsu
Przy projektowaniu interfejsu aplikacji zależało mi na prostocie obsługi oraz w miarę
możliwości wyeliminowanie niekontrolowanej swobody użytkownika.
Opis projektu interfejsu przedstawia wszystkie możliwe ścieżki użycia. Począwszy od
dodawania nowego produktu/usługi, opiekuna, pupila, przeglądania kartoteki opiekuna, przez
zostawienie notatki ze spotkania, na rejestracji sprzedaży i wydrukowaniu dokumentów
skończywszy.
Przed interfejsem postawiono pewne założenia:




ma być prosty w obsłudze;
ma być przyjazny użytkownikowi;
ma być ładny wizualnie;
ma być intuicyjny.
3.4.1 Informacje na temat autora oprogramowania
Użytkownicy mogą liczyć na wsparcie autora oprogramowania oraz odwiedzić jego stronę
w celu przekazania uwag dotyczących działania oprogramowania. Po kliknięciu w "splash
screen" zostanie uruchomiona przeglądarka z firmową stroną.
12
Rysunek 3. Informacje na temat głównej działalności firmy. Źródło: opracowanie własne
3.4.2 Informacje na temat aplikacji
Na ekranie głównym w dowolnym momencie można zapoznać się z informacjami na temat
aplikacji oraz jej autora.
Rysunek 4. Okno zawiera informacje o aplikacji i jej autorze. Źródło: opracowanie własne
3.4.3 Ekran główny
Przyjazny interfejs oraz intuicyjne przyciski ułatwiają nawigację w programie, a grafika
zachęca do używania aplikacji.
13
Rysunek 5. Ekran główny aplikacji. Źródło: opracowanie własne
3.4.4 Inteligentne zachowanie aplikacji w wyniku wyszukiwania
Poniżej pokazany jest formularz wyszukiwania opiekunów zwierząt, który został tak
zaprojektowany, aby rozpoznawał intencje użytkownika.
Rysunek 6. Formularz wyszukiwania. Źródło: pracowanie własne
14
W zależności od użytej ikony funkcyjnej formularz wyszukiwania decyduje który następny
formularz zostanie wyświetlony użytkownikowi. Dzięki zastosowanemu rozwiązaniu została
wyeliminowana konieczność tworzenia kilku identycznych formularzy - dla różnych funkcji
aplikacji.
Podwójne kliknięcie na dane klienta powoduje przejście do odpowiedniego formularza
zgodnego z wcześniejszym wyborem użytkownika dokonanym na ekranie głównym.
3.4.5 Dodawanie nowego klienta
Ekran rejestracji opiekuna oprócz zbierania typowych danych przy tego typu aplikacjach:
dane identyfikacyjne, dane adresowe informacje o kontakcie, wymusza konieczność wyboru
"Źródła informacji o ofercie". Dodatkowo istnieje możliwość wprowadzenia "Kodu Kampanii" pole to w późniejszym procesie analizy pozwoli precyzyjnie określić rentowność danego kanału
komunikacji oraz konkretnej kampanii marketingowej.
Rysunek 7. Formularz rejestracji opiekuna. Źródło: opracowanie własne
Formularz umożliwia również zakładanie klientów biznesowych. W tym celu profil
opiekuna należy uzupełnić o dodatkowe informacje. Użycie przycisku "Faktura na firmę"
uruchomi dodatkowy formularz z dodatkowymi polami, które należy wypełnić.
15
Rysunek 8. Formularz z dodatkowymi polami przy rejestracji firmy. Źródło: opracowanie własne
Informacje typu "Imię i Nazwisko", "Główna działalność firmy", czy edytowane pole
"Branża" posłużą profilowaniu oferty handlowej w przyszłości.
3.4.6 Dodawanie Pupila
Klienci (opiekunowie) hoteli dla zwierząt decydują się na pozostawianie swoich pupili z
konieczności i zarazem z troski o nie. Szczegółowy wywiad odnośnie pupila ma na celu nie tylko
poznanie preferencji i zachowań podopiecznego hotelu ale i zacieśnienie więzi z klientem.
Informacje o szczepieniach nie tylko przypominają o obowiązkowych szczepieniach, lecz
stanowią istny pretekst do podtrzymywania relacji z klientem. Wręcz go wyręczają z tego
obowiązku.
Wszelkie działania "posprzedażowe" podnoszące komfort sprzyjają ocieplaniu stosunków
w relacji sprzedawca-klient.
16
Rysunek 9. Dodawanie nowego pupila. Źródło: opracowanie własne
3.4.7 Przeglądanie informacji o Kliencie
Istotą "prawdziwych" systemów klasy CRM jest udostępnianie kompleksowych informacji
o klientach. Formularz przeglądania klienta daje taką funkcjonalność.
Ekran ten składa się z 4 zakładek skupiających wszystkie informacje na temat opiekuna:

"Dane Opiekuna" - w jednym miejscu użytkownik uzyskuje informacje na temat:
- długości współpracy wyrażone w dniach;
- obrocie netto od początku współpracy;
- informację, czy dany opiekun reprezentuje firmę;
- terminie urodzin;
- dacie i typie ostatniego kontaktu;
- informacje odnośnie dacie i kwocie ostatniej;
- informacje, czy ostatni dokument został opłacony;
- liczbie pupili, ich średnim wieku oraz dominującym gatunku;
- oraz informacje teleadresowe.
17
Rysunek 10. Przeglądanie karty klienta - Dane Opiekuna. Źródło: opracowanie własne

"Pupile" - ta karta służy do szczegółowego przeglądania informacji na temat pupili
danego opiekuna wraz z informacjami uzyskanymi podczas wywiadu.
Rysunek 11. Przeglądanie karty klienta - pupile. Źródło: opracowanie własne
W dolnej części formularza znajdują się dynamicznie generowane informacje na
temat szczepień wybranego pupila.
18

"Historia kontaktów" - udostępnia wgląd w pełną historię kontaktów.
Rysunek 12. Przeglądanie karty klienta - Historia Kontaktów. Źródło: opracowanie własne

"Historia Transakcji"
Rysunek 13. Przeglądanie karty klienta - Historia Transakcji. Źródło: opracowanie własne
19
Górna część widoku karty zawiera informacje na temat ostatniej transakcji, natomiast
sekcja "Zakupione Produkty/Usługi" zawiera szczegółowy wykaz zakupionych
produktów. Poniżej znajduje się wykaz wszystkich dokumentów wystawionych na
danego opiekuna - podwójne kliknięcie w pozycję otwiera szczegółowy podgląd
dokumentów. Dodatkowo na każdej karcie formularza "Przeglądanie Karty Klienta"
użytkownik może w dowolnym momencie przejść do innych formularzy (rejestracja
sprzedaży, dodanie pupila, dodanie informacji o kontakcie) bądź wrócić do ekranu
głównego.
3.4.8 Dodawanie nowej informacji o kontakcie z Klientem
Formularz ten służy nie tylko odnotowaniu informacji na temat kontaktu ale również
zawiera elementy planowania.
Rysunek 14. Dodawanie informacji o kontakcie. Źródło: opracowanie własne
20
3.4.9 Dodawanie nowej transakcji sprzedaży
Dodawanie sprzedaży jest wyjątkowo proste. Wystarczy tylko wybrać dwie wartości z pól
typu combo: Typ dokumentu oraz Termin płatności i wpisać kupowane ilości. Pozostałe
informacje uzupełniają się samoistnie.
Rysunek 15. Rejestrowanie sprzedaży. Źródło: opracowanie własne
Zakończenie rejestrowania transakcji kończy się pytaniem, czy użytkownik ma zamiar
wydrukować dokument dokumenty sprzedażowe.
21
3.4.9.1
Drukowanie dokumentów
Rysunek 16. Widok dokumentu sprzedaży. Źródło: opracowanie własne
Kliknięcie numeru dokumentu powoduje bezpośrednie otwarcie okienka z podglądem
wydruku:
Rysunek 17. Podgląd wydruku. Źródło: opracowanie własne
22
3.4.10 Dodawanie nowego produktu
Dzięki ustrukturyzowanej budowie formularza i odpowiedniej walidacji i tym razem
dbamy o jakość przechowywanych danych.
Rysunek 18. Formularz dodawania produktu. Źródło: opracowanie własne
3.5 Walidacja
W aplikacji położono duży nacisk na jakość danych przechowywanych. Jednym ze
sposobów, aby nie dopuścić do pogorszenia danych jest odpowiednia ich kontrola już na samym
początku, na etapie ich dodawania.
W
aplikacji
"MiniCRM_Aport_2_0"
zastosowano
wiele
walidatorów.
Poniżej
zamieszczam tylko 3 przykładowe:
- numeru pesel
23
Rysunek 19 Funkcja walidująca numer pesel. Źródło: opracowanie własne
- numer nip
Rysunek 20 Funkcja walidująca numer nip. Źródło: opracowanie własne
- sprawdzenie, czy klient o danym numerze pesel nie został wcześniej dodany do bazy danych
24
Rysunek 21 Walidacja na obecność klienta w bazie danych. Źródło: opracowanie własne
3.6 Proponowane rozszerzenia na przyszłość
Zaprojektowana aplikacja dostarcza funkcje istotne dla tej klasy aplikacji, jak również
dodatkowe, poszerzające możliwości - wywiady, statystyki. Mimo to aplikacja jest w fazie
ewolucji.
Poniżej proponuje modyfikacje poszerzające funkcjonalność aplikacji.
Moduł raportowy
Moduł raportowy dawałby użytkownikom większe możliwości analizy profili opiekunów oraz
ich pupili. W chili obecnej możliwa jest indywidualna analiza na podstawie karty opiekuna oraz
za pomocą protokołu ODBC (z wykorzystaniem np. Ms Excela).
Moduł pocztowy
Moduł pocztowy umożliwiający wysyłanie, odbieranie, automatyczne przypisywanie do
opiekuna, klasyfikowanie wiadomości dopełnił by funkcjonalność aplikacji.
Moduł wizualizacji kalendarza wraz z zaplanowanymi wydarzeniami
Funkcjonalność ta umożliwiła by dodawanie zdarzeń za pomocą graficznej kontrolki. Z wyglądu
podobnej do tej stosowanej w Ms Outloku
Rezerwacje on-line
Strona internetowa hotelu wraz z systemem rezerwacji miejsc dla pupili zwiększyły by
funkcjonalność aplikacji
25
Moduł księgowy
Prowadzenie wymaganej dokumentacji pozwoliłoby precyzyjnie określić progi rentowności
ekonomicznej oraz dało by pełniejszy obraz prowadzonej działalności.
26
4 Podsumowanie
Podstawowym zadaniem powyższej pracy było wykonanie aplikacji klasy CRM służącej
do zarządzania relacjami z Klientem z wykorzystaniem ogólnie dostępnych darmowych
rozwiązań, zaprezentowanie możliwości języka Visual Basic oraz zastosowanie praktycznej
wiedzy zdobytej podczas nauki w Wyższej Szkole Zarządzania i Marketingu w Sochaczewie.
Praktyczne stworzenie tej aplikacji pozwoliło mi połączyć wiedzę informatyczną z wiedzą
ekonomiczną, w tym marketingową nabytą podczas nauki w WSZiM Sochaczew. Praca ta była
ciekawym doświadczeniem oraz przypomnieniem informacji z wielu dziedzin informatyki, od
baz danych, po języki programowania.
Wszystkie założenia odnośnie aplikacji zostały zrealizowane.
27
5 Literatura
1. Stephane Faroult, Peter Robson I.: Sztuka Programowania SQL, Helion, Gliwice 2007;
2.Michael Otey, Denielle Otey I.: Microsoft SQL Server 2005 Podręcznik Programisty,
Helion, Gliwice 2007;
3. Paul Sanna i inni I.: Wydanie specjalne Visual Basic dla aplikacji 5 w zastosowaniach,
LT&P Sp. z o.o., Warszawa 1997
4. Praca zbiorowa: Janusz Leszek Sokół (Katedra Zarządzania Produkcją, Wydział
Zarządzania, Politechnika Białostocka), Magda Anna Stasińska, Kazimierz Ściesiński
(Katedra Szczegółowej Hodowli Zwierząt, Wydział Nauk o Zwierzętach, SGGW) I.:
Hotele i pensjonaty dla psów i kotów w świetle literatury, Kwartalnik Wydziału
Zarządzania, Politechnika Białostocka, Białystok 2011
5. http://crm.eprace.edu.pl/313,Definicja_i_istota_systemu_CRM.html ( 2012-09-20)
6. http://kis.pwszchelm.pl/publikacje/V/Stasienko.pdf , str. 226 (2012-09-20)
7. http://www.microsoft.com/en-us/download/details.aspx?id=25169 (2012-07-04)
8. http://msdn.microsoft.com/en-us/library/8s2fzb02.aspx(2012-08-20)
9. http://www.techonthenet.com/excel/formulas/curdir.php (2012-08-13)
10. http://msdn.microsoft.com/en-us/library/yc4fsbf5.aspx (2012-08-14)
11. http://www.coderscity.pl/ftopic2335.htm (2012-08-10)
12. http://www.coderscity.pl/ftopic2335.htm (2012-08-10)
13.http://www.bizeo.pl/firmy/smart-biz/galeria/21890,aplikacja-smart-biz-crmofertowanie-i-zamowienia/ (2012-07-05)
14. http://optima2012.pl/moduly-comarch-optima/crm (2012-07-05)
15. http://www.iconfinder.com/free_icons (2012-08-01)
28
16. http://findicons.com/(2012-08-01)
17. http://www.bardzki.pl/index.php?mid=excel_vba_funkcja_slownie (2012-08-01)
18.Janusz Górczyński I.: Wprowadzenie do programowania baz danych VB.NET, WSZiM,
Sochaczew 2011
19. http://www.youtube.com/watch?v=swY1mkK-CrY(2012-07-25)
20. http://www.youtube.com/watch?v=03-GIEOBmeE (2012-07-25)
21. http://www.youtube.com/watch?v=6KBuk6OneRk (2012-07-20)
22. http://www.youtube.com/watch?v=nlgYmxx1WSE (2012-07-20)
23. http://spragnieniwiedzy.blogspot.com/2010_03_01_archive.html (2012-07-13)
24. http://stopyprocentowe.blogspot.com/2010_04_01_archive.html (2012-07-13)
25. http://www.coderscity.pl/ftopic32825.htm (2012-09-20)
29
6 Załączniki
6.1 Ważniejsze procedury SQL
6.1.1 Dodawanie Opiekuna
Create procedure [dbo].[Dodawanie_Opiekuna]
@Imie as varchar(30),
@Nazwisko as varchar(50),
@Data_Urodzenia_Opiekuna as date,
@Plec as nchar(1) ,
@Kod_pocztowy nchar(5),
@Wojewodztwo as varchar(50),
@Gmina as varchar(50),
@Miejscowosc as varchar(50),
@Nazwa_Ulicy as varchar(50),
@NrDomu as varchar (10),
@NrMieszkania as varchar (10),
@Email as varchar(50),
@Telefon_Stac as nchar(9),
@Telefon_Mob as nchar(9),
@SeriaiNrDowodu as nchar(9),
@Pesel as nchar(9),
@OrganWydajacy as varchar(50),
@ZrodloPozyskaniaKlienta as varchar(50),
@KodKampanii as nchar(10),
30
@Uwagi as text,
@Aktywny as nchar(3),
@Sciezka_Zdjecia as text,
@NazwaFirmy as varchar (50),
@Nip as nchar(10),
@F_www as varchar (50),
@F_kodpocztowy as nchar(5),
@F_woj as varchar(50),
@F_Gmina as varchar(50),
@F_Miejscowosc as varchar(50),
@F_ulica as varchar(50),
@F_NrDomu as varchar(10),
@F_NrLokalu as varchar (10),
@F_Wlasciciel as varchar(50),
@F_Prezes as varchar(50),
@F_dzialalnoscfirmy as varchar(50),
@F_branza as varchar(50),
@GG as varchar(50),
@Skype as varchar(50) as
begin
insert into dbo.opiekunowie(
Imie,
Nazwisko,
Data_Urodzenia_Opiekuna,
31
Plec,
Kod_pocztowy,
Wojewodztwo,
Gmina,
Miejscowosc,
Nazwa_Ulicy,
NrDomu,
NrMieszkania,
Email,
Telefon_Stac,
Telefon_Mob,
SeriaiNrDowodu,
Pesel,
OrganWydajacy,
ZrodloPozyskaniaKlienta,
KodKampanii,
Uwagi,
Aktywny,
Sciezka_Zdjecia,
NazwaFirmy,
Nip,
F_www,
F_kodpocztowy,
F_woj,
32
F_Gmina,
F_Miejscowosc,
F_ulica,
F_NrDomu,
F_NrLokalu,
F_Wlasciciel,
F_Prezes,
F_dzialalnoscfirmy,
F_branza,
GG,
Skype)
Values(
@Imie,
@Nazwisko,
@Data_Urodzenia_Opiekuna,
@Plec,
@Kod_pocztowy,
@Wojewodztwo,
@Gmina,
@Miejscowosc,
@Nazwa_Ulicy,
@NrDomu,
@NrMieszkania,
@Email,
33
@Telefon_Stac,
@Telefon_Mob,
@SeriaiNrDowodu,
@Pesel,
@OrganWydajacy,
@ZrodloPozyskaniaKlienta,
@KodKampanii,
@Uwagi,
@Aktywny,
@Sciezka_Zdjecia,
@NazwaFirmy,
@Nip,
@F_www,
@F_kodpocztowy,
@F_woj,
@F_Gmina,
@F_Miejscowosc,
@F_ulica,
@F_NrDomu,
@F_NrLokalu,
@F_Wlasciciel,
@F_Prezes,
@F_dzialalnoscfirmy,
@F_branza,
34
@GG,
@Skype)
end
***************************************************************
6.1.2 Dodawanie transakcji sprzedaży
Create procedure [dbo].[Dodawanie_Transakcji_Sprzedazy](
@ID_Opiekuna as int,
@ID_Produktu as int,
@Forma_Platnosci as varchar(50),
@Termin_Platnosci as varchar(50),
@Typ_dokumentu as varchar(50),
@Nr_Dokumentu as varchar(50),
@Data_platnosci as date,
@Ilosc_Sprzed as int,
@Wartosc_S_netto as money,
@Wartosc_S_brutto as money)as
begin
insert into
dbo.Sprzedaz(
ID_Opiekuna,
ID_Produktu,
Forma_Platnosci,
Termin_Platnosci,
Typ_dokumentu,
35
Nr_Dokumentu,
Data_platnosci,
Ilosc_Sprzed,
Wartosc_S_netto,
Wartosc_S_brutto)
values(
@ID_Opiekuna,
@ID_Produktu,
@Forma_Platnosci,
@Termin_Platnosci,
@Typ_dokumentu,
@Nr_Dokumentu,
@Data_platnosci,
@Ilosc_Sprzed,
@Wartosc_S_netto,
@Wartosc_S_brutto)
end
****************************************************************
6.1.3 Wyszukiwanie opiekunów (zaawansowany formularz wyszukiwania)
Create procedure [dbo].[WyszukiwanieOpiekunow] (
@ID_Opiekuna int,
@Imie varchar(50),
@Nazwisko varchar(50),
@Pesle nchar (11),
36
@PNA nchar(5),
@Miejscowosc varchar(50),
@CzyFirma nchar (3),
@Nip nchar (10),
@Komorka nchar(9),
@mail varchar (50),
@DataUtw date
--@PupilHotel nchar(3)*/) as
Begin
select
ID_Opiekuna as ID, Imie,
Nazwisko,
Miejscowosc,
Nazwa_Ulicy as Ulica,
NrDomu,
NrMieszkania,
Kod_pocztowy as PNA,
DataUtworzenia,
NazwaFirmy
from dbo.Opiekunowie
where
iif(@ID_Opiekuna like '',10, @ID_Opiekuna)<=ID_Opiekuna and
Imie like iif(@Imie is null or @Imie='','%' , @Imie) and
37
Nazwisko like iif(@Nazwisko is null or @Nazwisko='', '%',
@Nazwisko) and
Pesel like iif(@Pesle is null or @Pesle='','%' , @Pesle) and
Kod_pocztowy like iif(@PNA is null or @PNA='', '%', @PNA) and
Miejscowosc like iif(@Miejscowosc is null or Miejscowosc='','%',
@Miejscowosc) and
NazwaFirmy like iif(@CzyFirma like 'Tak','[a-z]%',
iif(@CzyFirma like'Nie','','%')) and
NIP like iif(@Nip is null or @Nip='', '%', Nip) and
Telefon_Mob like iif(@Komorka is null or @Komorka='','%',
@Komorka) and
Email like iif(@mail is null or @mail='', '%',@mail ) and
DataUtworzenia >= iif(@DataUtw is null or
@DataUtw='','1900-01-01', @DataUtw) and
Aktywny='Tak'
--iif(@PupilHotel is null or @PupilHotel*/
End
**********************************************************************
6.1.4 Przeglądanie kartoteki opiekuna
Create procedure
[dbo].[Przegladanie_KartyKlienta_InformacjeOperacyjne]
@ID_Opiekuna int
as
begin
select
38
DATEDIFF(DAY,convert(date,min(Data_transakcji)),GETDATE()) as
Poczatek_Wspolpracy,sum(Wartosc_S_netto* Ilosc_Sprzed) as
Obrot_Narastajaco,CONVERT(date,max(Data_transakcji)) as
Data_Ost_Transakcji
from dbo.Sprzedaz
where @ID_Opiekuna=ID_Opiekuna
group by ID_Opiekuna
end
**********************************************************************
create procedure
[dbo].[Przegladanie_KartyKlienta_HistoriaTransakcji_OstataniTrans
akcja]
@ID_Opiekuna int
as
begin
select
CONVERT(date, Data_transakcji) as DataSprzedaz,
Forma_Platnosci,
Termin_Platnosci,
Nr_Dokumentu,
Data_platnosci,
Ilosc_Sprzed,
Wartosc_S_netto,
Wartosc_S_brutto,
Data_Wplywu_na_rachunek,
39
Nazwa_Opisowa,
convert(numeric(18,2),sum(Ilosc_Sprzed*Wartosc_S_netto)) as
WartoscNetto,
convert(numeric(18,2),sum(Ilosc_Sprzed*Wartosc_S_brutto)) as
WartoscBrutto
from Sprzedaz s inner join Produkty_Uslugi p
on s.ID_Produktu=p.ID_Produktu
where ID_Opiekuna=@ID_Opiekuna and
Nr_Dokumentu=
(Select
top
1
Nr_Dokumentu
from
Sprzedaz
where
ID_Opiekuna=@ID_Opiekuna
order by Data_transakcji desc )
group by
CONVERT(date, Data_transakcji),
Forma_Platnosci,
Termin_Platnosci,
Nr_Dokumentu,
Data_platnosci,
Ilosc_Sprzed,
Wartosc_S_netto,
Wartosc_S_brutto,
Data_Wplywu_na_rachunek,
Nazwa_Opisowa
end
40
6.1.5 Aktualizacja informacji o wpływie środków na konto
create procedure
dbo.Przegladanie_KartyKlienta_HistoriaTransakcji_SzczegolyDokumen
tu_UpdateDatyPlatnosci
@Nr_Dokumentu varchar(50),
@Data date
as
begin
update Sprzedaz
set Data_Wplywu_na_rachunek=@Data
where Nr_Dokumentu like @Nr_Dokumentu
end
6.2 Przykładowe ormularze aplikacji
6.2.1 Frm_Ekran_Glowny
Imports System.Data.SqlClient
Public Class frm_Ekran_Gl
Public zrodlo As String = ""
Private Sub PictureBox4_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox4.Click
frm_Nowy_Opiekun.Show()
zrodlo = "Nowy_Opiekun"
Me.Hide()
End Sub
Private Sub PictureBox5_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox5.Click
41
frm_Wyszukiwanie_Opiekuna.Show()
zrodlo = "Nowy_Pupil"
Me.Hide()
End Sub
Private Sub PictureBox3_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox3.Click
frm_Wyszukiwanie_Opiekuna.Show()
zrodlo = "Przegladanie_Klienta"
Me.Hide()
End Sub
Private Sub PictureBox6_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox6.Click
frm_Wyszukiwanie_Opiekuna.Show()
zrodlo = "Dodawanie_Kontaktu"
Me.Hide()
End Sub
Private Sub PictureBox2_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox2.Click
frm_Wyszukiwanie_Opiekuna.Show()
zrodlo = "Dodawanie_Sprzedazy"
Me.Hide()
End Sub
Private Sub frm_Ekran_Gl_Load(sender As System.Object, e As
System.EventArgs) Handles MyBase.Load
zrodlo = ""
42
End Sub
Private Sub btn_anuluj_Click(sender As System.Object, e As
System.EventArgs) Handles btn_anuluj.Click
Me.Close()
End Sub
Private Sub PictureBox1_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox1.Click
frm_Dodawanie_Produktu.Show()
Me.Hide()
End Sub
Private Sub PictureBox7_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox7.Click
wizytowka.Show()
End Sub
Private Sub PictureBox8_Click(sender As System.Object, e As
System.EventArgs) Handles PictureBox8.Click
AboutBox1.Show()
End Sub
End Class
6.2.2 Frm_Dodawanie_Produktu
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.IO
Public Class frm_Dodawanie_Produktu
Public Nazwa_Serwera As String = "PROMETEUSZ_01\SQLEXPRESS"
43
Public Nazwa_Bazy_Danych As String = "CRM_2_0_Aport"
'************************************************************
'zmienne Ado.net
Dim SQL_connectionstring As New SqlConnection("Data Source=" &
Nazwa_Serwera & "; Initial Catalog=" & Nazwa_Bazy_Danych & ";
integrated security=true")
'koniec zmiennych ado
'***********************************************************
Private Sub btn_zapisz_Click(sender As System.Object, e As
System.EventArgs) Handles btn_zapisz.Click
Dim checkform As Integer
'************************************************************
'Walidacja
If txt_NazwaProduktu.Text = "" Then
lbl_Produkt.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_Produkt.BackColor = Color.Transparent
End If
If cmb_Kategoria.Text = "" Then
lbl_Kat.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_Kat.BackColor = Color.Transparent
End If
44
If cmb_Typ.Text = "" Then
lbl_Typ.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_Typ.BackColor = Color.Transparent
End If
If txt_CenaNetto.Text = "" Then
lbl_CenaNetto.BackColor = Color.Red
checkform = +checkform + 1
Else
If IsNumeric(txt_CenaNetto.Text) = False Then
lbl_CenaNetto.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_CenaNetto.BackColor = Color.Transparent
End If
End If
If txt_StawkaVat.Text = "" Then
lbl_Stawka.BackColor = Color.Red
checkform = +checkform + 1
Else
If IsNumeric(txt_StawkaVat.Text) = False Then
lbl_Stawka.BackColor = Color.Red
checkform = +checkform + 1
45
Else
lbl_Typ.BackColor = Color.Transparent
End If
End If
If txt_JednSprzedazy.Text = "" Then
lbl_JednSprzed.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_JednSprzed.BackColor = Color.Transparent
End If
Try
SQL_connectionstring.Open()
Catch ex As Exception
MsgBox("Problem z weryfikacją produktu")
Exit Sub
End Try
'****************************************************************
'Sprawdzam czy nazwa produktu istnieje w bazie
Dim Czy_istnieje_Nazwa As Integer
Dim SQL_command1 As New SqlCommand("exec dbo.Spr_Nazwa_Produktu
@Nazwa_Opisowa='" & txt_NazwaProduktu.Text & "'",
SQL_connectionstring)
Czy_istnieje_Nazwa = SQL_command1.ExecuteScalar
SQL_connectionstring.Close()
If Czy_istnieje_Nazwa > 0 Then
46
MsgBox("Taki produkt istniej już w bazie danych. ID Produktu w
bazie: " & Czy_istnieje_Nazwa)
lbl_Produkt.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_Produkt.BackColor = Color.Transparent
End If
'*************************************************************
If checkform > 0 Then
Exit Sub
Else
If txt_CenaNetto.Text = "" Then
txt_CenaNetto.Text = 0
End If
If txt_StawkaVat.Text = "" Then
txt_StawkaVat.Text = 0
End If
Try
SQL_connectionstring.Open()
Catch ex As Exception
MsgBox("Problem z dodaniem produktu do bazy danych")
Exit Sub
End Try
47
Dim SQL_Command As New SqlCommand("exec dbo.Dodawanie_Produktu
@Nazwa_Opisowa='" & Trim(txt_NazwaProduktu.Text) & _
"', @Kategoria_Produktu='" & cmb_Kategoria.Text & _
"', @Typ='" & cmb_Typ.Text & _
"', @Aktywny='T', @Cena_Netto='" &
Replace(CDbl(txt_CenaNetto.Text), ",", ".") & _
"', @Stawka_Vat='" & Replace(CDbl(txt_StawkaVat.Text), ",", ".")
& _
"', @JednSprzedazy='" & Trim(txt_JednSprzedazy.Text) & "'",
SQL_connectionstring)
SQL_Command.ExecuteNonQuery()
MsgBox("Dodano Produkt/Usługę do Bazy Danych")
SQL_connectionstring.Close()
SQL_connectionstring = Nothing
End If
Me.Close()
End Sub
Private Sub Button1_Click(sender As System.Object, e As
System.EventArgs) Handles Button1.Click
frm_Ekran_Gl.Show()
Me.Close()
End Sub
Private Sub btn_anuluj_Click(sender As System.Object, e As
System.EventArgs)
frm_Ekran_Gl.Show()
48
Me.Close()
End Sub
End Class
6.2.3 Frm_Dodawanie_Opiekuna
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.IO
Public Class frm_Nowy_Opiekun
Public Nazwa_Serwera As String = "PROMETEUSZ_01\SQLEXPRESS"
Public Nazwa_Bazy_Danych As String = "CRM_2_0_Aport"
Dim sciezka_zdjecie_opiekuna As String
'****************************************************************
'zmienne Ado.net
Dim SQL_connectionstring As New SqlConnection("Data Source=" &
Nazwa_Serwera & "; Initial Catalog=" & Nazwa_Bazy_Danych & ";
integrated security=true")
'koniec zmiennych ado
'****************************************************************
Private Sub frm_Nowy_Opiekun_Load(sender As System.Object, e As
System.EventArgs) Handles MyBase.Load
dtp_data_ur.Value = DateTime.Today
dtp_data_ur.MaxDate = DateTime.Today
End Sub
Public Function spr_Pesel(ByVal Pesel As String) As Boolean
49
Dim Pesel_sumakontrolna As Integer
Pesel = Trim(Pesel)
Pesel_sumakontrolna = 0
Pesel_sumakontrolna = Pesel.Substring(0, 1) * 1 +
Pesel.Substring(1, 1) * 3 _
+ Pesel.Substring(2, 1) * 7 + Pesel.Substring(3, 1) * 9 _
+ Pesel.Substring(4, 1) * 1 + Pesel.Substring(5, 1) * 3 _
+ Pesel.Substring(6, 1) * 7 + Pesel.Substring(7, 1) * 9 _
+ Pesel.Substring(8, 1) * 1 + Pesel.Substring(9, 1) * 3
If Pesel.Substring(10, 1) = 10 - (Pesel_sumakontrolna Mod 10)
Then
Return True
ElseIf Pesel.Substring(10, 1) = (Pesel_sumakontrolna Mod 10) Then
Return True
Else
Return False
End If
End Function
Private Sub btn_zapisz_Click(sender As System.Object, e As
System.EventArgs) Handles btn_zapisz.Click
'****************************************************************
'deklarujemy zmienne
Dim checkpesel As Boolean
Dim checkform As Integer
'****************************************************************
50
'Walidacja
If txt_imie.Text = "" Then
lbl_imie.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_imie.BackColor = Color.Transparent
End If
If txt_nazwisko.Text = "" Then
lbl_nazwisko.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_nazwisko.BackColor = Color.Transparent
End If
If cmb_plec.Text = "" Then
lbl_plec.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_plec.BackColor = Color.Transparent
End If
If dtp_data_ur.Value = Today Then
lbl_dataur.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_dataur.BackColor = Color.Transparent
51
End If
If txt_pesel.Text <> "" Then
If Len(txt_pesel.Text) = 11 Then
If checkpesel = spr_Pesel(txt_pesel.Text) Then
lbl_pesel.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_pesel.BackColor = Color.Transparent
End If
End If
Else
lbl_pesel.BackColor = Color.Red
checkform = +checkform + 1
End If
If txt_seriainrDO.Text = "" Then
lbl_seriainumerdo.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_seriainumerdo.BackColor = Color.Transparent
End If
If cmb_organwyd.Text = "" Then
lbl_organwyd.BackColor = Color.Red
checkform = +checkform + 1
Else
52
lbl_organwyd.BackColor = Color.Transparent
End If
If txt_PNA.Text = "Format XXXXX" Then
lbl_pna.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_pna.BackColor = Color.Transparent
If Len(txt_PNA.Text) <> 5 Then
lbl_pna.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_pna.BackColor = Color.Transparent
Try
IsError(CLng(txt_PNA.Text))
Catch ex As Exception
lbl_pna.BackColor = Color.Red
checkform = +checkform + 1
End Try
End If
End If
If cmb_wojewodztwo.Text = "" Then
lbl_woj.BackColor = Color.Red
checkform = +checkform + 1
Else
53
lbl_woj.BackColor = Color.Transparent
End If
If txt_gmina.Text = "" Then
lbl_gmina.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_gmina.BackColor = Color.Transparent
End If
If txt_miejscowosc.Text = "" Then
lbl_miejscowosc.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_miejscowosc.BackColor = Color.Transparent
End If
If txt_ulica.Text = "" Then
lbl_ulica.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_ulica.BackColor = Color.Transparent
End If
If txt_nrdomu.Text = "" Then
lbl_numerdomu.BackColor = Color.Red
checkform = +checkform + 1
Else
54
lbl_numerdomu.BackColor = Color.Transparent
End If
If txt_nrmieszkania.Text = "" Then
lbl_nrmieszk.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_nrmieszk.BackColor = Color.Transparent
End If
If txt_email.Text = "" Then
lbl_email.BackColor = Color.Red
checkform = +checkform + 1
Else
If InStr(txt_email.Text, "@") = 0 Then
lbl_email.BackColor = Color.Red
checkform = +checkform + 1
Else
If Len(txt_email.Text) < 6 Then
lbl_email.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_email.BackColor = Color.Transparent
End If
End If
End If
55
If txt_Tkom.Text = "" Then
lbl_telkom.BackColor = Color.Red
checkform = +checkform + 1
Else
If Len(txt_Tkom.Text) < 9 Then
lbl_telkom.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_telkom.BackColor = Color.Transparent
End If
Try
IsError(CLng(txt_Tkom.Text))
Catch ex As Exception
lbl_telkom.BackColor = Color.Red
checkform = +checkform + 1
End Try
End If
If cmb_ZrodInf.Text = "" Then
lbl_zrodloinf.BackColor = Color.Red
checkform = +checkform + 1
Else
lbl_zrodloinf.BackColor = Color.Transparent
End If
If txt_kodkampanii.Text = "" Then
56
txt_kodkampanii.Text = "bd"
End If
If rtb_Uwagi.Text = "" Then
rtb_Uwagi.Text = "Brak Uwag"
End If
'sprawdzam czy wszystkie wymagane pola są uzupełnione zanim
prześle je do bazy
If checkform > 0 Then
MsgBox("Proszę wypełnić wszystkie wymagane pola",
MsgBoxStyle.Critical, "Formularz niekompletny")
Exit Sub
Else
'**************************************************************
'Zaczynamy proces ładowania danych do bazy
Try
SQL_connectionstring.Open()
Catch ex As Exception
MsgBox("Problem z połączeniem z bazą danych")
Exit Sub
End Try
'****************************************************************
'Sprawdzam czy przypadkiem w bazie nie istnieje już ten sam numer
pesel
Dim Czy_Istnieje_Pesel As DataSet
57
Dim SQL_Command1 As New SqlCommand("exec dbo.Spr_Pesel @Pesel='"
& txt_pesel.Text & "'", SQL_connectionstring)
Czy_Istnieje_Pesel = SQL_Command1.ExecuteScalar
MsgBox("Wprowadzony numer pesel istnieje w naszej bazie danych.
Czy dodać nowego opiekuna z tym samym numerem PESEL?",
MsgBoxStyle.OkCancel, "Czy chcesz dodać Klienta ?")
SQL_connectionstring.Close()
'Koniec sprawdzania
'***************************************************************
If MsgBoxResult.Ok = vbOK Then
SQL_connectionstring.Open()
Dim SQL_Command As New SqlCommand("exec dbo.Dodawanie_Opiekuna
@Imie='" & Trim(txt_imie.Text) & _
"', @Nazwisko='" & Trim(txt_nazwisko.Text) & _
"', @Plec='" & cmb_plec.Text & _
"', @Data_Urodzenia_Opiekuna='" & dtp_data_ur.Value & _
"', @Kod_pocztowy='" & txt_PNA.Text & _
"', @Wojewodztwo='" & cmb_wojewodztwo.Text & _
"', @Gmina='" & Trim(txt_gmina.Text) & _
"', @Miejscowosc='" & Trim(txt_miejscowosc.Text) & _
"', @Nazwa_Ulicy='" & Trim(txt_ulica.Text) & _
"', @NrMieszkania='" & Trim(txt_nrmieszkania.Text) & _
"', @NrDomu='" & Trim(txt_nrdomu.Text) & _
"', @Email='" & Trim(txt_email.Text) & _
"', @Telefon_Stac='" & Trim(txt_Tstac.Text) & _
58
"', @Telefon_Mob='" & txt_Tkom.Text & _
"', @SeriaiNrDowodu='" & Trim(txt_seriainrDO.Text) & _
"', @Pesel='" & txt_pesel.Text & _
"', @OrganWydajacy='" & cmb_organwyd.Text & _
"', @ZrodloPozyskaniaKlienta='" & cmb_ZrodInf.Text & _
"', @KodKampanii='" & Trim(txt_kodkampanii.Text) & _
"', @Uwagi='" & Trim(rtb_Uwagi.Text) & _
"', @Aktywny='Tak', @Sciezka_Zdjecia='" &
sciezka_zdjecie_opiekuna & _
"', @NazwaFirmy='" & Trim(frm_Info_Firma.txt_Nazwa_Firmy.Text) &
_
"', @Nip='" & frm_Info_Firma.txt_NIP.Text & _
"', @F_www='" & Trim(frm_Info_Firma.txt_F_www.Text) & _
"', @F_kodpocztowy='" & frm_Info_Firma.txt_F_PNA.Text & _
"', @F_woj='" & frm_Info_Firma.cmb_F_wojewodztwo.Text & _
"', @F_Gmina='" & Trim(frm_Info_Firma.txt_F_gmina.Text) & _
"', @F_Miejscowosc='" &
Trim(frm_Info_Firma.txt_F_miejscowosc.Text) & _
"', @F_ulica='" & Trim(frm_Info_Firma.txt_F_ulica.Text) & _
"', @F_NrDomu='" & Trim(frm_Info_Firma.txt_F_nrdomu.Text) & _
"', @F_NrLokalu='" & Trim(frm_Info_Firma.txt_F_nrmieszkania.Text)
& _
"', @F_Wlasciciel='" & Trim(frm_Info_Firma.txt_Wlasciciel.Text) &
_
"', @F_Prezes='" & Trim(frm_Info_Firma.txt_Prezes.Text) & _
59
"', @F_dzialalnoscfirmy='" &
Trim(frm_Info_Firma.txt_Dzialalnosc_Firmy.Text) & _
"', @F_branza='" & Trim(frm_Info_Firma.cmb_F_branza.Text) & _
"', @GG='" & Trim(txt_GG.Text) & _
"', @Skype='" & Trim(txt_skype.Text) & "'", SQL_connectionstring)
SQL_Command.ExecuteNonQuery()
MsgBox("Opiekuna Dodano do Bazy Danych")
SQL_connectionstring.Close()
SQL_connectionstring = Nothing
End If
End If
'Opiekuna dodano, połączenie z bazą zamknięte i wyczyszczone
'************************************************************
Me.Close()
End Sub
Private Sub Button1_Click(sender As System.Object, e As
System.EventArgs) Handles Button1.Click
frm_Info_Firma.Show()
End Sub
Public Sub Pb_zdjecie_Klienta_Click(sender As System.Object, e As
System.EventArgs) Handles Pb_zdjecie_Klienta.Click
Dim nazwazdjecia As String
'****************************************************************
'Wywołanie okna dialogowego do wskazania pliku
60
Ofd_Zdjecie_Opiekuna.Title = "Proszę wskazać zdjęcie w formacie
jpg"
Ofd_Zdjecie_Opiekuna.FileName = "Proszę wskazać zdjęcie w
formacie jpg"
If Ofd_Zdjecie_Opiekuna.ShowDialog =
Windows.Forms.DialogResult.Cancel Then
Exit Sub
Else
nazwazdjecia = Dir(Ofd_Zdjecie_Opiekuna.FileName)
' próba zapisania przekopiowania zdjęcia ze ścieżki wskazanej
przez użytkownika do folderu programowego \zdjecia_opiekunów
Try
FileCopy(Ofd_Zdjecie_Opiekuna.FileName, CurDir() &
"\Zdjecia_Opiekunow\" & nazwazdjecia)
Catch ex As Exception
MkDir(CurDir() & "\Zdjecia_Opiekunow\") ' jeżeli pierwszy raz
dodajemy zdjecie trzeba utworzyć folder w zdjecia opiekunow w
lokalizacji progamu
End Try
FileCopy(Ofd_Zdjecie_Opiekuna.FileName, CurDir() &
"\Zdjecia_Opiekunow\" & nazwazdjecia) ' przenosimy zdjecie do
lokalizacji programu
'przypisanie do picture boxa wskazanego przez użytkownika zdjęcia
w formacie jpg
Pb_zdjecie_Klienta.ImageLocation = CurDir() &
"\Zdjecia_Opiekunow\" & nazwazdjecia
61
sciezka_zdjecie_opiekuna = Pb_zdjecie_Klienta.ImageLocation ' do
zmennej przekazujemy ścieżkę z lokalizacji naszego programu
End If
End Sub
Private Sub Button2_Click(sender As System.Object, e As
System.EventArgs) Handles Button2.Click
frm_Ekran_Gl.Show()
Me.Close()
End Sub
Private Sub btn_anuluj_Click(sender As System.Object, e As
System.EventArgs)
frm_Ekran_Gl.Show()
Me.Close()
End Sub
End Class
62
Download