Lekce 3.13
Spojení databází do relace 1:N


předchozí lekce (3.12) obsah kurzu

Pokud potřebujete propojit dvě databáze, které spolu logicky svými údaji souvisí, můžete využít jejich vzájemné propojení pomocí relací. Jedná se například o hlavičku faktury s údaji o odběrateli, ke které máte v dalším souboru řádky faktury s uvedením fakturovaných položek. Obdobně se může jednat například o ceník s údaji o zboží, ke kterému můžete napojit databázi s údaji o pohybu zboží (příjem a výdej).

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

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz