Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005

Podobne dokumenty
Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005

Leszek Stasiak Zastosowanie technologii LINQ w

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Przewodnik Szybki start

5.4. Tworzymy formularze

Dostęp do baz danych w ASP.NET.

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Informatyka II. Laboratorium Aplikacja okienkowa

5.3. Tabele. Tworzenie tabeli. Tworzenie tabeli z widoku projektu. Rozdział III Tworzenie i modyfikacja tabel

Wykład III. dr Artur Bartoszewski Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

5.5. Wybieranie informacji z bazy

Kostki OLAP i język MDX

BAZY DANYCH Panel sterujący

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

Praca z bazą danych. Rysunek 1. Projekt tabeli UZYTKOWNIK bazy KURSY

Wykład 12. Programowanie serwera MS SQL 2005 w C#

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

z użyciem kontrolek ASP.NET

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Ustalanie dostępu do plików - Windows XP Home/Professional

akademia androida Składowanie danych część VI

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Metodyka programowania. Edytor tekstu. Specyfikacja

Bazy danych Ćwiczenie 1 Instrukcja strona 1 Wersja ogólna

Zadanie 1. Tworzenie nowej "strony sieci WEB". Będziemy korzystad ze stron w technologii ASP.NET.

Korespondencja seryjna

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

ACCESS ćwiczenia (zestaw 1)

Autor: Joanna Karwowska

5. Bazy danych Base Okno bazy danych

Wypożyczalnia by CTI. Instrukcja

Podstawy technologii WWW

Archiwum DG 2016 PL-SOFT

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

INSTRUKCJA UŻYTKOWNIKA Podpis cyfrowy ISO 9001:2008 Dokument: Wydanie: Podpis cyfrowy. Spis treści... 1

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Ćwiczenie 4 Aktualizacja tabel. 1. Skopiuj aplikację przygotowaną na poprzednich zajęciach w katalogu SKOKI1 do nowego katalogu SKOKI2.

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

WinSkład / WinUcz 15.00

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE. Scenariusz lekcji. 2.1 Wiadomości: 2.2 Umiejętności: Scenariusz lekcji

MS Excell 2007 Kurs podstawowy Filtrowanie raportu tabeli przestawnej

(aktualizacja 30 kwietnia 2018)

Podstawy Pentaho Data Integration

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Wykład II. dr Artur Bartoszewski Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Należy uruchomid program: Start-Wszystkie programy- Microsoft Office- Microsoft Office Access 2007

W dowolnej przeglądarce internetowej należy wpisać poniższy adres:

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

Bydgoskie Centrum Archiwizacji Cyfrowej sp. z o.o.

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Przygotowanie formularza do wypożyczenia filmu:

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

Uruchamianie bazy PostgreSQL

Programowanie platform mobilnych PocketPC

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

Wykład 12. ADO.NET model bezpołączeniowy

Instrukcja obsługi programu Do-Exp

Wprowadzenie do Doctrine ORM

Instrukcja zmiany stawki VAT oraz innych informacji dodatkowych dotyczących kartoteki asortymentowej oraz cenników w systemie MAAT

Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM

Rozmiar pola (długość danych)

Zaawansowane aplikacje WWW - laboratorium

Elektroniczna Książka Pocztowa z Obiegiem Dokumentów by CTI Instrukcja

Import danych z plików CSV

Oracle PL/SQL. Paweł Rajba.

Instrukcja Użytkownika Baza Członków PZW Formularz wprowadzania danych oraz informacja o płatnościach

Ćwiczenie 8. Kontrolki serwerowe

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Paweł Cieśla. Dokumentacja projektu

Polecenie 3.1: Uruchom SQL Server Management Studio, zaloguj się do serwera.

Edytor materiału nauczania

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

Wykład 5: PHP: praca z bazą danych MySQL

Obsługa pakietu biurowego OFFICE

VBA praca z makrami w Excelu

Spis treści. 1: Wyszukiwanie elementu : Do linii modelu : Powiel arkusze : Długość kabla : Rozmieszczenie widoków...

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

1. Przekopiuj na dysk F bazę M5BIB.mdb z dysku wskazanego przez prowadzącego 2. Otwórz bazę (F:\M5BIB.mdb)

Klasy i obiekty cz II

Instrukcja obsługi systemu e-faktury.no

Programowanie MorphX Ax

Problemy techniczne SQL Server

System imed24 Instrukcja Moduł Analizy i raporty

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

STWORZENIE MOBILNEJ APLIKACJI,

UMOWY INSTRUKCJA STANOWISKOWA

Szpieg 2.0 Instrukcja użytkownika

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

Instrukcja instalacji i obsługi programu Szpieg 3

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

KASK by CTI. Instrukcja

PROTEKTOR Instrukcja Obsługi

Transkrypt:

Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005 Lekcja 4 Multizaznaczanie programowe Używanie filtrów (ukrywanie kolumn i wierszy) Zapisywanie danych z DataSet do pliku *.XML Tworzenie widoku master-detail Wymagania: Wymagania z poprzednich lekcji Projekt z lekcji 3 15 minut wolnego czasu UWAGA Wszystkie poniższe przykłady są robione na tabeli Pracownik, częśd z tych przykładów może nie działad na innych tabelach, trzeba będzie wtedy dokonad modyfikacji, które zostawiam czytelnikowi jako proste dwiczenie. 1. Multizaznaczanie programowe: Czasami, gdy nasza bazy jest strasznie duża wyszukiwanie w niej określonej wartości trwa wieki. Postaramy się teraz napisad coś co ułatwi nam tą czynnośd. Zacznijmy od dodania do naszej formy pola tekstowego, które posłuży nam jako mała wyszukiwarka! Dodajmy też przycisk filtr będzie on potrzebny w przyszłości. W ustawieniach naszego pola tekstowego kliknijmy na żółty piorun i odnajdźmy tam event TextChanged i go utwórzmy, a do jego środka wpiszmy:

try // odznaczamy bierzący wiersz jezeli jest zaznaczony if (!(datagridview1.currentrow ==null)) datagridview1.rows[datagridview1.currentrow.index].selected = false; // ustawiamy opcje by nasz DataGrid mógł zaznaczyć wiele wierszy datagridview1.multiselect = true; // zaczynamy przeszukiwać for (int i = 0; i!= datagridview1.rows.count; i++) // jeśli zaznaczony to odznacz --> zapobiega probie ponownego zaznaczenia wiersza datagridview1.rows[i].selected = false; for (int j = 0; j!= datagridview1.columncount; j++) // sprawdzamy czy aktualny wiersz posiada szukana wartosc // zmniejszamy obydwa stringi gdyz duże i małe litery są rozróżnialne if(datagridview1.rows[i].cells[j].value.tostring().tolower().contains(toolstriptextbox1.text.tolower())) // jeśli posiada to "zapalamy" wiersz datagridview1.rows[i].selected = true; catch (Exception z) // łapiemy bład MessageBox.Show( z.message, "\nblad"); Teraz uruchommy nasz program i zobaczmy, jakie są efekty. Jeśli wszystko poszło dobrze okno powinno teraz tak wyglądad:

2. Używanie filtrów (ukrywanie kolumn i wierszy): I. Większośd baz danych posiada kolumny z prywatnymi informacjami, takie kolumny można ukryd, by dane w nich zawarte nie wpadły w niepowołane ręce lub by pozbyd się nadmiarowych informacji, które są nie potrzebne koocowemu użytkownikowi. W naszej bazie taką kolumną może byd id pracowników. Pierwsze, co należy zrobid to dodad zmienną globalną: private BindingSource bindingsource1 = new BindingSource(); Następnie starą metodę DataGridFill() należy zmienid na:

private void DataGridFill() /// sciezka do naszej bazy string path = openfiledialog1.filename.tostring(); /// polecenie polaczenia jakie wyslemy do Serwera string connectionstring = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + path + ";Integrated Security=True;User Instance=True"; /// komenda select ktora wykona baza string commandstring = textbox1.text; /// nazwa tabeli ktora wyswietlimy try SqlConnection connection = new SqlConnection(connectionString); /// SqlDataAdapter wyciaga z bazy na ktora "wskazuje" polaczenie //rekordy ktore zwraca sa wynikiem commandstring DataAdapter = new SqlDataAdapter(commandString, connection); /// Dodajemy do DataSet.Tables tabele o nazwie tablename DataAdapter.Fill(dataSet1,"show"); /// zamykamy polaczeniem z baza connection.close(); /// jako zrodlo danych (DataSource) naszego BindingSource-a podajemy //tabele z wypelnionego przed chwila dataseta bindingsource1.datasource = dataset1.tables[0]; //i dopiero teraz dajemy naszemu datagridoview zrodlo danych jako nasz BindingSource datagridview1.datasource = bindingsource1; //ustawiamy niewidoczną kolumne datagridview1.columns["id"].visible = false; catch (Exception ex) /// Jesli cos pojdzie nie tak np. zla nazwa tabeli, zla sciezka do bazy /// wyswitli nam sie MessageBox z bledem MessageBox.Show("Wyjatek : " + ex.message, "BŁAD"); Po włączeniu i wczytaniu bazy powinniśmy posiadad tak wyglądający formularz:

II. Jeśli nasza baza posiada ponad tysiąc wierszy - to metoda z multizaznaczaniem staje się całkowicie nieprzydatna, w takich przypadkach dużo lepszym rozwiązaniem byłoby ukrycie wierszy, które dla nas są nieistotne. Z pomocą przyjdzie nam narzędzie BindingSource a konkretniej jego opcja filtrowania! Utwórzmy teraz akcję dla kliknięcia na przycisk filtr:

private void filt_click(object sender, EventArgs e) try // zmienna potrzebna do zapoczątkowania stringa filtru bool raz = false; // jesli wczesniej był jakiś filtr to go sciągamy bindingsource1.removefilter(); // string w którym bedzie kąmęda filtru string filtr = ""; // analogicznie do metody mulizaznaczenia if (!(datagridview1.currentrow == null)) datagridview1.rows[datagridview1.currentrow.index].selected = false; datagridview1.multiselect = true; for (int i = 0; i!= datagridview1.rows.count-1; i++) datagridview1.rows[i].selected = false; for (int j = 0; j!= datagridview1.columncount; j++) if (datagridview1.rows[i].cells[j].value.tostring().tolower().c ontains(toolstriptextbox1.text.tolower())) datagridview1.rows[i].selected = true; if (raz == false) // zaczynamy wpisywac ID pracowników którzy pasują do naszego filtra filtr += "ID='" +datagridview1.rows[i].cells ["ID"].Value.ToString() + "'"; raz = true; else // dopisujemy kolejnego pracownika filtr += "OR ID='" + datagridview1.rows[i]. Cells["ID"].Value.ToString()+ "'"; // nakładamy filtr na tabele bindingsource1.filter = filtr; toolstriptextbox1.text = ""; catch (Exception z) // łapiemy bład MessageBox.Show(z.Message, "\nblad"); W ten oto prosty sposób używa się filtrowania tabeli! 3. Zapisywanie zawartości DataSet do pliku *.xml Jeśli chcemy opublikowad nasze dane na np. stronie internetowej lub posłużyd się nimi w jakimś innym programie, który nie będzie mógł odczytywad danych z bazy, bardzo przydatną opcją jest zapisanie takich danych do jednego z najbardziej uniwersalnych rodzajów plików jakim jest *.xml. W bardzo prosty sposób dane z pliku *.xml można przenosid, edytowad lub wykorzystywad w innych programach (zachęcam do zapoznania się bliżej z tym formatem). Teraz pokażemy jak w prosty i szybki sposób zapisad dane przez nas wyświetlone, właśnie do pliku *.xml.

Dodajmy nowy przycisk na naszą formę i dajmy mu nazwę Zapisz do XML oraz z menu Toolbox dodajmy SaveFileDialog. Zróbmy tak by przycisk wykonywała taki kod: private void ZapiszDoXML_Click(object sender, EventArgs e) try //uruchamiamy dialog zapisu savefiledialog1.showdialog(); foreach (DataTable dt in dataset1.tables) foreach (DataColumn dc in dt.columns) // zmieniamy mapowanie - ta opcja jest przykładowa bez tego // zapisanie też zadziała, ale moim zdaniem bedzie troche // mniej czytelne dc.columnmapping = MappingType.Attribute; // zapisujemy dataset1.writexml(savefiledialog1.filename+ ".xml", XmlWriteMode.WriteSchema); catch (Exception z) // łapiemy bład MessageBox.Show(z.Message, "\nblad"); Gotowe! Teraz nie grozi nam już mozolne włączanie i wyłączanie programu, gdy popełnimy błąd 4. Tworzenie widoku Master-Detail Na koniec dzisiejszej lekcji chciałbym nauczyd Ciebie jeszcze jednej bardzo przydatnej rzeczy tworzenia widoku Master-Detail. Co to jest ten widok? Już spieszę z odpowiedzią- mianowicie jest to wyświetlanie tak danych, że jeśli po jednej stronie widad spis nadrzędnych elementów, a po drugiej są szczegółowe informacje odnoszące się do jednego z tych elementów. Gdy zmieniamy zaznaczenie w spisie elementów nadrzędnych automatycznie zmieniają nam się dane na odpowiednie w widoku szczegółowym. Postarajmy się teraz stworzyd w naszym programie taki widok. Jako elementy nadrzędne weźmiemy spis pracowników, podrzędnymi natomiast będą zadania należące do poszczególnych osób z naszej bazy. Na początku dodajmy nowy DataGridView na naszą formatkę. Dodajmy nową zmienną globalną private BindingSource bindingsource2 = new BindingSource(), a do ciała naszej metody DataGridFill wpiszmy ten kod:

/// sciezka do naszej bazy string path = openfiledialog1.filename.tostring(); /// polecenie polaczenia jakie wyslemy do Serwera string connectionstring = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + path + ";Integrated Security=True;User Instance=True"; /// komenda select ktora wykona baza string commandstring = textbox1.text; string commanddetail = "Select Opis_Zadania as 'Opis zadania',id_pracownika as 'ID' from Zadanie"; /// nazwa tabeli ktora wyswietlimy try SqlConnection connection = new SqlConnection(connectionString); /// Nowy adapter potrzebny do wypelnienia drugiego /// datagrida SqlDataAdapter DataAdapterDetail = new SqlDataAdapter(commandDetail, connection); /// SqlDataAdapter wyciaga z bazy na ktora "wskazuje" polaczenie //rekordy ktore zwraca sa wynikiem commandstring DataAdapter = new SqlDataAdapter(commandString, connection); /// Dodajemy do DataSet.Tables tabele o nazwie tablename DataAdapter.Fill(dataSet1,"show"); // wpisanie drugiej tabeli do dataseta DataAdapterDetail.Fill(dataSet1, "detail"); // tworzymy realcje która zrobi za nas cała robote i bedzie zmieniać // dane w datagridview2 DataRelation Relation = new DataRelation("FK_Zadanie_Pracownik", dataset1.tables["show"].columns["id"], dataset1.tables["detail"].columns["id"]); // dodajemy relacje dataset1.relations.add(relation); /// zamykamy polaczeniem z baza connection.close(); /// jako zrodlo danych (DataSource) naszego DataGridView podajemy // całego dataseta bindingsource1.datasource = dataset1; // i nazwa tabeli by nasz DGV wiedzial z ktorej tabeli ma // czerpac dane bindingsource1.datamember = "show"; // drugi bindingsource ma zródło jako pierwszy bindingsource bindingsource2.datasource = bindingsource1; //ale odwołuje się do stworzonej przez nas realacji, a nie do tabeli bindingsource2.datamember = "FK_Zadanie_Pracownik"; // podczempiamy odpowiednio zródła do DGV i ukrywamy kolumny datagridview1.datasource = bindingsource1; datagridview1.columns["id"].visible = false; datagridview2.datasource = bindingsource2; datagridview2.columns["id"].visible = false; catch (Exception ex) /// Jesli cos pojdzie nie tak np. zla nazwa tabeli, zla sciezka do bazy /// wyswitli nam sie MessageBox z bledem MessageBox.Show("Wyjatek : " + ex.message, "BŁAD"); Gotowe! Teraz nie grozi nam już mozolne włączanie i wyłączanie programu, gdy popełnimy błąd

Po skompilowaniu i uruchomieniu koocowy efekt powinien byd podobny do następującego: