Databáze pro evidenci výrobků Databáze ve formátu Microsoft Access je součástí systému, který řídí automatizovanou výrobní linku. Tabulka tblCharge obsahuje data o výrobcích a je plněna automaticky řídicím systémem. Obsluha linky může doplnit odkaz na druh výrobku (jeden záznam v tabulce tblProduct) a na zákazníka (záznam v tabulce tblCustomer). Obsluha také může z měřicího přístroje převzít sérii naměřených hodnot a přiřadit je výrobku (tabulka tblThickness). Vztahy mezi tabulkami:
Naměřené hodnoty se ukládají v sadách po max. pěti údajích. Jednomu výrobku lze přiřadit víc takových sad. Podobně, několik výrobků má týž druh a několik jiných výrobků téhož zákazníka. V databázi je uloženo také několik tzv. dotazů. Použití dotazů je různé, např. pro výběr a setřídění záznamů, které se uživateli nabízejí v dialogových boxech. Dotazy jsou zadány v jazyku SQL. Příklad dotazu: SELECT tblProduct.IDP, tblCustomer.IDC, tblCustomer.Comp, tblProduct.Name FROM tblCustomer INNER JOIN tblProduct ON tblCustomer.IDC=tblProduct.IDC WHERE (((tblProduct.IDP)<>1)) ORDER BY tblCustomer.Comp, tblProduct.Name; Dotaz má své jméno a vývojové prostředí Visual C++ dovoluje vytvořit objekt, který přijme data vrácená dotazem.
Vít Buchta, http://web.telecom.cz/buchta
-1-
Výhodou formátu MS Access je, že databázový soubor může obsahovat i formuláře a výstupní sestavy. Tyto objekty mohou hrát pomocnou úlohu při údržbě databáze. SQL server tuto možnost nenabízí. Viz následující formulář.
V jazyku Visual C++ lze k databázi přistupovat prostřednictvím ovladače ODBC. Používám při tom třídy nabízené knihovnou MFC. Jde o třídy CDatabase a CRecordset. Třídu CRecordset používám nepřímo, a to tak, že od ní odvozuji třídy pro přístup ke konkrétním datům (např. k databázové tabulce nebo dotazu). V programu pak pracuji s těmito odvozenými třídami. V popisovaném programu mám 6 takových odvozených tříd. Ovladač ODBC vyžaduje definovat tzv. zdroj dat. To se provádí na úrovni operačního systému. V nabídce Windows 98 vybrat Start / Nastavení / Ovládací panely / Zdroje dat ODBC. Je pravda, že ovladač ODBC pro databázi Microsoft Access má méně schopností než ovladač pro Microsoft SQL Server. Jde hlavně o příkazy týkající se údržby databáze. Zjistil jsem, že ovladače dodané s vývojovým prostředím Visual C++ verze 6 sice umožňují definovat tzv. procedury, nelze ale procedury modifikovat ani odstraňovat. Nefungují příkazy ALTER PROCEDURE a DROP PROCEDURE. Nefunkční je také CREATE PROCEDURE, lze však použít CREATE PROC.
Vít Buchta, http://web.telecom.cz/buchta
-2-
Příklad databázové aplikace napsané v jazyku C++
Tabulku výrobků průběžně plní systém řídící výrobní linku. Obsluha linky může interaktivně doplnit data výrobků přiřazením druhu výrobku a zákazníka. Může také spravovat tabulku druhů výrobků a zákazníků a pořizovat a tisknout výstupní sestavy. Lze také archivovat staré údaje a v době odstavení linky zmenšit objem databáze její kondenzací.
Vít Buchta, http://web.telecom.cz/buchta
-3-
Doplnění dat výrobku. Pro daný výrobek uživatel doplní zákazníka, výrobek, celkový počet kusů a počet vadných kusů.
Odpovídající kód v jazyku Visual C++: CProductDtbChargeSet recordsetCharge(m_pProductDtb); recordsetCharge.m_strFilter.Format("Number = '%s'",m_sCharge); if(recordsetCharge.Open() == TRUE) Nastavit filtr { if(!recordsetCharge.IsBOF()) { try { Připravit pro recordsetCharge.MoveFirst(); zápis recordsetCharge.Edit(); recordsetCharge.m_Status recordsetCharge.m_IDC recordsetCharge.m_IDP recordsetCharge.m_CountTotal recordsetCharge.m_CountFailed recordsetCharge.Update(); bIsDtbProblem = false;
= = = = =
charge_status_completed; nIDC; nIDP; nCountTotal; nCountFailed; Zadat data Zapsat záznam do databáze
} catch(CDBException* e) { sDtbProblem = "Nepodařilo se zapsat změněné hodnoty do" "databáze\n\n";
Vít Buchta, http://web.telecom.cz/buchta
-4-
}
}
}
sDtbProblem += e->m_strError; e->Delete();
Doplnění naměřených hodnot. K měření tloušťek nanesené vrstvy slouží přístroj Deltascope MP30. Přístroj má velikost kalkulačky, je přenosný, a je možné jej sériovým kabelem připojit k počítači. Obsluha linky přístroj používá přímo na dílně. Jakmile výrobek opustí linku, obsluha na několika kusech orientačně změří tloušťky. Kromě orientačního měření obsluha několikrát denně změří 5 nebo 6 produktů na vybraných výrobcích. Tyto údaje je třeba zaznamenat a archivovat. Program umožňuje přenést naměřené tloušťky do počítače, přiřadit je zvolené šarži a uložit do databáze. Klasický postup je ten, že měřicí přístroj se připojí k počítači sériovým kabelem, uživatel aktivuje program DtbProduct, vyvolá činnost Doplnit tloušťky a zvolí šarži. Při tom má na výběr jen ty šarže, které již byly doplněny. Program zobrazí dialogový box pro přenos dat a jednu minutu čeká na zahájení spojení. Uživateli stačí během této doby stisknout na měřicím přístroji klávesu PRINT. Data se přenesou do počítače. Uživatel klepne na tlačítko Databáze. Program tloušťky zapíše do databáze.
Vít Buchta, http://web.telecom.cz/buchta
-5-
Definice zákazníka. V tomto dialogovém boxu uživatel definuje zákazníka. Odkaz na zákazníka lze později přidat k výrobku.
Vít Buchta, http://web.telecom.cz/buchta
-6-
Výstupní sestava výrobků. Uživatel zadá časový interval a vybere zákazníka. Program vyhledá odpovídající výrobky.
Tisk sestavy. Pro tisk tabulek jsem připravil tzv. automatizační komponentu. Jde o klasický program, k němuž je ale připojeno COM rozhraní. Taková rozhraní umožňují komunikaci mezi procesy. V daném případě předá databázová aplikace zformátovanou tabulku tiskovému programu. Ten se aktivuje, zobrazí tabulku, umožní uživateli, aby si ji prohlédnul a potom ji vytiskne. Takto připravený program může být využíván i jinými programy, a to bez ohledu na jazyk, v němž jsou napsány.
Vít Buchta, http://web.telecom.cz/buchta
-7-
Nastavení parametrů sériového portu.
Vít Buchta, http://web.telecom.cz/buchta
-8-
Zmenšení objemu databáze. Postupným přidáváním výrobků objem databáze narůstá. Čas od času je třeba staré údaje uložit do archivní databáze a z pracovního databázového souboru je odstranit. Výhodou formátu MS Access je, že do archivního souboru lze uložit i formuláře, dotazy a výstupní sestavy. Archivní soubory potom lze prohlížet přímo v aplikaci Access.
Vít Buchta, http://web.telecom.cz/buchta
-9-