Databázová aplikace. Správa databáze nabídek, zakázek a objednávek. SQL server.

Podobné dokumenty
MS SQL Server 2008 Management Studio Tutoriál

Instalace SQL 2008 R2 na Windows 7 (64bit)

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

EMBARCADERO DATASNAP. OBSAH Úvod... 2 DataSnap a DBExpress... 2 Serverová část... 2 VCL Klient... 6 Nasazení... 7

Průvodce aplikací FS Karta

Instalace Microsoft SQL serveru 2012 Express

APS Control Panel. Ovládací panel systému APS mini Plus pro SW balík APS Administrator. Uživatelská příručka

8.2 Používání a tvorba databází

Reliance 3 design OBSAH

Databázové systémy Cvičení 5.2

Instalace MS SQL Server Express a MS SQL Server Management Express

Školení obsluhy PC stručný manuál obsluhy pro používání PC

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Excel a externí data KAPITOLA 2

Instalace a první spuštění Programu Job Abacus Pro

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Postupy práce se šablonami IS MPP

Obslužný software. PAP ISO 9001

Kontingenční tabulky v MS Excel 2010

Statistica Enterprise

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

ZSF web a intranet manuál

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

BALISTICKÝ MĚŘICÍ SYSTÉM

František Hudek. červen ročník

Nastavení programu pro práci v síti

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Kontakty 08/ Obsah

Manuál k produktu. fajny shop. FajnyWEB.cz 2008 ( )

II. Elektronická pošta

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš tomas.d@centrum.cz

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Databázové a informační systémy Informační systém prodejny nábytku. Jakub Kamrla, KAM087

Možnosti využití Windows Server 2003

Úvod do databázových systémů

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

17. července :51 z moravec@yahoo.com

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Možnosti tisku v MarushkaDesignu

DUM 12 téma: Příkazy pro tvorbu databáze

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

1 Příručka používání Google Apps

TACHOTel manuál 2015 AURIS CZ

Pravidla a plánování

FFUK Uživatelský manuál pro administraci webu Obsah

Instalace programu ProGEO

APS Administrator.GS

My si nyní takovou sestavu vytvoříme na příkladu jednoduché kanceláře. Začneme vytvořením takové kanceláře.

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Plugin TIS pro SketchUp. Návod k použití

Excel Asistent Magazín PREMIUM 03/2005

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Vytvoření uživatelské šablony

1 Uživatelská dokumentace

2.1. Stáhneme si do počítače instalační soubor InstalImesVodne.exe zde

Nápověda k aplikaci EA Script Engine

Příprava projektů v programu Databox CONTACT Professional 5

Administrace služby - GTS Network Storage

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Omezení funkcionalit v softwaru STATISTICA

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Úvod do databázových systémů

FIREBIRD relační databázový systém. Tomáš Svoboda

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

Průvodce aplikací GTS Webový portál pro správce

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

Práce s programem MPVaK

Redakční systém Joomla. Prokop Zelený

Univerzální rezervační systém. Uživatelská příručka

Manuál QPos Pokladna V1.18.1

PREMIER E Agent. Jak to funguje?

BRICSCAD V15. Licencování

Svolávací systém Uživatelský manuál

KRONOS GUARD NET Obslužný software pro obchůzkový systém v reálném čase Active Guard. Instalace na pobočky

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

1 Tabulky Příklad 7 Access 2010

Manuál QPOS Pokladna V 2.0

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Databázové systémy. Cvičení 6: SQL

Řazení tabulky, dotazu nebo formuláře

CMS. Centrální monitorovací systém. Manuál

Databáze II. 1. přednáška. Helena Palovská

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Fides Software Storage Administrator

STATISTICA Téma 1. Práce s datovým souborem

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Návod pro použití Plug-in SMS Operátor

Práce se styly 1. Styl

SLEDOVÁNÍ VÝKONŮ. Uživatelská dokumentace. Verze: 1.0 Datum: Listopad 2011

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

Transkript:

Bankovní institut vysoká škola Praha Katedra informačních technologií a elektronického obchodování Databázová aplikace. Správa databáze nabídek, zakázek a objednávek. SQL server. Bakalářská práce Autor: Jaroslav Houzim, DiS. Informační technologie, manažer projektu Vedoucí práce: RNDr. Miroslav Procházka Praha červenec 2009

Prohlášení: Prohlašuji, že jsem bakalářskou práci zpracoval samostatně a s použitím uvedené literatury. Ve Volyni dne 14. července 2009 Jaroslav Houzim

Poděkování: Rád bych zde poděkoval všem, kteří mi pomohli při tvorbě této práce za jejich pochopení a ochotu. Děkuji panu RNDr. Miroslavu Procházkovi za vedení práce a konzultace a vyučujícím na BIVŠ za poskytnutí jejich rad, postřehů a zkušeností.

Anotace práce: Cílem práce je vytvořit databázi pro správu nabídek, zakázek a objednávek. Práce bude obsahovat popis instalace MySQL Serveru pro potřeby testování aplikace a popis postupu při tvorbě databáze pomocí jazyka SQL. Také bychom se měli krátce seznámit s jazykem SQL a jeho výhodami. Dále pak bude vytvořen základní software pro práci s databází, budou zde popsány jeho funkce a přiblížen způsob jeho tvorby pomocí objektově orientovaného vývojového prostředí Delphi7. Vyvinutý software má sloužit k demonstraci toho, jak se dá vytvořit relativně rychle jednoduchá aplikace pomocí dnešních vizuálních a objektově orientovaných vývojových nástrojů. V závěru bude pojednáno o možnostech vylepšení a rozšíření celého navrženého systému.

Obsah 1 Úvod... 7 1.1 Cíl práce... 7 2 Jazyk SQL... 8 2.1 Základní popis SQL... 8 2.2 Historie SQL... 8 2.3 Proč používáme SQL... 9 2.4 MySQL... 10 3 Rozvaha funkčnosti aplikace... 12 3.1 Základní potřeby... 12 3.2 Data ukládaná v databázi... 12 3.3 Filtrování a řazení záznamů... 13 4 Návrh databáze... 14 4.1 Výběr databáze... 14 4.2 Vlastnosti MySQL... 14 4.3 Instalace MySQL Serveru... 15 4.4 Návrh tabulek databáze... 19 4.4.1 Nultá normální forma... 20 4.4.2 První normální forma... 21 4.4.3 Druhá normální forma... 22 4.4.4 Třetí normální forma... 24 4.4.5 Finální podoba naší databáze... 24 4.4.6 E-R Diagram... 25 4.4.7 Datové typy... 25 4.5 Vytvoření databáze a jejích tabulek... 27 5 Tvorba aplikace... 30 5.1 Výběr vývojového prostředí... 30 5.2 Popis vývoje aplikace... 30 5.3 Instalace ODBC driveru... 31 5.4 Popis prostředí Delphi7... 34 5.4.1 První formulář hlavní okno aplikace... 35

5.4.2 Vývoj aplikace okno pro zákazníky... 37 5.4.3 Vývoj aplikace okna pro zaměstnance a investory... 40 5.4.4 Vývoj aplikace funkčnost hlavního okna... 41 5.4.5 Vývoj aplikace okno pro vkládání záznamů... 45 5.4.6 Vývoj aplikace okno pro prohlížení a editaci záznamu... 49 5.4.7 Návrh aplikace třídění a filtrování záznamů... 51 6 Závěr... 53 6.1 Zhodnocení aplikace... 53 6.2 Možnosti vylepšení... 53 7 Seznam použité literatury... 55 7.1 Klasické zdroje... 55 7.2 Elektronické zdroje... 55 7.3 Citované elektronické zdroje... 55 8 Seznam použitých obrázků, příloh a SW... 56 8.1 Obrázky v textu... 56 8.2 Seznam příloh... 57 8.3 SW vybavení... 57 9 Přílohy... 58 9.1 Příloha 1... 58 9.2 Příloha 2... 59 9.3 Příloha 3... 61

1 Úvod 1.1 Cíl práce Cílem této bakalářské práce je vytvořit systém pro sledování a uchovávání nabídek, zakázek a objednávek, který bude umožňovat základní třídící a filtrační funkce. Celý databázový systém bude postaven na jazyce SQL a vlastní data budou uchovávána v databázi MySQL. Dalším cílem je popsat tvorbu databáze a jejích tabulek v závislosti na funkčních potřebách celé aplikace s ohledem na normální formy databáze. Aplikace, která bude vytvořena ve vývojovém prostředí Delphi7, bude sloužit jako nástroj pro přístup k datům uloženým v databázi. Tento nástroj by měl zvládat základní filtrovací a třídící funkce s ohledem na zadání funkčních požadavků. Na závěr budou popsány možnosti jeho rozšiřování a zdokonalování. 7

2 Jazyk SQL 2.1 Základní popis SQL SQL je zkratka z anglických slov Structured Query Language (strukturovaný dotazovací jazyk). Jazyk SQL byl vyvinut pro práci s databázemi a funguje, jak napovídá i jeho název, na principu dotazů. Pomocí tohoto jazyka tedy můžeme přistupovat k datům uloženým v tabulkách databází pomocí jednoduchých příkazů (dotazů). SQL ale neslouží pouze pro přístup k datům, ale také k tvorbě databází, vkládání a upravování dat. Jde tedy o velice propracovaný a komplexní nástroj pro práci s databázemi. Příkazy, které SQL využívá, se dělí do pěti základních skupin. Toto dělení je podle způsobu použití jednotlivých příkazů a to takto: - Příkazy pro práci s daty (SELECT, INSERT, UPDATE, DELETE, ) - Příkazy pro definování dat (ALTER, DROP, CREATE ) - Příkazy pro přístupová práva (REVOKE, GRANT, ) - Příkazy pro transakce (ROLLBACK, COMMIT, ) - Speciální příkazy ostatní SQL podléhá určitým standardům, které se mohou lišit v závislosti na použitém databázovém stroji. Lze tedy říci, že přenositelnost SQL příkazů je omezená a může se stát, že pokud budeme chtít stejný SQL příkaz použít pro různé databáze, nebude to fungovat. Není v silách této práce popsat zde všechny příkazy a funkce, kterými jazyk SQL disponuje. Různé odlišnosti jednotlivých databázových strojů jsou popsány v jejich dokumentaci. 2.2 Historie SQL Historie SQL sahá až do roku 1974. Tehdy se ještě jmenoval SEQUEL. Tato zkratka vznikla z anglických slov Structured English Query Language. Vyvíjela jej tehdy firma IBM a cílem jejího vývoje bylo vytvořit jazyk, který by byl syntakticky co nejblíže přirozenému jazyku (Angličtině). K vývoji jazyka SQL se přidaly také jiné společnosti. Například společnost Relation Software, Inc. (dnes Oracle Corporation) uvedla v roce 1979 svou platformu 8

Oracle Database. IBM v roce 1981 vydala nový systém SQL/DS a pokračovala v roce 1983 vydáním systému DB2. Dále se objevovali nové a nové systémy jako Progres, SyBase, Informix, atd. Ve všech těchto systémech se nějakým způsobem pracovalo s různými mutacemi jazyka SEQUEL. Tento jazyk byl později přejmenován na SQL. Význam databází velice rychle stoupal, a pro to, se americký institut ANSI rozhodl vydat zcela nový standard jazyk RDL. Jelikož se jazyk SQL prosadil jako de facto standard, tak ANSI založilo nový standard na tomto jazyku nazývaný SQL-86, podle roku jeho přijetí. Postupem času se ukázala řada nedostatků tohoto standardu, které se týkaly hlavně nedostatečné podpory integrity databází. Tyto nedostatky byly postupně odstraňovány a v roce 1992 byl přijat nový standard SQL-92 (někdy jen SQL2). V současné době se nejvíce využívá SQL3 (SQL-99), který se snaží držet krok s novějšími databázemi a potřebami jejich dnešních uživatelů. 2.3 Proč používáme SQL Komunikační linky internetu jsou z hlediska propustnosti velice slabé, a proto se zde jazyk SQL výborně uplatní. Jeho výhoda spočívá v tom, že je koncipován množinově a jeho základní myšlenkou je, že nám pošle pouze ta data, která jsme si opravdu vyžádali a můžeme je využít. Vše bude nejlépe zřejmé z příkladu: Představte si, že potřebujeme informace například o určitém typu vozidla. V normálních databázových systémech by to fungovalo asi takto: V příslušné knihovně bychom si nechali poslat všechny knihy z celé knihovny. To znamená, že někdo musí udělat kopie všech knih, aby zůstaly k dispozici i ostatním. Po té vám je pošle, zřejmě několika vozy (v závislosti na velikosti knihovny). Až vám budou knihy doručeny, vy vyhledáte příslušnou knihu a v ní příslušnou kapitolu. Tato kapitola bude zřejmě jen několik listů a zbytek, to znamená veliká kopice knih, Vám bude na nic a zahodíte je. Pokud ale použijete jazyk SQL, bude průběh celé akce zcela jiný. Nejprve knihovně musíte sdělit, co vlastně hledáte. Někdo, nebo něco nalezne v knihovně příslušnou informaci (kapitolu v knize) udělá kopii pouze těch stran obsahující vámi požadované informace a pošle vám je. Na první pohled je jasné, že doprava několika stránek je jistě o hodně jednodušší než převážení celé knihovny. Nyní se může zdát, že vše je takřka dokonalé, ale i toto má svá úskalí. Knihovna totiž musí disponovat velice silným vyhledávacím systémem, neboť musí uspokojit požadavky několika svých klientů ve 9

velice malém časovém intervalu, skoro by se dalo říci současně. Při dnešních výkonově silných databázových strojů a serverů to ale není až takový problém. Postupu, který jsme si uvedli, na příkladu se říká klient/server zkráceně C/S. Technická knihovna zde představuje server, kde se nacházejí veškerá data a také vyhledávací systém. Čtenář, nebo čtenáři zde představují jednotlivé klienty, kteří posílají jednotlivé žádosti (dotazy) v podobě dohodnutých pravidel jazyka SQL. Platí zde pravidlo, že čím lépe je zformulována žádost, tím přesnější informace a také rychleji se nám vrátí. Také je třeba si uvědomit, že uživatelé (klienti) nepracují na serveru ale na svých počítačích, které jsou k serveru připojeny prostřednictvím nějaké sítě zpravidla pomocí podnikové sítě, nebo internetu. Jistě si kladete otázku a co když nechceme, aby naše data mohl číst nebo měnit někdo nepovolaný. I na toto jsou dnešní databázové systémy připraveny. Používají se zde totiž uživatelská práva. Tyto práva si můžeme představit jako členskou kartičku v již zmiňované knihovně. Stejně jako v knihovně existují rozdíly v tom co který člen knihovny (klient) si může půjčit, i zde je veliká řada úkonů, které může a nesmí klient provádět. Při pokusu připojit se do databáze je požadováno uživatelské jméno a heslo. Na straně serveru (databázového systému) bývá nadefinována řada uživatelů, z nichž každý má své jméno a pro ochranu své heslo, které zná pouze on. Každý uživatel má od administrátora, což je správce databáze, předem dovolené či zakázané operace s daty databáze, stejně tak jako vstup do určitých částí databáze. To si můžeme představit tak, že v knihovně například někdo má zaplaceno jen půjčování časopisů, jiný zase pouze půjčování knih z určité části knihovny. Asi by také nebylo moc dobré, kdyby někdo vytrhával listy z knih, nebo dokonce knihy ničil celé, což v databázi znamená mazání některých dat. K tomuto účelu tedy slouží uživatelská práva. Jak jazyk SQL, tak i databázové systémy mají nepřeberné množství funkcí a je mimo naše možnosti zde vysvětlovat větší podrobnosti. Toto je pouze nástin práce těchto systémů a malá část funkcí. Databáze jsou velice rozsáhlé téma a dala by se o nich napsat celá řada knih. 2.4 MySQL MySQL není, jak by se mohlo z názvu zdát, verze jazyka SQL, ale jedná se přímo o databázový systém. Je vyvíjen švédskou firmou MySQL AB. Za hlavní autory jsou považování Michael Widenius a David Axmark. Velice výraznou výhodou oproti většině 10

konkurentů má v tom, že je licencováno tzv. dvojím licencováním, což znamená, že je šířeno jak pod licencí GPL (bezplatná licence), tak jako komerční. Tento systém licencování MySQL zajistil, že dnes na trhu zaujímá velice vysoký podíl. Tento systém má ještě další nesporné výhody. Je multiplatformní, což znamená, že lze nainstalovat a provozovat jak na MS Windows, tak na Linuxu, ale i na většině ostatních operačních systémů. Velice často se můžeme setkat s APACHE, PHP a MySQL jako základní software některých webových serverů. Je to díky již zmiňované ceně a nezávislosti na platformě, což z této kombinace činí ideální řešení levných webů. 11

3 Rozvaha funkčnosti aplikace 3.1 Základní potřeby Vstupem toho co se od celého systému očekává je dialog se zadavatelem (popř. uživatelem) naší databáze. Požadavkem bylo, aby celá databáze uměla shromažďovat data o zaměstnancích, investorech, zákaznících a hlavně zakázkách. Dále bylo požadováno třídění dle určitých kritérií, hlavně časových. Aplikace by měla být přehledná a použitelná v prostředí MS Windows XP. Detailnější požadavky jsou uvedeny v následující kapitole. 3.2 Data ukládaná v databázi Zadavatel určil, že v databázi by se měla shromažďovat data zaměstnanců, investorů a zákazníků. U zaměstnanců se jedná především o adresy a telefonní čísla. U investorů se jedná o kontaktní informace a u zákazníků taktéž. Zadavatel si přál u svých zaměstnanců postihnout: - Jméno - Adresu - Telefonní číslo U zákazníků a investorů: - Název - Adresu - Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Pro nabídky, objednávky a zakázky: - Popis - Pro jakého zákazníka - Kdo je investor 12

- Jaký zaměstnanec tuto věc vyřizuje - Datum vytvoření - Datum vyhodnocení - Datum podání nabídky - Datum 1. jednání - Datum 2. jednání - Datum 3. jednání - Poznámku - Možnost odkazu na soubor na HDD PC zaměstnance 3.3 Filtrování a řazení záznamů Stejně jako u uchovávaných dat, tyto vlastnosti systému určuje zadavatel. Rozdíl mezi filtrováním a řazením záznamů je zřejmý. Filtrování znamená, že jsou vybrány (zobrazeny) pouze záznamy vyhovující zadané podmínce, kdežto řazení záznamů udává, v jakém pořadí budou zobrazeny. Pořadí se určuje pomocí sloupce, podle kterého chceme data seřadit a také jakým stylem (vzestupně, sestupně). Pokud sloupec obsahuje číselné hodnoty, bude řazení probíhat podle hodnot čísel. Pokud vybraný sloupec obsahuje text, bude řazení probíhat podle abecedy. Pokud nenastavíme řazení, budou data setříděna implicitně dle primárního klíče tabulky. Požadavky na náš systém, co se týká filtrování, jsou následující: Data musí být možno filtrovat podle dat jednání, data vytvoření, data vyhodnocení a data podání nabídky v intervalech dnes, 7 dní dopředu a 30 dní dopředu. To znamená, že filtr (SQL dotaz) musí být sestaven tak, aby vybral pouze záznamy, kde jeden z datumů je dnes, nebo v rozsahu dnes až dnes + 7 dní, nebo dnes až dnes + 30 dní. Možnosti filtrování záznamů jsou omezeny návrhem databázových polí. Aby bylo možné v databázi co nejpřesněji vyhledávat a třídit data, je nutné správně navrhnout databázovou strukturu. Vše ostatní za nás zajistí správně sestavený SQL dotaz. Jinými slovy, pokud bude uveden požadavek, že chceme třídit třeba zákazníky dle města, kde sídlí, tak nám nestačí pro adresu zákazníka zavést pouze jedno pole, ale bude nutné zde mít zvlášť pole pro město, ulici, číslo popisné, atd. Tento jev eliminujeme, pokud se budeme držet pravidel pro návrh databáze (normální formy). Z toho plyne, že navržená databáze musí být alespoň v tzv. 2. normální formě. 13

4 Návrh databáze 4.1 Výběr databáze Při výběru databáze musíme vycházet z toho, jak bude používána. Databází může být třeba jen textový soubor, excelovský sešit nebo jiná forma dat. V dnešní době jsou k dispozici profesionální databázové systémy, které se pro tyto účely hodí daleko více, než pouhý textový dokument. Tyto systémy se za nás starají o to, aby data v tabulkách byla konzistentní, aby se k nim nemohla dostat nepovolaná osoba, která by je zničila, nebo zneužila. Databáze může být přístupná pouze z jednoho počítače, na jehož disku je uložena, nebo pro omezenou skupinu počítačů, nebo může být přístupná z celého světa pomocí internetu. Pro naše potřeby by bylo vhodné, aby byla databáze přístupná i z internetu, protože obchodník, který ji bude využívat, často cestuje a potřebuje sdílet data s vedením firmy a ostatními obchodníky ve firmě. Pro náš systém byl vybrán databázový systém MySQL, který umožňuje přístup z internetu. Dalším důvodem byla dostupnost tohoto systému. MySQL je dostupný ve verzích, které jsou za určitých podmínek zdarma. Pokud by někdo chtěl využívat placenou verzi, je její cena v porovnání s produkty od Microsoftu nesrovnatelně nižší. 4.2 Vlastnosti MySQL MySQL je od počátku optimalizováno spíše pro rychlost i na úkor některých ostatních vlastností. Jedním z těch markantních nedostatků jsou pouze omezené možnosti zálohování. Některé předchozí verze nepodporovaly pohledy, triggery a uložené procedury. MySQL se stále vyvíjí a zdokonaluje a ty nejzávažnější nedostatky, které uživatelům MySQL chyběly, jsou stále doplňovány a během posledních let, se systém velice zdokonalil. - Verze 3.23 přidány cizí klíče a transakce - Verze 4.1 přidána podpora různých znakových sad a časových pásem - Verze 4.1 přidány poddotazy - Verze 5.0 přidány uložené procedury - Verze 5.0 přidány triggery 14

- Verze 5.0 přidány pohledy - Verze 5.0 přidány metadata 4.3 Instalace MySQL Serveru Pro instalaci MySQL na testovacím PC byla použita verze 5.0 pro Windows. Tuto verzi lze stáhnout z internetu např. z http://dev.mysql.com/downloads/. Instalace je velice jednoduchá a měl by ji zvládnout každý uživatel Windows. MySQL bylo instalováno na notebook HP Compaq nx8220 s procesorem Intel Pentium 2GHz a pamětí 1GB RAM. Obrázek 1: Okno instalace MySQL Serveru dotaz konfigurace Během instalace ve Windows Vás bude provázet instalátor. Jak jsem již řekl, instalaci svede téměř každý uživatel, ale některá nastavení by bylo dobré si zde uvést. Především je vhodné nastavení provést bezprostředně po instalaci. K tomu nám slouží zatrhávací políčko Configure MySQL Server now jak je vidět na obrázku 1. V dalším kroku by se již měla objevovat okna pro nastavení MySQL Serveru. Některá můžeme přeskočit. Zastavíme se u okna na výběr typu nastavení. Zde zadáme Detailed Configuration. Dalším důležitým oknem je výběr typu serveru na obrázku 2. Zde zatrhneme, že se bude jednat o instalaci pro vývoj aplikací. 15

Obrázek 2: Okno instalace MySQL Serveru typ serveru Server bude nakonfigurován tak, aby spotřebovával minimum systémových prostředků, především paměti. Ostatní volby jsou již pro plnohodnotné servery MySQL. To je ale pro naši potřebu nevhodné vzhledem k nárokům na hardware. V dalším okně na obrázku 3 je výběr užití databáze. My budeme používat multifunkční databázi. Obrázek 3: Okno instalace MySQL Serveru užití databáze 16

Dále je nutné nastavit přibližně počet uživatelů, kteří budou k databázi přistupovat. V našem případě toto číslo bude v řádu jednotek až desítek, což odpovídá první možnosti okna na obrázku 4. Obrázek 4: Okno instalace MySQL Serveru počet uživatelů Další důležité nastavení je na obrázku 5, kde se povoluje TCP/IP protokol, nastavuje se číslo portu pro přístup k databázi a firewall. Obrázek 5: Okno instalace MySQL Serveru možnosti sítě 17

V dalším okně je výběr kódování znakové sady, kde vybereme Standard Character Set. Následuje okno, kde se nastaví, aby bylo MySQL spuštěno jako služba Windows, její jméno (standardně MySQL) a dále je volba pro automatické spouštění po startu Windows. Toto automatické spouštění není nutné, protože ne vždy když PC spustíme, budeme MySQL využívat. Tuto službu můžeme spustit manuálně pomocí příkazového řádku Windows. Velice důležité nastavení je v dalším okně na obrázku 6. Obrázek 6: Okno instalace MySQL Serveru přístupové heslo V tomto kroku nastavujeme přístupové heslo správce databáze tzv. root. Zde zadané heslo si musíme zapamatovat, abychom byli schopni v budoucnosti s MySQL serverem pracovat. Také se zde povoluje vzdálený přístup z jiného počítače pomocí sítě. Pokud tuto volbu (Enable root Access from remote machines) nezaškrtneme, nebude se možné připojit jako správce serveru z jiného počítače v síti. Na závěr, v posledním okně, je ještě nutné vše potvrdit a vykonat. Pokud vše proběhlo bez chyb a správně, bude výsledek vypadat jako na obrázku 7. Od této chvíle je na počítači nainstalován a spuštěn MySQL server a můžeme na něm začít pracovat. 18

Obrázek 7: Okno instalace MySQL Serveru závěr 4.4 Návrh tabulek databáze Před tím, než začneme celou databázi vytvářet, musíme určit, jak bude vypadat. Budeme vycházet ze zadání a určíme, jaké tabulky budeme v databázi potřebovat. Samozřejmě by šlo zapisovat jednotlivé údaje do jediné tabulky, ale to by nebylo efektivní z hlediska velikosti dat ani z hlediska uživatelského komfortu. Z tohoto důvodu budeme data členit v databázi do tabulek. To je dobré k tomu, abychom minimalizovali opakování stejných záznamů v databázi, což by vedlo ke zbytečnému růstu dat a uživatel by musel vyplňovat několikrát stejné informace, v našem případě o zákaznících, zaměstnancích či investorech. I když v našem případě se jedná o relativně malou databázi, kde by tyto opakované záznamy technicky neznamenali větší problém, z uživatelského hlediska by to bylo velice nepříjemné a celá databáze by ztrácela smysl. Existují však databáze, kde by toto opakování vedlo k obrovským nárůstům dat a velice nákladným investicím do hardware systému. Za tímto účelem jsou stanoveny normální formy databázových tabulek, které vedou k optimalizaci celé databáze. Při návrhu bylo postupováno od nejnižší (nultá normální forma) až po nejvyšší požadovanou normální formu. 19

4.4.1 Nultá normální forma Tato forma je definována takto: tabulka v nulté normální formě obsahuje alespoň jeden sloupec (atribut), který může obsahovat více druhů hodnot. [1] Celá databáze bude obsahovat čtyři tabulky. Pokud vyjdeme ze zadání, tabulky v nulté formě budou vypadat následovně. Tabulka pro zakázky bude obsahovat tyto sloupce (údaje): - Popis textový řetězec, délka 100 znaků - Pro jakého zákazníka - Kdo je investor - Jaký zaměstnanec tuto věc vyřizuje - Datum vytvoření - Datum - Datum vyhodnocení - Datum - Datum podání nabídky - Datum - Datum 1. Jednání - Datum - Datum 2. Jednání - Datum - Datum 3. Jednání - Datum - Poznámku Textový řetězec, délka 255 znaků - Možnost odkazu na soubor na HDD PC zaměstnance Textový řetězec, délka 255 znaků Tabulka pro zaměstnance: - Jméno - Adresu - Telefonní číslo Tabulka pro zákazníky: - Název - Adresu - Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Tabulka pro investory: - Název - Adresu - Příjmení kontaktní osoby 20

- Telefonní číslo kontaktní osoby - E-mail Nyní máme základní tabulky. Stav tabulek v této normální formě je nežádoucí. Budeme se tedy snažit převést tabulky do první normální formy. 4.4.2 První normální forma Tato forma je definována takto: Tabulka je v první normální formě, pokud všechny sloupce (atributy) nelze dále dělit na části nesoucí nějakou informaci. Jeden sloupec neobsahuje složené hodnoty. [1] Po této úpravě budou tabulky vypadat následovně. Tabulka pro zaměstnance: - Jméno - Příjmení - Město - Ulice - Číslo popisné - Telefonní číslo Tabulka pro zákazníky: - Název - Město - Ulice - Číslo popisné - Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Tabulka pro investory: - Název - Město - Ulice - Číslo popisné 21

- Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Nyní jsou tabulky v první normální formě. To nám ale nestačí, protože nemáme definovaný žádný primární klíč. 4.4.3 Druhá normální forma Definice druhé normální formy zní takto: Tabulka je v druhé normální formě, pokud obsahuje pouze atributy (sloupce), které jsou závislé na celém klíči. [1] Do této doby by byl klíčem u tabulky nějaký ze sloupců, což není jednoznačné určení, protože třeba dva zaměstnanci se mohou jmenovat stejně, mít stejné bydliště atd. Proto si v každé tabulce definujeme tzv. primární klíč, který bude jednotlivým záznamům v tabulce přidělovat unikátní číslo, které se nebude již nikde v tomto sloupci opakovat. Tabulky tedy přetvoříme do podoby, která odpovídá druhé normální formě. Nyní budou tabulky vypadat asi takto pro tabulku zakázek: - ID zakázky - Popis - Pro jakého zákazníka - Kdo je investor - Jaký zaměstnanec tuto věc vyřizuje - Datum vytvoření - Datum vyhodnocení - Datum podání nabídky - Datum 1. Jednání - Datum 2. Jednání - Datum 3. Jednání - Poznámku - Možnost odkazu na soubor na HDD PC zaměstnance 22

Pro tabulku zaměstnanců: - ID zaměstnance - Jméno - Příjmení - Město - Ulice - Číslo popisné - Telefonní číslo Tabulka pro zákazníky: - ID zákazníka - Název - Město - Ulice - Číslo popisné - Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Tabulka pro investory: - ID Investora - Název - Město - Ulice - Číslo popisné - Příjmení kontaktní osoby - Telefonní číslo kontaktní osoby - E-mail Nyní tedy máme definovány tabulky v druhé normální formě. Můžeme tedy přikročit k finálnímu návrhu celé databáze. 23

4.4.4 Třetí normální forma Definice třetí normální formy: Tabulka je ve třetí normální formě, pokud neexistují žádné závislosti mezi neklíčovými atributy (sloupci). [1] Tato norma by se měla dodržet při návrzích složitých databází. Hovoříme tedy o obvyklém stupni normalizace. Nejvyšším stupněm normalizace je pátá normální forma. Vyšší stupně normalizace, než třetí, se používají pouze ve speciálních případech. 4.4.5 Finální podoba naší databáze Nyní nám nevyhovuje pouze tabulka zakázek. V té máme záznamy pro jakého zákazníka, jaký zaměstnanec a kdo je investor. Na jejich místo se musí přiřadit ID tabulek zákazníků, investorů a zaměstnanců. Tabulka pak bude vypadat takto: - ID zakázky - Popis - ID zákazníka - ID investora - ID zaměstnance - Datum vytvoření - Datum vyhodnocení - Datum podání nabídky - Datum 1. Jednání - Datum 2. Jednání - Datum 3. Jednání - Poznámku - Možnost odkazu na soubor na HDD PC zaměstnance Nyní již máme databázi ve tvaru, který nám bude umožňovat realizovat všechny požadované funkce v naší aplikaci. 24

4.4.6 E-R Diagram E-R diagramy byly zavedeny Petrem Chenem a to v roce 1976. Tyto diagramy se používají pro grafické znázornění struktury databáze, jejích vztahů a entit. Entity se v diagramech znázorňují jako obdélníky a vztahy jako kosočtverce. Entitám a vztahům přiřazujeme atributy (vlastnosti), které budeme označovat elipsou. Značky pro E-R diagramy ještě nejsou zcela ustálené a tak se můžeme setkat s různými druhy diagramů, které shodné věci popisují odlišně. Pro naši databázi je E-R diagram v příloze 1. 4.4.7 Datové typy Poslední věc co musíme udělat, než přistoupíme k fyzické tvorbě databáze, je definovat si datové typy jednotlivých sloupců tabulek. K tomu potřebujeme znát formáty (datové typy), které jsou podporovány MySQL. To se dozvíme v manuálu, který se nainstaluje s MySQL. Pro tabulku zakázek byly zvoleny následovně: - ID zakázky primární klíč, celé číslo, nenulové - Popis textový řetězec, délka 100 znaků - ID zákazníka celé číslo - ID investora celé číslo - ID zaměstnance celé číslo - Datum vytvoření datum - Datum vyhodnocení datum - Datum podání nabídky datum - Datum 1. Jednání datum - Datum 2. Jednání datum - Datum 3. Jednání datum - Poznámku textový řetězec, délka 255 znaků - Možnost odkazu na soubor na HDD PC zaměstnance textový řetězec, délka 255 znaků Pro tabulku zaměstnanců: - ID zaměstnance primární klíč, celé číslo, nenulové - Jméno textový řetězec, délka 20 znaků - Příjmení textový řetězec, délka 30 znaků 25

- Město textový řetězec, délka 40 znaků - Ulice textový řetězec, délka 40 znaků - Číslo popisné textový řetězec, délka 8 znaků - Telefonní číslo textový řetězec, délka 15 znaků Pro tabulku zákazníků: - ID zákazníka primární klíč, celé číslo, nenulové - Název textový řetězec, délka 50 znaků - Město textový řetězec, délka 40 znaků - Ulice textový řetězec, délka 40 znaků - Číslo popisné textový řetězec, délka 8 znaků - Příjmení kontaktní osoby textový řetězec, délka 100 znaků - Telefonní číslo kontaktní osoby celé číslo - E-mail textový řetězec, délka 100 znaků Pro tabulku investorů: - ID Investora primární klíč, celé číslo, nenulové - Název textový řetězec, délka 50 znaků - Město textový řetězec, délka 40 znaků - Ulice textový řetězec, délka 40 znaků - Číslo popisné textový řetězec, délka 8 znaků - Příjmení kontaktní osoby textový řetězec, délka 100 znaků - Telefonní číslo kontaktní osoby celé číslo - E-mail textový řetězec, délka 100 znaků Nyní tedy máme vše potřebné k tomu, abychom mohli vytvořit tabulky v databázi. 26

4.5 Vytvoření databáze a jejích tabulek Pokud máme MySQL nainstalováno dle kapitoly 4.3, měly bychom mít k dispozici klienta s příkazovým řádkem MySQL (MySQL Command Line Client). MySQL se totiž ovládá pomocí příkazového řádku a na nějaké pěkně vyhlížející GUI můžeme klidně zapomenout. Ten je dostupný v nabídce programů windows. Po otevření bude požadovat heslo uživatele root (administrátora MySQL), které jsme zadali během instalace. Po zadání správného hesla můžeme začít zadávat jednotlivé SQL příkazy. Obrázek 8: Okno příkazového řádku MySQL Jako první musíme vytvořit nějakou databázi. V systému MySQL může být databází více. Naše databáze se bude jmenovat IBOS podle názvu firmy která bude databázi provozovat a využívat. Novou databázi vytvoříme pomocí příkazu CREATE DATABASE název_databáze;. Všimněte si, že SQL příkaz je vždy ukončen středníkem. Pokud jej zapomeneme napsat, příkaz není kompletní a nebude proveden. Příkaz tedy bude vypadat následovně: CREATE DATABASE IBOS; Pokud vše proběhne správně, vypíše se hláška, která nás informuje o provedení příkazu a o čase jak dlouho celá operace trvala. V opačném případě se objeví hláška informující nás o chybě a o místě od kterého systém příkazu nerozuměl. Když máme vytvořenou databázi, můžeme začít s tvorbou tabulek. Nejprve musíme určit, s jakou databází budeme pracovat. To zajistíme příkazem: USE jméno_databáze; který otevře databázi, ve které budeme tabulky vytvářet. Napíšeme tedy příkaz USE IBOS;. Nyní máme aktivní databázi IBOS a budeme pokračovat tvorbou jednotlivých 27

tabulek. Příkaz pro vytvoření tabulky je CREATE TABLE jméno_tabulky(název sloupce datovy typ, ). Sloupců může tabulka obsahovat více a jsou odděleny čárkou. Pro vytvoření tabulky zakázek tedy použijeme následující SQL příkaz: CREATE TABLE Zakazky(Id_Zakazky INTEGER PRIMARY KEY Not NULL,Popis VARCHAR(100),Id_Zakaznika INTEGER,Id_Investora INTEGER,Id_vedouciho_zak INTEGER,Dat_vytvoreni DATE,Dat_vyhodnoceni DATE,Dat_Podani_nabidky DATE,1_jednani DATE,2_jednani DATE,3_jednani DATE,Prilozeny_soubor VARCHAR(255),Poznamka VARCHAR(255)); Opět by se měla objevit hláška, že vše proběhlo správně. Na vytvořenou tabulku se můžeme podívat příkazem DESCRIBE jmeno_tabulky, tedy DESCRIBE Zakazky;. Výstup můžeme vidět na obrázku 2, kde je výpis jednotlivých sloupců tabulky, jejich datové typy (Type), zda je to sloupec klíčem (Key), zda musí být záznam vyplněn (Null), Co se má vložit automaticky pokud nebude záznam vyplněn (Default) a ostatní vlastnosti (Extra). Obrázek 9: Okno příkazového řádku MySQL popis tabulky zakazky Stejně budeme postupovat i při vytváření ostatních tabulek v databázi. Pro tabulku zákazníků bude vypadat SQL příkaz takto: CREATE TABLE Zakaznici (Id_zakaznika INTEGER PRIMARY KEY NOT NULL,Nazev VARCHAR(50),Adr_Mesto Varchar(40),Adr_Ulice Varchar(40),Adr_CP Varchar(8), Kontaktni_osoba VARCHAR(100),Tel_kont_osoby INTEGER,Posta VARCHAR(100)); 28

SQL příkaz pro tabulku investorů je: CREATE TABLE Investori (Id_Investora INTEGER PRIMARY KEY NOT NULL,Nazev VARCHAR(50),Adr_Mesto VARCHAR(40), Adr_Ulice Varchar(40),Adr_CP Varchar(8), Kontaktni_osoba VARCHAR(100),Tel_kont_osoby INTEGER,Posta VARCHAR(100)); A obdobně pro tabulku zaměstnanců: CREATE TABLE Zamestnanci (Id_Zamestnance Integer PRIMARY KEY NOT NULL, Jmeno Varchar(20),Prijmeni Varchar(30), Adr_Mesto Varchar(40),Adr_Ulice Varchar(40),Adr_CP Varchar(8)), Tel_cislo Varchar(15)); Pokud vše proběhlo v pořádku, máme naši databázi hotovou. Nyní si pro kontrolu můžeme zobrazit tabulky, které databáze obsahuje. K tomu slouží příkaz SHOW TEBLES. Výsledek, po zadání tohoto příkazu, by měl vypadat jako na obrázku 10. Obrázek 10: Okno příkazového řádku MySQL výpis tabulek v databázi IBOS Tím jsme s tvorbou databáze hotovi a můžeme do ní začít vkládat data. K tomuto účelu již nebudeme využívat příkazový řádek MySQL, ale vytvoříme software pro manipulaci s databází pomocí vývojového prostředí Delphi7. 29

5 Tvorba aplikace 5.1 Výběr vývojového prostředí Na dnešním trhu existuje řada vývojových prostředí, které se liší jak cenou, tak účelem použití. Jsou k dispozici prostředí pro Linux, MacOS, Windows, atd. Dále se mohou dělit podle toho, zda podporují objektově orientovaný přístup, zda jsou grafické, atd. Pro tvorbu naší aplikace využijeme prostředí Delphi7 Enterprise od firmy Borland, které je grafické, objektově orientované a dají se v něm vyvíjet aplikace pro Windows. Delphi7 jak napovídá již název je 7. verzí v řadě. Dnes (rok 2009) je na trhu Delphi 2009, které již plně podporuje Windows Vista. Zde došlo v nedávné době ke změně, a to když Borland koupila společnost Embarcero technologies. Tato firma však přejala veškeré vývojové zázemí Borlandu a pokračuje ve vývoji těchto nástrojů. Nám bude ale verze 7 plně postačovat. V této verzi je podpora Windows XP a jeho grafického stylu a ve verzi enterprise jsou komponenty umožňující práci s databázemi. Nutno ještě říct, že Delphi je prostředí, které se vyvinulo z jazyka Pascal. Firma Borland, dnes již Embarcero technologies, produkuje také prostředí jazyka C, Basic a také Java. 5.2 Popis vývoje aplikace Celá aplikace, jak již bylo řečeno, bude tvořena v Delphi verze 7. K přístupu k databázi je použita technologie BDE (Borlad Database Engine). Tuto technologii již firma Borland dále nevyvíjí, ale stále je pro ni poskytována podpora pro nové databáze. K tomu, aby mohlo vše fungovat, je potřeba do systému počítače, na kterém bude aplikace provozována, doinstalovat ODBC driver. Tento driver zajistí spojeni se vzdálenou databází (serverem) a naše aplikace může k těmto datům přistupovat jako by byly uloženy na lokálním disku PC. Toto přináší řadu výhod, jako to, že nemusíme již v programu řešit přístup k databázi. Tuto práci za nás zajistí jednak komponenty Delphi a již zmiňovaný ODBC driver. 30

5.3 Instalace ODBC driveru Tento driver lze stáhnou opět z internetu z http://dev.mysql.com/downloads/ kde je k dispozici instalační soubor mysql-connector-odbc-5.1.5-win32.msi. Tento soubor je opět klasickým instalačním balíčkem Windows a provede nás celou instalací. Nám bude stačit nainstalovat typické součásti, tak jak je to vidět na obrázku 11. Obrázek 11: Okno instalace ODBC driveru typ instalace Nyní ještě musíme driver nakonfigurovat. To provedeme již ve Windows pomocí ovládacích panelů, kde otevřeme nástroje pro správu jak je vidět na obrázku 12. 31

Obrázek 12: Ovládací panely Windows XP Obrázek 13: Správce zdrojů dat ODBC před vložením MySQL ODBC driveru 32

V ovládacích panelech otevřeme datové zdroje (ODBC). Mělo by se objevit okno jako na obrázku 13. Zde pomocí tlačítka přidat vložíme MySQL ODBC 5.1 driver, který vybereme v roletovém menu zdrojů dat. Pokud toto máme, můžeme přistoupit ke konfiguraci ODBC driveru. Mělo by se nám nyní zobrazit okno z obrázku 14. Pokud ne, tak jej můžeme vyvolat kliknutím na příslušnou položku správce zdrojů dat na obrázku 13. V konfiguračním okně MySQL Connectoru (ODBC driveru) musíme vyplnit údaje nutné pro připojení k databázi. První je název zdroje dat (Data Source Name), kde zadáme IBOS. Druhá je popis zdroje dat (Description) a zde dáme Ibos databáze zakázek. Tato hodnota nám nebude nijak ovlivňovat funkci software, ale slouží pro lepší přehlednost. Další velice důležitou položkou je server. Do této kolonky vyplníme localhost, což znamená, že server běží na stejném počítači jako aplikace. Pokud bychom měli server na jiném počítači, museli bychom zde vyplnit IP adresu, nebo jméno serveru. Dále zde uvádíme uživatele, který bude k databázi přistupovat. V našem případě se budeme přihlašovat jako root (správce). Pokud bychom se chtěli přihlašovat pod jiným jménem, museli bychom si založit na serveru uživatele, přiřadit mu heslo, jméno a nastavit přístupová práva. To ale není náš případ. Dále zde musíme uvést heslo. Toto heslo je stejné, jaké jsme zadali při instalaci MySQL serveru v kapitole 4.3 Instalace MySQL serveru. Toto heslo je u našeho serveru pisekk. Obrázek 14: Okno nastavení ODBC driveru 33

Nyní již, v kolonce Database, vybereme jméno databáze, se kterou chceme pracovat. Pro nás to bude ibos. Nyní můžeme otestovat spojení s naší databází pomocí tlačítka Test. Pokud jsme vše vyplnili správně a MySQL server pracuje, měla by se objevit hláška, Connection successful, která nám oznámí, že spojení bylo úspěšně navázáno. Nyní tedy můžeme začít vytvářet naši aplikaci v prostředí Delphi. 5.4 Popis prostředí Delphi7 Delphi7 je vizuální objektově orientované prostředí. Po spuštění se nám objeví čtyři základní okna. Zcela nahoře je hlavní okno, pomocí něhož můžeme zakládat nové projekty, přidávat formuláře, nastavovat vzhled a vlastnosti Delphi. V neposlední řadě je zde paleta komponent, která nám poskytuje rychlý výběr komponent Delphi. Tyto komponenty se dělí do skupin, dle užití. První skupina se jmenuje Standrd, druhá Additional, třetí Win32, atd. Dalším oknem je ObjectTreeView, kde se nám budou zobrazovat proměnné, funkce, procedury a hlavně všechny objekty, které naše aplikace bude využívat. Jde o vizuální zobrazení hierarchie komponent našeho formuláře. Pro každý formulář se zobrazí vlastní treeview kde zcela nahoře je formulář. Tento formulář je hlavním prvkem a od něho se bude vše odvíjet. Třetím oknem, které po startu Delphi vidíme, je Object inspektor. Toto okno je velice důležité, protože pomocí něho můžeme ovládat vlastnosti jednotlivých komponent naší aplikace. Posledním je okno s nadpisem Form1. Toto okno představuje okno naší aplikace a na něj budeme přidávat jednotlivé komponenty, které budou nutné pro funkci aplikace. Dalším, neméně důležitým, je Editor kódu. Ten se zobrazí pomocí klávesy F12 a jde o okno, kam Delphi vkládá kód generovaný na základě použitých komponent. Uživatel Delphi (programátor) sem zapisuje vlastní části kódu pro obsluhu různých událostí, procedury, a mnoho dalšího. Je zde tedy zdrojový kód. Pokud přidáme do aplikace další formulář, vytvoří se nám v tomto okně nová záložka se jménem nového formuláře. Tímto způsobem se pak můžeme jednoduše přepínat mezi formuláři aplikace. 34

Obrázek 15: Prostředí Delphi po spuštění Toto je jen hrubý popis Delphi s ohledem na to, co budeme pro práci potřebovat. Delphi nabízí ještě o hodně více možností, ale tyto věci budou postupně demonstrovány během popisu vývoje aplikace v dalších kapitolách této práce. 5.4.1 První formulář hlavní okno aplikace Jak bylo již řečeno, naše aplikace se bude skládat z více oken. Prvním z nich bude hlavní okno, které se objeví hned po staru aplikace a bude zobrazovat záznamy z tabulky zakázky. K tomuto účelu je nutné na formulář vložit komponentu DBGrid ze skupiny Data Controls. Tuto komponentu umístíme na formulář a upravíme její velikost, tak jak to vidíme na obrázku 16. To se dá dělat buď graficky za použití myši, nebo pomocí Object Inspectoru vyplněním hodnot do položek Left, Top, Height a width, které určují velikost a polohu komponenty v okně aplikace. V Object inspektoru nastavíme ještě vlastnosti Anchors na atleft = true, attop = true, atright = true. To nám zajistí, že se komponenta DBGrid bude přizpůsobovat velikosti okna aplikace. Na formulář vložíme také komponentu mainmenu z palety standard. Do položky Items v object inspektoru vyplníme všechny položky, které chceme v menu mít. Přiřazení jednotlivých funkcí těmto položkám necháme na později. Dále je nutné na formulář přidat tlačítka pro vyvolání tabulek 35

zaměstnanců, zákazníků investorů. Komponentu tlačítka najdeme ve skupině Standard a jmenuje se Button. Další tlačítka budou sloužit pro filtrování zobrazovaných položek podle datumů. První tlačítko bude filtrovat záznamy, které obsahují datum dnešního dne. Druhé vyfiltruje datum mezi dnešním dnem a data sedm dní dopředu. Třetí tlačítko nám zobrazí záznamy na 30 dní dopředu. Poslední tlačítko zobrazí všechny záznamy v tabulce. Na spodní stranu formuláře umístíme další dvě tlačítka. První bude vyvolávat formulář pro přidání nového záznamu a druhé bude ukončovat aplikaci. Rozmístění jednotlivých komponent na ploše formuláře (okna) je na obrázku 16. Samozřejmě si můžeme vzhled aplikace libovolně upravovat podle svých představ. Tímto máme na formuláři tzv. vizuální komponenty. To znamená, že tyto komponenty budou ovlivňovat vzhled aplikace. Obrázek 16: Prostředí Delphi hlavní okno aplikace Dále je potřeba na formulář vložit ještě tzv. nevizuální komponenty. Tyto nejsou vidět za běhu aplikace, ale jsou velice důležité pro její funkci. Začneme komponentou Datasource ze záložky Data Access. Vložíme ji na libovolné místo na formuláři. Další bude Query ze záložky BDE. Tuto komponentu budeme potřebovat celkem čtyřikrát. Každá komponenta Query bude mít na starost jednu tabulku naší databáze. Tímto máme základní komponenty, 36

které budeme potřebovat pro vytvoření hlavního okna naší aplikace. Pro vylepšení vzhledu můžeme na formulář ještě přidat komponentu XPManifest ze záložky Win32. Tato komponenta nám zajistí vzhled aplikace Windows XP. Toto je zatím vše, co budeme potřebovat. Výsledek by měl vypadat podobně jako na obrázku 16. Nyní můžeme vytvořit ostatní okna aplikace. Můžeme se pokusit také aplikaci spustit pomocí klávesy F9. Vizuálně bude vše fungovat, ale zatím nebudeme mít k dispozici žádné funkce, ani neuvidíme žádná data v DBGridu z tabulek naší databáze. 5.4.2 Vývoj aplikace okno pro zákazníky Dalším oknem, které budeme v naší aplikaci potřebovat, bude okno pro prohlížení, vkládání a editaci záznamů o zákaznících. Nové okno v projektu (aplikaci) založíme pomocí horního panelu Delphi. Na záložce File v položce New vybereme možnost Form. Otvře se nám okno s novým formulářem. Pomocí Object inspektoru nastavíme vlastnost Name (jméno) na FrmZakaznici a vlastnost Caption na Zákazníci. Tím máme vytvořené a pojmenované nové okno naší aplikace. Nyní již budeme přidávat komponenty na formulář okna tím samým způsobem jako v případě hlavního okna naší aplikace. Začneme opět komponentou DBGrid, kterou umístíme tak, jak to vidíme na obrázku 17. Vlastnosti položky Anchors DBGridu v Object inspektoru nastavíme jako v případě prvního okna. Dále je nutné vložit komponentu DBNavigator ze záložky DataControls. Pomocí této komponenty můžeme jednoduše pracovat s naší databází. Další vizuální komponentou, kterou bude nutno na formulář vložit je tlačítko pro zavření okna. Rozmístění vizuálních komponent můžeme vidět na obrázku 17. S tím rozdílem, že v tabulce nebudou žádná data. Ty se nám objeví až ve chvíli, kdy spojíme všechny komponenty s naší databází a vložíme do ní první záznamy. 37

Obrázek 17: Prostředí Delphi okno zákazníků Pokračovat budeme nevizuálními komponentami. Těmi bude již používaný Datasource a dále Table, který najdeme opět v záložce BDE. Nyní tedy můžeme přistoupit ke zprovoznění funkcí tohoto okna. První co musíme udělat, je nastavit vlastnosti komponenty Table1 na formuláři Zákazníci. První vlastností, co musíme nastavit je vlastnost DatabaseName na IBOS. Tato volka je dostupná v roletovém menu této položky. Dále je nutné vyplnit do kolonky TableName jméno tabulky, kterou má komponenta Table obsluhovat. Nyní můžeme nastavit vlastnost Active na True. Tato volba aktivuje komponentu Table. Nastavení komponenty můžeme vidět na obrázku 18. Dále můžeme pokračovat v nastavení vlastností ostatních komponent. Nastavíme tedy komponentu DataSource1. V ní je nutné nastavit pouze vlastnost DataSet. Tato vlastnost musí být nastavena na Table1. Nastavení komponenty DBNavigator1 není též nijak složité. Mimo vlastností týkajících se umístění komponenty na formuláři, musíme nastavit vlastnost DataSource na DataSource1. Tím zajistíme, že bude možné pomocí této komponenty pracovat s databázovou tabulkou Zákazníci. Abychom mohli data také vidět a ovlivňovat, je nutné nastavit komponentu DBGrid1. Ta má též vlastnost DataSource a opět ji nastavíme na DatSource1. Pokud je vše v pořádku měla by se komponenta DBGrid1 daty z tabulky Zakaznici. Jelikož ale žádná data v tabulce nemáme vložena, bude tabulka 38

prázdná. Nyní ještě naprogramujeme funkčnost tlačítka pro zavření okna zákazníků. Budeme potřebovat nastavit nápis na tlačítku a také co se má stát po jeho stisku. Nápis na tlačítku změníme opět pomocí Object Inspectoru. Vlastnost Caption tohoto tlačítka udává nápis, který se bude v tlačítku objevovat. V našem případě tedy Zpět. Pokud se v Object Inspectoru přepneme na záložku Events tohoto tlačítka nalezneme zde položky, které představují jednotlivé události týkající se tohoto tlačítka. Nás zajímá událost onclick. Ta udává co se má stát (vykonat) při stisku tlačítka. Dvojklikem na tuto kolonku se nám otevře CodeEditor, kde musíme naprogramovat funkci tlačítka. Funkce pro obsluhu kliknutí na tlačítko bude vypadat takto: procedure TFrmZakaznici.Button1Click(Sender: TObject); begin Close(); end; To je tedy vše na tomto formuláři. Jediné, co nám nyní chybí k jeho používání je možnost jej vyvolat (zobrazit). To musíme udělat na hlavním formuláři v události onclick tlačítka, které bude tento formulář zobrazovat. Vše bude probíhat stejně jako u tlačítka pro jeho zavření pouze s tím rozdílem, že ve vlastnosti Caption bude vyplněno Zákazníci a také obslužná procedura této události bude vypadat jinak. Bude zde příkaz pro otevření nového okna: procedure TForm1.Button3Click(Sender: TObject); begin FrmZakaznici.show; end; Nyní můžeme spustit celý projekt a otestovat, zda se nám bude nové okno zobrazovat po stisku příslušného tlačítka. Budeme zde také moci naplnit tabulku zákazníků vlastními daty. To je zatím vše co naše aplikace umí. Co se týče tabulky zaměstnanců a investorů, bude postup podobný, pouze budeme vyplňovat jiná jména tabulek a formulářů. 39

Obrázek18: Delphi Object Inspector FrmZakaznici Table1 5.4.3 Vývoj aplikace okna pro zaměstnance a investory Tyto okna budou shodná s oknem pro zákazníky pouze s tím rozdílem, že nastavíme Name okna zaměstnanců na FrmZamestnanci a vlastnost Caption na Zaměstnanci. Další změnou bude vlastnost TableName komponenty Table1 na Zamestnanci. To je jméno tabulky v naší databázi. Stejným způsobem změníme položky v okně investorů na TableName na investori, Caption formuláře na Investoři a Name na FrmInvestori. Dále v hlavním okně aplikace doprogramujeme funkci tlačítek pro otevření okna investorů a zákazníků včetně jejich vlastností Caption. Tedy pro okno zaměstnanců bude událost onclick tlačítka vypadat takto: procedure TForm1.Button2Click(Sender: TObject); begin FrmZamestnanci.show; end; 40

Pro okno investorů: procedure TForm1.Button4Click(Sender: TObject); begin FrmInvestori.Show; end; 5.4.4 Vývoj aplikace funkčnost hlavního okna Hlavní okno aplikace je již o poznání složitější. Především budeme muset vyplňovat o mnoho více vlastností komponent a doprogramovávat funkce tlačítek a v neposlední řadě SQL příkazy pro práci s databází pro řazení a filtrování záznamů. První věcí, kterou uvedeme do funkčního stavu, bude DBGrid1, který má za úkol zobrazovat záznamy z tabulky zakazky naší databáze. K tomu budeme potřebovat nastavit vlastnosti Query1, Qury2, Query3, Query4 a také DataSource1. Začneme tedy s Query1. Vlastnost Name této komponenty nastavíme na QryZakazky. Tu samou položku změníme i v Query2 na QryZamestnanci a u Query3 na QryZalaznici a také u Query4 která se bude jmenovat QryInvestori. Jméno Datasource1 měnit nebudeme, protože je na formuláři pouze jeden a nepotřebujeme jej odlišovat. Dále musíme přiřadit SQL příkaz, do komponenty QryZakazky, kterým bude komponenta vyvolávat určitá data. V našem případě budeme chtít vidět všechna data, proto do vlastnosti SQL komponenty vložíme SLQ příkaz: Select * from zakazky; Ten nám říká: Vyber vše z tabulky zakazky. To samé provedeme i u ostatních komponent Query, pouze s rozdílnými názvy tabulek. Pro QryZamestnanci bude tedy příkaz znít následovně: Select * from zamestnanci; Obdobně vyplníme vlastnosti SQL i u ostatních dvou komponent Query. Nyní máme základní věci hotové, ale ještě nemáme spojené tabulky pomocí klíčů. To se dá udělat právě v komponentě QryZakazky. Dvojklikem vyvoláme okno Fields Editor, ve kterém lze definovat jednotlivé řádky tabulky, spojovat je s jinými tabulkami, atd. Pravím tlačítkem myši, vyvoláme menu, kde vybereme Add All Fields. Tím přidáme pouze záznamy z naší tabulky zakazky. Výsledek můžeme vidět na obrázku 19. 41

Obrázek 19: Delphi Fields Editor základní položky QryZakazky Nyní ale budeme potřebovat spojit některé záznamy z tabulky zakazky s tabulkou zaměstnanci, investori a zakaznici. To provedeme opět pomocí Fileds editoru, kde opět pomocí pravého tlačítka vyvoláme menu a v něm vybereme položku NewField. Objeví se nám okno, kde vyplníme položky podle obrázku 20. Tím se nám přidá další záznam. Obrázek 20: Delphi Fields Editor nový záznam QryZakazky Tento záznam se bude tedy jmenovat Zakaznik, jak je to vidět na obrázku 20 v poli Name. Bude to textový řetězec o délce 20 znaků. Lookup udává, že se jedná o položku, která se nachází v jiné tabulce. KeyFields je položka tabulky zakazky tzv. cizí klíč, dataset popisuje, že druhá tabulka bude přístupná pomocí QryZakaznici a cizí klíč je svázán 42

s klíčem Id_zakaznika druhé tabulky, což je primární klíč této tabulky. Výsledná hodnota bude položka Nazev z druhé tabulky. Tímto spojením zajistíme svázání záznamů z tabulky zakázek s tabulkou zákazníků. V tomto případě se jedná pouze o název zákazníka a pro ostatní položky jej budeme muset definovat znovu stejným stylem. Výsledný pohled na Fields Editor naplněný všemi položkami je na obrázku 21. Obrázek 21: Delphi Fields Editor všechny položky QryZakazky Nyní jen schází dostat výsledek do DBGridu. To tedy provedeme následovně. Vlastnost Datasource v Object Inspectoru komponenty DBGrid1 nastavíme na DataSource1. V komponentě DataSource1 nastavíme vlastnost DatSet na QryZakazky. Pokud nyní nastavíme vlastnost Active komponenty QryZakazky na True, začne DBGrid zobrazovat data. Naše databáze ale zatím data neobsahuje a tak bohužel neuvidíme žádné záznamy, pouze nadpisy jednotlivých datových sloupců, které by měli odpovídat položkám ve Fields Editoru naší komponenty QryZakazky. 43

Další věc, kterou uděláme, bude definice sloupců DBGridu. Nyní máme zobrazovány všechny sloupce v databázi resp. v Query1. To je ovšem zbytečné. Nám bude stačit zobrazovat ID zakázky, popis, název zákazníka, název investora, příjmení pracovníka a datumy. To, co se má zobrazovat za sloupce je definováno ve vlastnosti Columns komponenty DBGrid1. Když otevřeme tuto volbu, pomocí tří teček v pravém rohu, zobrazí se okno na obrázku 22. To bude ovšem zatím prázdné. Musíme do něho definovat nové sloupce, které budeme chtít zobrazit v DBGridu. Obrázek 22: Delphi DBGrid - editace sloupců Nové sloupce se definují pomocí tlačítka v levém horním rohu. Po jeho stisku se nám přidá nový sloupec a v Object Inspectoru se objeví jeho vlastnosti. Pro nás je důležité vyplnit vlastnost FieldName, kde vybereme, co se má v tomto sloupci zobrazovat. Po té ještě vyplníme vlastnost Caption, která je ukryta, ve skupině Title. To znamená, že když v prvním sloupci z leva chceme zobrazovat ID zakázky, musíme na první místo vložit sloupec s hodnotou Id_zakazky ve vlastnosti FieldName. Vlastnost Caption můžeme vyplnit libovolně. To, co vyplníme do Caption bude zobrazováno jako nadpis sloupce. Nyní můžeme aplikaci spustit pomocí klávesy F9. Budeme vyzvání ke vložení User Name a password, což je uživatelské jméno a heslo. V našem případě budeme stále používat root a heslo, které jsme vyplnili při instalaci MySQL serveru. Po spuštění aplikace již uvidíme okno s definovanými sloupci, ale stále nebudou vidět žádné záznamy v databázi. Pro to budeme muset vytvořit nové okno pro vkládání záznamů do databáze. 44

5.4.5 Vývoj aplikace okno pro vkládání záznamů Postup při tvorbě okna bude stejný jako u oken pro zákazníky, investory a pracovníky. Pouze komponenty na tomto formuláři použijeme jiné. Budeme zde chtít zadávat Popis zakázky, zákazníka, vedoucího (zaměstnance), investora, jednotlivé datumy, soubor a poznámku. Také budeme zobrazovat ID zakázky, ale to je automaticky generováno a nemělo by se měnit. Pro každou zmiňovanou hodnotu musíme vytvořit pole pro její zapsání. Bude zde tedy o něco více komponent. Na možný výsledek se můžeme podívat na obrázku 23. Rozmístění a zarovnání komponent na formuláři je libovolné. Obrázek 23: Delphi FrmNova návrhové zobrazení Formulář nazveme FrmNova, to znamená, že do vlastnosti Name vyplníme FrmNova. Pod tímto jménem jej budeme také vyvolávat z hlavního formuláře. Jak je vidět z obrázku, tak zde použijeme komponentu DBEdit, která slouží pro uživatelský vstup textových polžek. Dále zde máme DBLookupComboBox, který nám nabízí již vyplněné hodnoty některého ze sloupců určité tabulky. Dále zde máme komponentu DBMemo, která 45

také slouží k vložení textu. Všechny tyto komponenty nalezneme na záložce DataControl. Dále zde budeme potřebovat několik tlačítek Button ze záložky Standard. Ke každé datové položce, s kterou chceme pracovat, je vhodné vložit popis. K tomu nám bude složit komponenta Label, kterou nalezneme též na záložce Standard. Tuto komponentu použijeme samozřejmě vícekrát, dle potřeby. To je výčet vizuálních komponent. Ty nevizuální budou DataSource, Table, které již známe z minulých oken a OpenDialog. Ten najdeme v záložce Dialogs horního panelu Delphi a bude nám sloužit k nalezení souboru. Vše nyní musíme pospojovat do funkčního bloku. Problém nastává s tím, že pomocí komponenty Query nelze jednoduše vkládat data do databáze. Mnohem pohodlnější způsob než psaní složitých SQL příkazů je pro nás toto dělat již zmiňovanou komponentou Table. Jedinou věc, kterou pro to musíme udělat je definovat opět všechny datové položky, které budeme potřebovat, podobně jako u komponenty Query1 na hlavním formuláři. Nám jich zde bude stačit ale o něco méně. Jaké to budou je vidět na obrázku 24. Před tím, než se pustíme do definování sloupců, musíme ještě nastavit vlastnost DatabaseName komponenty Table1. Ta udává název databáze. Pro nás tedy IBOS. Obrázek 24: Delphi Fields Editor FrmNova Table1 Pokud máme vše definováno, můžeme propojit s komponentou Table náš DataSource. To provedeme pomocí položky DataSet našeho DataSource1, kde nastavíme Table1. Dále nastavíme vlastnost Active komponenty Table1 na True, čímž ji aktivujeme. Nyní budeme pokračovat s nastavováním našich komponent pro práci s databází. U všech komponent DBEdit, DBLookupComboBox a DBMemo nastavíme vlastnost DataSource na DataSource1. Nyní ještě u všech musíme nastavit vlastnost DataField na 46

příslušnou hodnotu datového záznamu. To znamená, že u komponenty DBEdit1 nastavíme DataField na ID_zakazky, u DBLookupComboBox1 na Zakaznik atd. Dále budeme chtít vkládat do komponent DBEdit2 až DBEdit6 datum z kalendáře. K tomuto účelu nám budou sloužit tlačítka vedle nich. Každé tlačítko vyvolá nové okno (formulář) na kterém bude kalendář pro výběr datumu. Založíme si tedy nový formulář a nazveme jej FrmKalendar1jednani. Na něj vložíme komponentu MonthCalendar a nastavíme v Object Inspectoru jeho vlastnosti tak, aby vše vypadalo jako na obrázku 25. Dále na tento formulář vložíme dvě komponenty Button a opět nastavíme jejich vlastnosti, hlavně Caption na příslušné hodnoty. Tedy pro Button1 bude Caption OK a pro Button2 Zpět. Dále ještě nastavíme nadpis okna a to též pomocí Caption v Object Inspectoru. Pro toto okno to bude Kalendář 1. jednání. Takovéto okno si vytvoříme také pro datum druhého a třetího jednání a také pro datum podání nabídky a datum vyhodnocení pouze s tím rozdílem, že se každé bude jmenovat jinak. Jména jsou libovolná, ale měla by být přehledná a ne příliš dlouhá. V naší aplikaci byla použita jména FrmKalendar2Jednani, FrmKalendar3Jednani, FrmKalendarPodaniNabidky a FrmKalendarVyhodnoceni. Obrázek 25: Delphi okno kalendáře prvního jednání návrhové zobrazení Nyní můžeme začít přiřazovat funkce našim tlačítkům. Do obsluhy události tlačítka pro datum prvního jednání vložíme příkaz, který nám otevře okno s kalendářem prvního jednání v modálním stavu. To znamená, že vrátit se na původní formulář, nebo jakýkoliv jiný formulář naší aplikace lze až po uzavření tohoto okna. Obsluha události stisku tlačítka 47

tedy bude vypadat takto: procedure TFrmNova.Button2Click(Sender: TObject); begin frmkalendarvyhodnoceni.showmodal; end; Nyní jen musíme zajistit, aby se vybrané datum, po stisku tlačítka pro uzavření formuláře vložilo do příslušné komponenty DBEdit. K tomu nám opět poslouží událost onclick tohoto tlačítka. Tato událost bude ošetřena následovně: procedure TFrmKalendar1jednani.Button1Click(Sender: TObject); begin FrmNova.Table1BDEDesigner1_jednani.Value := MonthCalendar1.Date; FrmKalendar1jednani.Close; end; To samé můžeme udělat i u ostatních datumových položek. Dále zde máme přiložený soubor, který bude fungovat obdobně. Budeme zde místo okna s kalendářem vyvolávat pouze dialog pro otevření souboru a to pomocí komponenty OpenDialog1. Obsluha události tohoto tlačítka bude tedy vypadat takto: procedure TFrmNova.Button7Click(Sender: TObject); begin OpenDialog1.Execute; end; To nám vyvolá dialog pro nalezení souboru na disku počítače. Nyní jen zajistíme, aby po uzavření tohoto dialogu byl vybraný soubor zapsán do příslušné komponenty. To provedeme v obsluze události OnCanClose komponenty OpenDialog1. Ta bude tedy takováto: procedure TFrmNova.OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean); begin FrmNova.Table1Prilozeny_soubor.Value := OpenDialog1.FileName; end; Dále, je za potřebí ještě, ošetřit stisk tlačítka pro uzavření okna. To provedeme opět v události onclick příslušného tlačítka. Nyní můžeme aplikaci opět spustit a vše otestovat. 48

To je zatím všechno, bližší informace o nastavených vlastnostech jednotlivých komponent se dozvíte v příloze na CD se zdrojovým kódem této aplikace. 5.4.6 Vývoj aplikace okno pro prohlížení a editaci záznamu Dalším oknem, které budeme do naší aplikace vkládat, je okno pro prohlížení editaci již vytvořeného záznamu. Opět tedy vytvoříme nový formulář, který pojmenujeme FrmProhlizenizakazky. Musíme na něho vložit opět komponenty, které budeme potřebovat pro práci se záznamem. Jelikož jsme již všechny používali, bude vše zřejmé z obrázku 26. Obrázek 26: Delphi okno prohlížení záznamů - návrhové zobrazení 49

Pokud máme komponenty na formuláři, můžeme začít zprovozňovat funkčnost. Když se okno otevře, bude v jednotlivých kolonkách údaj o zakázce, na kterou uživatel poklepal v hlavním okně (v komponentě DBGrid) a všechny záznamy budeme smět pouze prohlížet. Pokud bude uživatel chtít nějaké záznamy upravovat, musí stisknout tlačítko Editovat. Po skončení úprav stiskne konec editace. K tomu, aby se zobrazil údaj, který byl vybrán v hlavním okně a abychom se mohli v tomto okně pohybovat mezi záznamy, budeme používat komponentu DBNavigator, kterou svážeme pomocí vlastnosti DataSource s komponentou DataSource1 na hlavním formuláři. To samé uděláme také u ostatních komponent, které pracují s daty naší databáze. Nyní tedy můžeme aplikaci spustit a poklepáním na některý záznam otevřít toto okno. Měly bychom zde vidět data vybraného záznamu. Pokud budeme tedy chtít data měnit, musíme ještě udělat pár změn. Hlavně, jak již víme, není možné vkládat či editovat data, která jsou spojena pomocí komponenty Query. Pro to budeme muset využít komponentu Table1 a DataSource1 na tomto formuláři. K tomu potřebujeme opět vyplnit vlastnosti komponenty Table1 tak, aby bylo možné přistupovat k databázi IBOS (obdobně jako Query1 na hlavním formuláři) a také datové položky pomocí Fields Editoru podobně jako u komponenty Query1. Zde nám ale bude stačit méně položek. Které to jsou je vidět na obrázku 27. Také je potřeba spojit DataSource1 tohoto formuláře s komponentou Table1. To provedeme změnou vlastnosti DataSet komponenty DataSource1 na Table1. Obrázek 27: Delphi Fields Editor - FrmProhlizeniZakazky Table1 Nyní je potřeba ošetřit událost onclick tlačítka pro editaci záznamů. V této proceduře musíme změnit vlastnost DataSource všech komponent tohoto formuláře, ve 50