Ocena użytkowników: / 0
SłabyŚwietny 

PROGRAM CRM_zlecenia

Zlecenia od klientów

W tym rozdziale postanowiłem się zastanowić jak i wykonać następną część naszego programu a mianowicie część odpowiedzialną za zapisywanie danych związanych z kontaktami z klientami, np. ich zgłoszenia. Proponuję takie zgłoszenie podzielić na kilka kategorii np. zarejestrowane, podjęte, oczekujące (np. na dodatkowe towary lub informacje) oraz rozwiązane. Po przejściu do zgłoszeń powinniśmy widzieć wszystkie nierozwiązane zgłoszenia. Mam jeszcze pomysł odnośnie jakiegoś menu, bo przydałoby się nam takie.
Dobrym rozwiązaniem byłoby utworzyć jedną formę, która będzie nadrzędną i wszystkie dodatkowe formy będą się w niej otwierały. W tym celu otworzyłem kod naszej głównej formy klikając na nią prawym klawiszem myszy w Solution Explorer następnie wybrałem View Code. Zmieniłem namespace z CRM na CRM_klienci

 

Pomoc techniczna

 

 

 

Pojawia się wtedy taki czerwony prostokącik pod nową nazwą, po rozwinięciu którego program proponuje zamianę nazwy, wybrałem więc Rename. W Solution Explorer zmieniłem również nazwę z Form1.cs na CRM_klienci.cs. Tutaj zmian dokonuje się tak jak w systemie Windows. Po zmianie nazwy utworzyłem nową formatkę.





Serwis

Dodajemy nową formę, nadajemy jej nazwę CRM oraz text CRM. Dodajemy kontrolkę MenuStrip, która domyślnie umieszczona zostanie na górze formatki, następnie dodajemy jeszcze jedną kontrolkę MenuStrip klikamy w prawym górnym rogu tej kontrolki na strzałkę, powinno nam się rozwinąć takie menu

Dock

 

 

 

Rozwijamy opcję Dock: i wybieramy Left, oraz GripStyle wybieramy na Viswible, następnie wpisujemy pozycje do drugiego naszego menu.

Naprawa

 

 

 

Z prawej strony wklejamy panel i ustawiamy jego właściwość Dock: na Fill oraz Back Color na Button Shadow. Powinno to wyglądać tak.

Panel programu

 

 

 

Klikamy teraz dwukrotnie na napis Klienci w naszym menu i wpisujemy na górze
using CRM_klienci;
a w metodzie wygenerowanej przez program

kod programu

 

 

 

W drugiej linijce kodu podaliśmy że obecna forma będzie rodzicem dla formy Klienci. Pozostaje jeszcze zmienić właściwości formy CRM aby mogła być rodzicem, odpowiada za to właściwość IsMdiContainer, należy ustawić jej wartość na true. Wszystko teraz jest ok, tylko program uruchamia się jak poprzednio od formatki z klientami a nie od formatki CRM, aby to zmienić musimy odnaleźć metodę Main w naszym programie, ponieważ od niej rozpoczyna się wykonywanie programu. Metoda ta znajduje się w klasie Program.cs

program

 

 

 

Po podwójnym kliknięciu zobaczymy kod w którym wywoływana jest formatka KLIENCI co zmienimy na CRM.CRM

Programowanie

 

 

 

Tak powinien wyglądać nasz kod. Po uruchomieniu program otworzy formatkę CRM. A po kliknięciu na menu Klienci pojawić się powinien taki widok

usługi informatyczne

 

 

 

Na górne menu przenosi nam się menu z poszczególnych wewnętrznych formatek a boczne menu posłuży nam do nawigacji po programie. Przy tworzeniu programu nie powinno być takiej sytuacji, że zmieniamy kolejność uruchamianych formatek, nazwy itp. Wszystko powinno być sumiennie zaplanowane od początku, pokazałem tutaj jednak jak można wyjść z niemiłej sytuacji jeżeli zmieni nam się pomysł, ale to się może skończyć wieloma błędami, szczególnie jak program jest już dość bardzo rozbudowany.
Dodajemy teraz do naszego projektu następną formatkę, nazywamy Zlecenia, dodajemy kontrolkę MenuStrip > Insert Standard Items, następnie ToolStrip, poniżej SplitContainer w polu Panel2 umieszczamy kontrolkę ListView i we właściwościach tej kontrolki zmieniamy Dock: Fill View:Details GridLines:True dodajemy kolumny

klasa

 

 

 

Nasza formatka powinna wyglądać mniej więcej tak.

obiekt

 

 

 

 

Teraz dodamy do naszej bazy jeszcze 2 tabele. Pierwsza będzie przechowywała nagłówki zleceń a druga będzie przechowywała ich pozycje. Do każdego założonego zlecenia powinniśmy mieć możliwość dopisywania kolejnych pozycji, ponieważ nie każdą sprawę da się rozwiązać w jednym kroku, czasami może być potrzebne podjęcie np. 10 kroków. Przechodzimy zatem do Microsoft SQL SERVER i logujemy się do Management Studio. Po zalogowaniu i rozwinięciu gałęzi z naszą bazą klikając prawym przyciskiem myszy na Tables dodajemy tabelę nagZgloszen.


SQL

 

 

 

Klikamy na kolumnie id i ustawiamy ją jako klucz główny tabeli.

klucz główny

 

 

 

 

Po zapisaniu tworzymy jeszcze jedną tabelę tym razem pozZgloszen

Program

 

 

 

id ustawiamy jako klucz główny, przypominam o nadawaniu kolumnom id właściwości autonumeracji co ustalamy w Identity Specyfikation u dołu strony. Następnie utworzymy relację między tabelami, klikamy na idNaglowka prawym klawiszem i wybieramy Relationships i rozwijamy listę aby wyglądała tak


Obsługa techniczna

 

 

 

klikamy na przycisk z kropkami widoczny na screenie i wybieramy kolejno

Relacje

strona www

 

 

 

Klikamy OK. Pozostała nam jeszcze relacja z tabelą klientów, w której nie mamy jeszcze żadnego klucza głównego. Aby móc stworzyć relację powinniśmy przejść do tabeli klienci i utworzyć w niej klucz główny. Klikamy na Close aby zamkąć okno z relacjami, zapisujemy tabelę pod nazwą pozZgloszen, zostaniemy poinformowani że są zapisywane 2 tabele. Odnajdujemy w naszej bazie tabelę z klientami, klikamy prawym przyciskiem myszy i wybieramy Modyfy, następnie jako klucz główny ustawiamy kolumnę id. Zapisujemy i zamykamy tabelę. Następnie klikamy na kolumnie idklienta w tabeli pozZgłoszeń prawym klawiszem myszy i wybieramy Relationships, klikamy na add, klikamy na Tables and Columns Specyfication, następnie na kropeczki w przycisku i definiujemy relację

grafika

 

 

 

Klikamy OK. i Close. Tak utworzone tabele powinny zaspokoić nasze potrzeby.

Przechodzimy teraz do naszego programu i dodajemy przycisk na ToolStrip1 poprzez rozwinięcie listy i wybranie Button. Przycisk ten będzie służył nam do tworzenia nowego zlecenia a obrazek na nim można zmienić we właściwościach. Abyśmy mogli tworzyć nowe zlecenie potrzebna nam będzie do tego celu formatka, nazwiemy ją Zlecenie. Dodajemy więc formatkę do naszego projektu. Teraz przechodzimy na formatkę Zlecenie klikamy dwukrotnie na nowo utworzony przycisk i dodajemy wywołanie nowej formatki Zlecenie

pomoc techniczna

 

 

 

 

W pierwszej linii tworzymy nowy obiekt typu Zlecenie, w drugiej przypisujemy jako rodzica nowoutworzonemu obiektowi �� rodzica formatki z której został utworzony w tym wypadku rodzica Zlecenia. Ojej czarna magia mi wychodzi :- ( , w trzeciej robimy to samo z ikoną programu w czwartej ustalamy , że formatka ma się uruchomić w trybie zmaksymalizowanym, w piątej przypiszemy właściwości Instance obiekt z którego została wywołana formatka Zlecenie a w szóstej wyświetlamy formatkę.
Przechodzimy teraz do kodu naszej najnowszej formatki Zlecenie, potrzebujemy dodać do niej właściwość Instance



Serwis komputerowy

 

 

 

Kod może wyglądać właśnie tak

 

=naprawa komputerów

 

 

 

 

Jest to kod właściwości Instance, zauważ że Instance pisane dużą literą to właściwość a małą to zmienna, dodatkowo zmienna ma dodany modyfikator dostępu private co odpowiada za to że jest ukryta i z zewnątrz utworzonego obiektu nie ma do niej dostępu, jedynie przez właściwość Instance. We właściwości tej są 2 linie kodu, pierwsza odpowiada za przypisanie zmiennej instancje wartości a druga za odczytanie tej wartości ze zmiennej.

Przechodzimy teraz do naszej głównej formatki CRM i klikamy dwukrotnie na meny Zlecenia a w kodzie wpisujemy tak



usługi informatyczne

 

 

 

 

Wciskamy klawisz F5 i sprawdzamy czy nasz program działa. Jeżeli działa powinniśmy się teraz zająć dodaniem kontrolek do formatki Zlecenie. Może to wyglądać mniej więcej tak



serwis komputerowy

 

 

 

 

Ze względu na dość dużą ilość kontrolek w celu uniknięcia błędów należy zmienić im nazwy, i tak w grupie klient nazwy to nazwa, tnrKlienta, tulica, ttel, w grupie Priorytet tpriorytet, tstatus, w grupie Notatki przycisk to bnowy a listBox to lnotatki, w grupie Tresc ttemat i ttresc przy czym dla dużego textBoxa należy ustawić właściwość MulitiLine na True, w grupie Załączniki lzalaczniki, przyciski u dołu to bzapisz, banuluj, bplus, bminus. Należy ustalić dodatkowo właściwości Anchor dla kontrolek aby po zwiększeniu formy nieuległy nieprawidłowemu przemieszczeniu. Dla priorytet ustawiamy we właściwościach items listę możliwych wartości wpisując po jednej w linijce: Wysoki, Normalny, Niski we właściwości Text wpisujemy Normalny, dla kontrolki status odpowiednio items: Zarejestrowane, Podjęte, Oczekuję, Rozwiązane a text na Podjęte. Dodajemy zdarzenie dla przycisku bszukaj z grupy klienci podwójnie na niego klikając. Do wyszukiwania klientów użyjemy już istniejącej formy CRM_klienci. Przechodzimy do kodu formy CRM_klienci. Utworzymy zmienną globalną public Zlecenie zlecenie; Do formatki KLIENCI dodamy przycisk w prawym górnym rogu: text Użyj name tuzyj, a w kodzie pod linijką InitializeComponent(); umieszczamy tuzyj.Hide(); jest to druga możliwość umieszczania poleceń, które mają się wykonać bezpośrednio po załadowaniu danej formy, przypominam że pierwsza to jest zdarzenie Page_Load. (już o tym było :- )). Po załadowaniu formy zostanie ukryty przycisk co będzie odpowiadało za normalne wykorzystanie tej formy, jeżeli będziemy jej używali jako wyszukiwarki klientów dla zleceń przycisk będziemy pokazywali. Zapisujemy nową metodę w kodzie formatki KLIENCI

komputery

 

 

 

 

Następnie klikamy dwa razy na przycisk bszukaj na formie Zlecenie i wpisujemy



Programowanie

 

 

 

 

W tej chwili po uruchomieniu programu możemy przejść do Klientów poprzez Zlecenia i będzie widoczny przycisk Użyj za pomocą którego będziemy przypisywać do zlecenia dane klienta. Należy teraz dodać do naszego programu metodę, która będzie wczytywała dane klienta do odpowiednich kontrolek w Zleceniu. Przypomnę że potrzebujemy nazwę klienta, nr klienta, ulicę i telefon. Tak naprawdę to metoda ta powinna nam zwrócić wartość która będzie jednoznacznie identyfikowała naszego klienta a taką wartością jest id to nasz identyfikator. Dodajemy jeszcze tylko w nagłówku

tworzenie stron WWW

 

 

 

 

a w kodzie metodę

umowa serwisowa

 

 

 

 

Pozostało nam jeszcze zaprogramować działanie przycisku użyj na formatce z klientami oraz zmiana właściwości kontrolki listView1 FullRowSelect na true. Po podwójnym kliknięciu na przycisk użyj przejdziemy do kodu i wpiszemy tak.

najniższe ceny

 

 

 

Mamy już rozwiązaną sprawę wyszukiwania klienta ale jeszcze pozostaje nam nowy klient, użyjemy do tego celu formy nowy klient, którą już mam utworzoną. Po podwójnym kliknięciu na przycisk BnowyKlient wpisujemy

krótkie terminy

 

 

 

 

Następnie do kodu Nowy_klient dopisujemy



Programujemy pomoc

 

 

 

Do pola nazwa klienta zostało użyte pole typu comboBox ponieważ w zamyśle było użycie tego pola jako listy z klientami do wyboru. Żeby jednak tak się stało należy tą listę wypełnić danymi z bazy. Pozostawię tą sprawę jednak do zrobienia we własnym zakresie. Podpowiem tylko że w pętli można dodać wszystkie nazwy klientów z bazy do kontrolki a polecenie SQL powinno wyglądać tak SELECT nazwa FROM klienci. Teraz zajmiemy się zaprogramowaniem zdarzenia związanego z kliknięciem na przycisk bzapisz formatki Zlecenie. Klikamy podwójnie i wpisujemy kod.

sieci

 

 

 

W poleceniu użyłem zmiennej użytkownik, którą wcześniej globalnie zadeklarowałem. Miało to na celu ewentualną możliwość dodania do programu możliwości logowania użytkowników.
Teraz na formatce Zlecenia klikamy dwukrotnie i wpisujemy tak

LAN

 

 

 

 

W poleceniu SQL które zostało tu użyte zostały połączone 2 tabele nagZlecenia i klienci. W naszym programie powinny się już zapisywać nowe i wczytywać zlecenia, ważne jeszcze jest to abyśmy mogli odczytywać szczegóły takich zleceń jak i dodawać nowe notatki. Do kontrolki listView1 na formatce Zlecenia dodajemy zdarzenie MouseDoubleClick i wpisujemy w nie tak

programach

 

 

 

 

Jeżeli nie skorzystaliśmy z opcji automatycznego wygenerowania metody w kodzie formatki Zlecenie to dodajemy taką metodę

Strona WWW

 

 

 

 

Zmieniamy teraz właściwość kontrolki notatki na formnie Zlecenie i ustawiamy FullRowSelect na True. Dodajemy jeszcze zdarzenie odpowiadające za kliknięcie podwójne myszą MouseDoubleClick i wpisujemy w metodę

 

Flash

 

 

W zasadzie w większości moje założenia zostały spełnione, możemy dodawać zlecenia, odczytywać z podziałem na notatki, pozostały jeszcze załączniki, które będą zapisywane na dysku lokalnego komputera a ścieżki do nich w bazie w postaci XML-a jak i drobne poprawki, tak aby nie można było edytować poprzednich wpisów, aby można było podglądać dokładne dane klienta, do którego zostało przypisane zgłoszenie, zmiana kolorów tekstu w Zleceniach w zależności od tego jaki ma priorytet jak i to żebyśmy domyślnie widzieli tylko nierozwiązane zgłoszenia a nie wszystkie. Oczywiście wszystkie te czynności możesz zrobić we własnym zakresie, nawet bardzo do tego zachęcam, ja jednak postaram się omówić je w następnej lekcji. Powodzenia.