předchozí lekce (3.12) | obsah kurzu |
Všeobecně platí, že relacemi lze propojit databáze, které mají společnou klíčovou položku. Ve výše uvedených příkladech se jednalo o číslo faktury a číslo zboží. Hlavní (master) databáze nemusí být nijak indexována. Podřízená (detail) databáze musí být indexována podle klíčové položky a uvedený index musí být aktivní.
Pro vytvoření relace musíme umístit na formulář dvě komponenty DataTable a DataSource a nastavit samostatně jejich vlastnosti pro obě databáze již známým způsobem. U druhé databáze musíme navíc vlastností IndexName nastavit index, kterým je databáze seřazena podle klíčové položky. V našem případě s fakturou to musí být index řazení podle čísla faktury. Ve vlastnosti MasterFields potom zadáme klíčovou položku (položku databáze), ve které se hledá stejná hodnota jako je nastavena v hlavní databázi. Posledním krokem je nastavení vlastnosti MasterSource, kde zadáme zdroj dat (komponentu DataSource) hlavní databáze. Data můžeme zobrazovat například komponentami DataGrid.
Při propojování databází do relací byste měli postupovat dále uvedeným způsobem,
kde je uveden příklad propojení databází hlavičky faktury s databází řádek faktur.
Předpokládá se, že podřízená databáze je již indexována podle čísla faktury.
--------------------------------------------
komponenta vlastnost zadaná hodnota
--------------------------------------------
DataTable1 TableName FAKT_HLA.DBF
DataTable1 Active True
DataSource1 DataSet1 DataTable1
DataGrid1 DataSource DataSource1
DtaNavigator1 DataSource DataSource1
DataTable2 TableName FAKT_RAD.DBF
DataTable2 Active True
DataSource2 DataSet2 DataTable2
DataGrid2 DataSource DataSource2
DataTable2 IndexName FAKTURA
DataTable2 MastterFields Faktura
DataTable2 MasterSource DataSource1
-------------------------------------------
Pokud proběhne vše v pořádku, spojí se obě databáze do relace a při změně pozice v
hlavní databázi budou u podřízené databáze zobrazovány pouze záznamy
odpovídající záznamu nadřazené databáze.
předchozí lekce (3.12) | obsah kurzu |