Použití vícehodnotových polí v dotazech

V aplikaci Microsoft Office Access 2007 můžete vytvořit pole, do kterého lze uložit více hodnot. Takové hodnoty může například tvořit seznam uživatelů, kterým jste přiřadili určitý problém. Vícehodnotová pole jsou vhodná pro určité případy, například když v aplikaci Office Access 2007 zpracováváte informace uložené v seznamu aplikace Windows SharePoint Services 3.0 a daný seznam obsahuje pole vícehodnotového typu, které je k dispozici v aplikaci Windows SharePoint Services 3.0.

V tomto tématu jsou popsána vícehodnotová pole a jejich použití v dotazech.

Obsah tématu

Co je vícehodnotové pole

Základní informace o dotazech

Zobrazení vícehodnotového pole v dotazu

Zobrazení jednotlivých hodnot ve vícehodnotovém poli

Základní informace o vázané hodnotě a zobrazované hodnotě ve vyhledávacím poli

Zobrazení vázané hodnoty v dotazu

Zadání jednoduchého kritéria dotazu pro vícehodnotové pole

Hledání několika hodnot v poli s více hodnotami

Základní informace o významu pole .Hodnota v seznamu polí

Zjistění počtu, seskupení a použití dalších agregačních funkcí

Použití vícehodnotového pole v přidávacím dotazu

Použití vícehodnotového pole v aktualizační dotazu

Použití vícehodnotového pole v odstraňovacím dotazu

Začátek stránky

Co je vícehodnotové pole

Předpokládejme, že máte úkol, který chcete přiřadit jednomu ze zaměstnanců nebo dodavatelů. Zjistíte však, že jej potřebujete přiřadit několika uživatelům najednou. V aplikaci Office Access 2007 můžete vytvořit vícehodnotové pole, ve kterém můžete vybrat uživatele v seznamu.

Pole s více hodnotami

Po klepnutí na pole se seznamem jsou u vybraných položek zobrazena zaškrtnutá políčka. Položky lze zaškrtnout nebo zrušit jejich zaškrtnutí a následně klepnutím na tlačítko OK potvrdit volbu.

Vícehodnotové pole se seznamem

Vybraní uživatelé jsou uloženi v poli s více hodnotami a při zobrazení jsou ve výchozím stavu jednotlivá jména oddělena čárkami.

Vícehodnotové pole s hodnotami oddělenými čárkami

Účelem vícehodnotových polí je usnadnit podporu případů, kdy je třeba vybrat a uložit více než jednu vybranou položku. Tento případ se dříve řešil náročným návrhem databáze. Pole s více hodnotami jsou také důležité pro integraci se službou Windows SharePoint Services, protože vícehodnotová pole jsou podporována také aplikací SharePoint.

Můžete se divit, jak to, že aplikace Office Access 2007 umožňuje ukládat do pole více než jednu hodnotu, když většina databázových systémů tuto funkci zakazuje. Odpovědí je, že databázový stroj aplikace Office Access 2007 ve skutečnosti neukládá hodnoty do jednoho pole. Přestože zobrazený ovládací prvek vypadá a funguje jako jediné datové pole, hodnoty jsou ve skutečnosti uloženy nezávisle a jsou spravovány ve skrytých, systémových tabulkách. Databázový stroj aplikace Access tuto funkci zpracovává za vás - automaticky odděluje data a znovu je skládá do hodnot zobrazených v poli.

Technicky řečeno vícehodnotová pole v aplikaci Access modelují relaci N:N. Představte si například tabulku událostí, kdy přiřazujete odpovědnost za jednotlivé události jednomu nebo několika zaměstnancům. Dále vytvoříte víchodnotové pole s názvem Přiřazeno, které zajišťuje přiřazení událostí zaměstnancům. Relace mezi událostmi a zaměstnanci je typu N:N. To znamená, že můžete mít několik zaměstnanců přiřazených libovolné události a jednoho zaměstance přiřazeného několika událostem.

Začátek stránky

Základní informace o dotazech

Primárním účelem databází je poskytovat požadované informace: Jaký výrobek se nejvíce prodává? Kdo je náš nejlepší zákazník? Kde neplníme naše prodejní cíle? Všechny uvedené otázky požadují informace, na které se můžete dobře navržených databází legitimně zeptat. Chcete-li získat odpovědi z databáze Access, můžete vytvořit dotaz a zadat požadovaná kritéria. Data v dotazu mohou pocházet z jedné nebo několika tabulek. Jakmile aplikace Access načte data, která obsahují odpověď na vaši otázku, můžete data zobrazit a analyzovat. Po vytvoření dotazu jej můžete použít jako základ pro formulář, sestavu, graf nebo jiný dotaz.

Aplikace Office Access 2007 podporuje využití vícehodnotových polí v určitých dotazech a určitými způsoby. Vícehodnotové pole lze zobrazit v dotazu, ve vícehodnotovém poli v dotazu lze zobrazit jednotlivé hodnoty a použitím vícehodnotových polí lze provádět některé agregační operace a akční dotazy.

Začátek stránky

Zobrazení vícehodnotového pole v dotazu

Pokud zobrazíte vícehodnotové pole v dotazu, musíte určit, zda chcete zobrazit úplné vícehodnotové pole obsahující všechny hodnoty oddělené čárkami nebo každou hodnotu uvést na samostatný řádek. Předpokládejme například, že máte tabulku Problémy, která obsahuje pole Přiřazeno pro přiřazení problémů jednotlivým uživatelům. Můžete sestavit dotaz, který obsahuje pole Přiřazeno. Postupujte takto:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na položku Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v našem příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do návrhové mřížky dotazu. V tomto příkladu přetáhněte do návrhové mřížky dotazu pole Název a vícehodnotové pole s názvem Přiřazeno.

  7. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit.

Výsledek dotazu bude vypadat podobně jako na následujícím obrázku - jeden sloupec bude zobrazovat název úkolu a ve druhém sloupci bude pole s více hodnotami:

Výsledek dotazu se zobrazenými poli Název a Přiřazeno

Při vytvoření dotazu v návrhovém zobrazení aplikace Access automaticky vytvoří odpovídající příkaz jazyka SQL (Structured Query Language). Jazyk SQL představuje dotazovací jazyk, který používá aplikace Access. Chcete-li prohlédnout příkaz SQL, přepněte do zobrazení SQL následujícím postupem:

  1. Na kartě Návrh ve skupině Výsledky kldpněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

Začátek stránky

Zobrazení jednotlivých hodnot ve vícehodnotovém poli

Předpokládejme, že chcete zobrazit vícehodnotové pole Přiřazeno rozbalené (někdy se označuje jako sloučené), aby se každé jméno nebo položka pole Přiřazeno zobrazila na samostatném řádku. Toto zobrazení dosáhnete tak, že k vlastnosti Hodnota pole Přiřazeno přidáte v řádku Pole řetězec „.Hodnota“.

Mřížka dotazu s polem Název a Přiřazeno.Hodnota

Když do řádku Pole zadáte položku Přiřazeno, aplikace Access zobrazí při spuštění dotazu všechny hodnoty ve vícehodnotovém poli jako jeden řádek. Pokud však použijete vlastnost Hodnota (jako v případě nastavení Přiřazeno.Hodnota), aplikace Access zobrazí vícehodnotové pole v rozbaleném tvaru, takže každá hodnota se zobrazí na samostatném řádku. Dotaz, který zobrazí jednotlivé hodnoty, vytvoříte následujícím postupem.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte pole, které chcete použít (v tomto příkladu vícehodnotové pole s názvem Přiřazeno.Hodnota) do mřížky dotazu.

  7. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit.

Výsledek dotazu s hodnotami Název a jednotlivými položkami pole Přiřazeno

Při vytvoření dotazu v návrhovém zobrazení aplikace Access automaticky vytvoří odpovídající příkaz jazyka SQL (Structured Query Language). Jazyk SQL představuje dotazovací jazyk, který používá aplikace Access. Chcete-li prohlédnout příkaz SQL, přepněte do zobrazení SQL následujícím postupem:

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

Začátek stránky

Základní informace o vázané hodnotě a zobrazované hodnotě ve vyhledávacím poli

Vícehodnotové pole představuje vyhledávací pole. Vyhledávací pole je pole v tabulce, jehož hodnota je načtena z jiné tabulky nebo dotazu nebo ze seznamu hodnot. Aplikace Access již v řadě předchozích verzí podporuje vyhledávací pole s jednou hodnotou. Vyhledávací pole s více hodnotami jsou novinkou v aplikaci Office Access 2007. Účelem vyhledávacího pole je nahradit zobrazení čísla, jako je například identifikátor (nebo jiná hodnota cizího klíče), nějakou uživatelsky čitelnější položkou, jako je například název. Místo zobrazení identifikačního čísla kontaktu můžete například v aplikaci Access zobrazit jméno kontaktu. Identifikátor kontaktu představuje vázanou hodnotu. Tato hodnota je automaticky vyhledána ve zdrojové tabulce nebo dotazu a nahrazena jménem kontaktu. Jméno kontaktu pak funguje jako zobrazovaná hodnota.

Podobně, jako vyhledávací pole s jednou hodnotou má zobrazovanou a vázanou hodnotu, také vyhledávací pole s více hodnotami má zobrazované hodnoty, které se zobrazují v uživatelském rozhraní, a vázané hodnoty, které jsou uloženy v tabulce. Pro každou položku ve vícehodnotovém poli je zobrazovaná hodnota „vyhledána“ na základě vázané hodnoty.

To znamená, že aplikace Access často zobrazuje vyhledanou zobrazovanou hodnotu, která neodpovídá vázané hodnotě uložené v poli. V předchozím příkladu, ve kterém jste použili pole Přiřazeno, je například sada hodnot identifikátorů zaměstanců z dotazu Rozšířené kontakty*** uložena v poli Přiřazeno. Dotaz Rozšířené kontakty byl vybrán jako Zdroj záznamů při vytváření vícehodnotového pole.

Tyto identifikátory zaměstnanců představují vázané hodnoty. Vzhledem k tomu, že je však pole Přiřazeno vyhledávacím polem, aplikace Access zobrazí ve výsledku dotazu sadu vyhledávaných hodnot, v tomto případě jmen kontaktů. Jména kontatků představují zobrazované hodnoty.

Datový list se zobrazenými hodnotami a datový list s hodnotami vazby

1. Zobrazované hodnoty

2. Vázané hodnoty

Vlastnosti vyhledávání pro vícehodnotové pole lze zobrazit v návrhovém zobrazení. Postupujte takto:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. V navigačním podokně klepněte pravým tlačítkem myši na tabulku, ve které je uloženo vícehodnotové pole.

  4. Klepněte na příkaz Návrhové zobrazení.

  5. Klepněte na vícehodnotové pole. (Klepněte například na pole Přiřazeno.)

  6. Ve skupinovém rámečku Vlastnosti pole klepněte na kartu Vyhledávání.

Vlastnosti vyhledávacího pole s více hodnotami

Je důležité pochopit rozdíl mezi zobrazovanou hodnotou vyhledávacího pole a jeho vázanou hodnotou. Zobrazovaná hodnota se ve výchozím stavu automaticky zobrazuje v zobrazení datového listu. Vázaná hodnota na druhou stranu představuje uloženou hodnotu, kterou používáte v kritériích dotazu a kterou aplikace Access standardně používá při operacích spojení mezi tabulkami.

Začátek stránky

Zobrazení vázané hodnoty v dotazu

Ve výchozím nastavení se v zobrazení datového listu automaticky zobrazí zobrazovaná hodnota. Při vytváření dotazu můžete toto chování potlačit a místo zobrazované hodnoty zobrazit vázanou hodnotu. Tuto akci provedete následujícím postupem:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do návrhové mřížky dotazu. V tomto příkladu přetáhněte do návrhové mřížky dotazu pole Název a vícehodnotové pole s názvem Přiřazeno.Hodnota.

  7. V návrhové mřížce dotazu klepněte na pole Přiřazeno.Hodnota tak, aby pole získalo fokus.

  8. Na kartě Návrh klepněte ve skupině Zobrazit/Skrýt na položku Seznam vlastností.

  9. V seznamu vlastností klepněte na kartu Vyhledávání a v poli Zobrazení vyberte položku Textové pole.

Vlastnost Zobrazení v návrhu dotazu

Když změníte hodnotu vlastnosti Zobrazení na položku Textové pole, zakážete standardní chování vyhledávacího sloupce, takže místo zobrazované hodnoty se zobrazí vázaná hodnota.

Vázaná hodnota zobrazená ve výsledku dotazu

Začátek stránky

Zadání jednoduchého kritéria dotazu pro vícehodnotové pole

Předpokládejme, že chcete zobrazit problémy přiřazené uživateli Kelly Rollin. Můžete zadat kritéria dotazu do řádku Kritéria v mřížce dotazu. Pokud však zadáte kritéria pro vyhledávací pole, je nutné zadat vázanou hodnotu (nikoli zobrazovanou hodnotu). V tomto případě zjistíte, že vázaná hodnota pro uživatele Kelly Rollin je 6. Tato hodnota představuje odpovídající hodnotu primárního klíče v dotazu Rozšířené kontakty pro Kelly.

Vytvoření dotazu, který zobrazuje problémy přiřazené uživateli Kelly Rollin:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do mřížky dotazu. V tomto příkladu přetáhněte pole Název do prvního sloupce v mřížce a pak přetáhněte pole Přiřazeno do druhého sloupce.

  7. Na kartě mřížky dotazu zadejte ve sloupci Přiřazeno do řádku Kritéria hodnotu 6. Počítejte s tím, že zadáváte vázanou hodnotu a nikoli zobrazovanou hodnotu.

    Mřížka dotazu s kritérii pro vícehodnotové pole

  8. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu. Všimněte si, že dotaz vrátí pouze řádky, ve kterých se vyskytuje uživatel Kelly Rollin.

Výsledky dotazu, ve kterých pole Přiřazeno obsahuje hodnotu 6

Při vytvoření dotazu v návrhovém zobrazení aplikace Access automaticky vytvoří odpovídající příkaz jazyka SQL (Structured Query Language). Jazyk SQL představuje dotazovací jazyk, který používá aplikace Access. Chcete-li prohlédnout příkaz SQL, přepněte do zobrazení SQL následujícím postupem:

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Vyhledávání textu místo identifikátoru

Zadávání identifikátorů je však těžkopádné a často je vhodnější zadat jako hledanou hodnotu přímo uživatelské jméno Kelly Rollin. Pokud chcete takové zadání realizovat, je nutné, aby výsledek dotazu obsahoval pole s textovým jménem uživatele. Toto pole pak můžete použít pro vyhledávání uživatele Kelly Rollin.

Nelze použít pole Přiřazeno.Hodnota, protože jeho vázanou hodnotou je identifikátor. Při filtrování podle tohoto pole je proto třeba uvést identifikační číslo.

V tomto příkladu pole se jménem kontaktu není uloženo v tabulce. Pole je definováno ve zdrojovém dotazu, který poskytuje data pro vícehodnotové pole Přiřazeno. Zdrojovou tabulku nebo dotaz pro vícehodnotové pole můžete spojit s tabulkou, která obsahuje pole s více hodnotami, a ze zdrojové tabulky nebo dotazu pak získáte pole (v tomto příkladu jméno kontaktu), které lze vložit do výsledku dotazu. Hledání pak provedete použitím tohoto pole místo vícehodnotového pole.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. V dialogovém okně Zobrazit tabulku klepněte na kartu Dotazy a pak klepněte na dotaz (v tomto příkladu Rozšířené kontakty), který slouží jako zdroj pro vícehodnotové pole, a pak klepněte na tlačítko Přidat.

  6. Klepněte na tlačítko Zavřít.

  7. Přetáhněte pole, které chcete použít, do mřížky dotazu. V tomto příkladu přetáhněte pole Název z tabulky Problémy do prvního sloupce v mřížce. Pak přetáhněte sloupec Kontakt z dotazu Rozšířené kontakty do druhého sloupce a zrušte zaškrtnutí políčka Zobrazit. Nakonec přetáhněte pole Přiřazeno do třetího sloupce.

  8. Pokud mezi polem ID v dotazu Rozšířené kontakty a polem Přiřazeno.Hodnota není zobrazená spojnice (viz následující obrázek), přetáhněte pole ID z dotazu Rozšířené kontakty na pole Přiřazeno.Hodnota v poli Problémy.

    Zobrazí se spojnice.

    Pokud se zobrazují jakékoli jiné spojnice, odeberte je. Spojnici odeberete tak, že ji klepnutím zvýrazníte a pak stisknete klávesu DELETE.

  9. V mřížce dotazu zadejte do sloupce Kontakt v řádku Kritéria jméno "Kelly Rollin".

    Mřížka dotazu s podmínkou Přiřazeno obsahující uživatele "Kelly Rollin"

  10. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu. Všimněte si, že výsledky dotazu obsahují pouze řádky, ve kterých se vyskytuje jméno Kelly Rollin. Tento postup funguje, protože spojení mezi identifikátorem ve zdrojové tabulce nebo dotazu a polem Přiřazeno.Hodnota vrací samostatný řádek pro všechny hodnoty ve vícehodnotovém poli. Každý řádek také obsahuje pole Kontakt s úplným jménem uživatele. Vzhledem k tomu, že Kontakt představuje vypočítané pole (nikoli vyhledávací pole), neexistuje pro něj žádná vázaná a zobrazovaná hodnota. K dispozici je pouze jedna hodnota: jméno kontaktu. Můžete tedy uvést text, který se má shodovat (v tomto příkladu jméno Kelly Rollin).

Výsledek dotazu s polem Přiřazeno, které obsahuje uživatele "Kelly Rollin"

Při vytvoření dotazu v návrhovém zobrazení aplikace Access automaticky vytvoří odpovídající příkaz jazyka SQL (Structured Query Language). Jazyk SQL představuje dotazovací jazyk, který používá aplikace Access. Chcete-li prohlédnout příkaz SQL, přepněte do zobrazení SQL následujícím postupem:

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

Začátek stránky

Hledání několika hodnot v poli s více hodnotami

V některým případech potřebujete hledat více než jednu hodnotu. Předpokládejme, že chcete zobrazit problémy které jsou prostřednictvím pole Přiřazeno vztaženy k uživatelům Kelly Rollin a Lisa Miller. Vázaná hodnota pro uživatele Kelly Rollin je 6 a vázaná hodnota pro uživatele Lisa Miller je 10. Chcete-li pro vícehodnotové pole určit několik kritérií, můžete použít logické operátory AND nebo OR.

Dotaz vytvoříte následujícím postupem:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do mřížky dotazu. V tomto příkladu přetáhněte pole Název do prvního sloupce v mřížce a pak přetáhněte pole Přiřazeno do druhého sloupce.

  7. V mřížce dotazu zadejte ve sloupci Přiřazeno do řádku Kritéria hodnotu 6 And 10.

    Dotaz, který demonstruje použití operátoru AND v poli s více hodnotami

  8. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu.

Výsledek dotazu, který znázorňuje použití operátoru AND v poli s více hodnotami

Ve výsledné sadě se zobrazí pouze problémy, které jsou přiřazeny uživatelům Kelly Rollin i Lisa Miller. Při vytvoření dotazu v návrhovém zobrazení aplikace Access automaticky vytvoří odpovídající příkaz jazyka SQL (Structured Query Language). Jazyk SQL představuje dotazovací jazyk, který používá aplikace Access. Chcete-li prohlédnout příkaz SQL, přepněte do zobrazení SQL následujícím postupem:

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

Náhrada operátoru AND za operátor OR

Předpokládejme, že chcete změnit dotaz takovým způsobem, aby se zobrazovaly řádky, ve kterých je uvedený uživatel Kelly RollinneboLisa Miller. Příkaz SQL lze upravit tak, že místo operátoru AND bude používat logický operátor OR. Příkaz by pak měl vypadat následujícím způsobem:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu.

Dotaz, který používá operátor OR s vícehodnotovým polem

Ve výsledné sadě se zobrazí problémy, které jsou přiřazeny uživateli Kelly Rollin nebo Lisa Miller.

Začátek stránky

Základní informace o významu pole .Hodnota v seznamu polí

Je důležité porozumět, jaký vliv má v dotazu vložení pole .Hodnota do seznamu výstupních sloupců (seznam SELECT). Při zpracování dotazu se jako první krok vytvoří výsledná sada, na kterou nemá vliv klauzule nebo filtr WHERE. Filtr se použije až na tuto počáteční sadu. Je proto vhodné se nejdříve zamyslet nad výslednou sadou, která se generuje jako první, a pak počítat s jejím omezením díky filtru v klauzuli WHERE. Podívejte se například na následující výstup:

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Počáteční sada výsledků může vypadat následujícím způsobem (před uplatněním filtru):

Název

Přiřazeno

Issue 1

David Hamilton, Eva Valverde

Issue 2

Kathleen Gail Jensen, Kelly Rollin, Susan Burk, Lisa Miller

Issue 3

Jesper Aaberg, Kelly Rollin, Eva Valverde, Tom Michaels

Issue 4

Wei Yu, Lisa Miller

Issue 5

David Hamilton, Kathleen Gail Jensen

Issue 6

Sanjay Jacob, Kelly Rollin

Issue 7

Jesper Aaberg, Susan Burk

Issue 8

David Hamilton

Issue 9

Kelly Rollin, Lisa Miller

Issue 10

Eva Valverde, Tom Michaels

Filtrování pak prochází počáteční výslednou sadou a vybírá řádky, které neobsahují uživatele David Hamilton, jehož identifikátor má hodnotu 3:

Název

Přiřazeno

Issue 2

Kathleen Gail Jensen, Kelly Rollin, Susan Burk, Lisa Miller

Issue 3

Jesper Aaberg, Kelly Rollin, Eva Valverde, Tom Michaels

Issue 4

Wei Yu, Lisa Miller

Issue 6

Sanjay Jacob, Kelly Rollin

Issue 7

Jesper Aaberg, Susan Burk

Issue 9

Kelly Rollin, Lisa Miller

Issue 10

Eva Valverde, Tom Michaels

Nyní se podívejte na druhý příklad, který v seznamu polí obsahuje pole .Hodnota. Nejdříve si všimněte, jaký vliv má vložení pole .Hodnota na počáteční sadu výsledků před filtrováním:

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Počáteční sada výsledků může vypadat následujícím způsobem (před uplatněním filtru):

Název

Přiřazeno.Hodnota

Issue 1

David Hamilton

Issue 1

Eva Valverde

Issue 2

Kathleen Gail Jensen

Issue 2

Kelly Rollin

Issue 2

Lisa Miller

Issue 2

Susan Burk

Issue 3

Eva Valverde

Issue 3

Jesper Aaberg

Issue 3

Kelly Rollin

Issue 3

Tom Michaels

Issue 4

Lisa Miller

Issue 4

Wei Yu

Issue 5

David Hamilton

Issue 5

Kathleen Gail Jensen

Issue 6

Kelly Rollin

Issue 6

Sanjay Jacob

Issue 7

Jesper Aaberg

Issue 7

Susan Burk

Issue 8

David Hamilton

Issue 9

Kelly Rollin

Issue 9

Lisa Miller

Issue 10

Tom Michaels

Issue 10

Eva Valverde

Filtrování nyní projde počáteční sadou výsledků a vybere pouze řádky, které neobsahují uživatele David Hamilton, jehož identifikátor má hodnotu 3:

Název

Přiřazeno.Hodnota

Issue 1

Eva Valverde

Issue 2

Kathleen Gail Jensen

Issue 2

Kelly Rollin

Issue 2

Lisa Miller

Issue 2

Susan Burk

Issue 3

Eva Valverde

Issue 3

Jesper Aaberg

Issue 3

Kelly Rollin

Issue 3

Tom Michaels

Issue 4

Lisa Miller

Issue 4

Wei Yu

Issue 5

Kathleen Gail Jensen

Issue 6

Kelly Rollin

Issue 6

Sanjay Jacob

Issue 7

Jesper Aaberg

Issue 7

Susan Burk

Issue 9

Kelly Rollin

Issue 9

Lisa Miller

Issue 10

Tom Michaels

Issue 10

Eva Valverde

Zobrazení sady výsledků před uplatněním filtru a po jeho použití vám pomůže pochopit a správně sestavit sadu výsledků.

Začátek stránky

Zjistění počtu, seskupení a použití dalších agregačních funkcí

Hodnoty uložené ve vícehodnotových polích můžete chtít seskupit a provést výpočty na těchto skupinách. Můžete například hledat odpovědi na tyto otázky: Kolik problémů je přiřazeno jednotlivým uživatelům? Kolik uživatelů je přiřazeno každému problému? Takové typy výpočtů lze provést použitím agregačních funkcí v souhrnném dotazu.

Agregační funkce provede výpočet na sadě hodnot a vrací jednu hodnotu. Jako příklad agregačních funkcí lze uvést funkce Sum, Count nebo Avg, které vrací vypočítané souhrny. Souhrny lze vypočítat pro všechny záznamy nebo pro skupiny záznamů. Chcete-li agregační funkci použít pro skupinu, je nutné v mřížce dotazu vybrat jedno nebo několik polí, podle kterých seskupení provedete.

Následující postup ukazuje způsob vytvoření dotazu, který zjistí počet problémů přiřazený jednotlivým uživatelům.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do mřížky dotazu. V tomto příkladu přetáhněte pole Přiřazeno.Hodnota do prvního sloupce v mřížce a pak přetáhněte pole Název do druhého sloupce.

  7. Na kartě Návrh klepněte ve skupině Zobrazit/Skrýt na položku Souhrn.

    V mřížce dotazu se zobrazí řádek Souhrn. V buňce Souhrn pro každé pole v dotazu se zobrazí výchozí nastavení Seskupit.

  8. V mřížce dotazu vyberte ve sloupci Název v řádku Souhrn agregační funkci Count.

  9. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

Při návrhu dotazu určujete, která pole chcete použít pro seskupení a která pole použijete pro souhrny (výpočty). V tomto příkladu pole Přiřazeno.Hodnota sloužilo pro seskupení a pole Název pro výpočet celkového počtu. U polí, která chcete použít jako seskupovací pole, vyberte v řádku Souhrn položku Seskupit. V případě polí, která chcete použít pro výpočet, vyberte typ výpočtu (například agregační funkci Sum nebo Avg). Počítejte s tím, že pokud pro seskupení použijete vícehodnotové pole, je nutné použít pole .Hodnota. V tomto příkladu nelze pro seskupení použít pole Přiřazeno - je nutné použít pole Přiřazeno.Hodnota. Pole .Hodnota musíte použít také v případě, že podle vícehodnotového pole řadíte.

Poznámka : Pokud provádíte seskupení podle pole s více hodnotami, je třeba použít pole .Hodnota. Toto pole je nutné použít i v případě, že podle vícehodnotového pole řadíte.

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu.

Dotaz, který počítá problémy přiřazené jednotlivým uživatelům

Chcete-li pro tento dotaz zobrazit příkaz SQL, proveďte následující postup a přepněte do zobrazení SQL.

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

Předpokládejme, že chcete vědět, kolik uživatelů je přiřazeno každému problému. Můžete provést seskupení podle Názvu a vybrat agregační funkci Count pro výpočet nad vícehodnotovým polem. Dotaz vytvoříte následujícím postupem:

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tabulku (v tomto příkladu na tabulku Problémy), která obsahuje pole s více hodnotami, a pak klepněte na tlačítko Přidat.

  5. Klepněte na tlačítko Zavřít.

  6. Přetáhněte požadovaná pole do mřížky dotazu. V tomto příkladu přetáhněte pole Název do prvního sloupce v mřížce a pak přetáhněte pole Přiřazeno do druhého sloupce.

  7. Na kartě Návrh klepněte ve skupině Zobrazit/Skrýt na položku Souhrny.

    V mřížce dotazu se zobrazí řádek Souhrn. V buňce Souhrn pro pole Název v dotazu se zobrazí výchozí nastavení Seskupit. V buňce Souhrn v poli Přiřazeno se zobrazí výchozí nastavení Výraz, protože operaci seskupení (klauzuli GROUP BY) nelze použít pro vícehodnotové pole. Klauzuli lze použít pouze na víchodnotové pole .Hodnota.

  8. V mřížce dotazu vyberte ve sloupci Přiřazeno v řádku Souhrn agregační funkci Count.

  9. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

Po spuštění dotazu jsou výsledky uvedeny v zobrazení datového listu.

Výsledek dotazu, který ukazuje počet uživatelů přiřazených problému

Chcete-li pro tento dotaz zobrazit příkaz SQL, proveďte následující postup a přepněte do zobrazení SQL.

  1. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  2. Klepněte na příkaz Zobrazení SQL.

Příkaz SQL vypadá následujícím způsobem:

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

Poznámka : V tomto příkazu SELECT jazyka SQL nezáleží na tom, zda použijete tvar Count([Problémy].[Přiřazeno]) nebo Count([Problémy].[Přiřazeno].Hodnota). Výsledek obou dotazů je stejný.

Začátek stránky

Použití vícehodnotového pole v přidávacím dotazu

Přidávací dotaz (INSERT) umožňuje do vícehodnotových polí přidávat jednotlivé hodnoty. Předpokládejme, že pro určitý problém chcete do vícehodnotového pole Přiřazeno přidat například uživatele Kelly Rollin. Nejprve je nutné určit hodnotu primárního klíče pro problém a pro záznam kontaktu uživatele Kelly. Předpokládejme, že tyto hodnoty jsou 10 pro problém a 6 pro uživatele Kelly.

Vytvoření požadovaného dotazu ukazuje následující postup.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

    Obrázek pásu karet aplikace Access

  4. V dialogovém okně Zobrazit tabulku klepněte na tlačítko Zavřít.

  5. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  6. Klepněte na příkaz Zobrazení SQL.

  7. V zobrazení SQL zadejte následující příkaz SQL:

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

    V aplikaci Access se pravděpodobně zobrazí dotaz, zda chcete přidat vybraný řádek. Klepnutím na tlačítko Ano řádek přidáte a tlačítkem Ne operaci zrušíte.

Uživatel Kelly je nyní uvedený v poli Přiřazeno pro daný problém. Jedná se o jediný tvar vkládacího dotazu, který podporuje vícehodnotové pole.

Poznámka : Přidávací dotaz (APPEND) představuje dotaz, který používáte k přidávání záznamů z jedné tabulky do jiné existující tabulky. V aplikaci Office Access 2007 nelze použít přidávací dotaz, který odkazuje na tabulku s vícehodnotovým polem. Následující dotaz například není platný:

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

Začátek stránky

Použití vícehodnotového pole v aktualizační dotazu

Aktualizační dotaz slouží k úpravám hodnot ve stávajících záznamech. Pokud použijete aktualizační dotaz k aktualizaci tabulky, která obsahuje vícehodnotová pole, můžete upravit jednu hodnotu ve vícehodnotovém poli na jinou hodnotu. Předpokládejme, že chcete aktualizovat vícehodnotové pole Přiřazeno pro určitý problém. Můžete například nahradit uživatele Kelly Rollin za uživatele Lisa Miller. Nejprve je třeba určit hodnotu primárního klíče pro problém a pro záznamy kontaktů Kelly a Lisa. Předpokládejme, že tyto hodnoty jsou 8 pro problém, 6 pro uživatele Kelly a 10 pro uživatele Lisa.

Způsob vytvoření požadovaného dotazu ukazuje následující postup.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

  4. V dialogovém okně Zobrazit tabulku klepněte na tlačítko Zavřít.

  5. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  6. Klepněte na příkaz Zobrazení SQL.

  7. V zobrazení SQL zadejte následující příkaz SQL:

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    Poznámky : 

    • Vždy vkládejte klauzuli WHERE, která identifikuje pouze ty záznamy, které chcete aktualizovat. V opačném případě změníte i záznamy, které jste nechtěli upravovat. Aktualizační dotaz, který neobsahuje klauzuli WHERE, změní všechny řádky v tabulce.

    • Zadejte jednu hodnotu, kterou chcete změnit.

  8. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

    V aplikaci Access se pravděpodobně zobrazí dotaz, zda chcete provést aktualizaci záznamu. Klepnutím na tlačítko Ano provedete aktualizaci řádku. Tlačítkem Ne operaci zrušíte.

Uživatel Lisa Miller je nyní uvedena spolu s uživatelem Kelly Rollin v poli Přiřazeno pro daný problém.

Začátek stránky

Použití vícehodnotového pole v odstraňovacím dotazu

Odstraňovací dotaz slouží k odebrání záznamů z tabulky. Pokud pracujete s tabulkou, která obsahuje pole s více hodnotami, můžete pomocí odstraňovacího dotazu odstranit záznamy, které obsahují určitou hodnotu ve vícehodnotovém poli. Dotazem můžete také odstranit určitou hodnotu z vícehodnotového pole ve všech záznamech v tabulce.

Předpokládejme, že chcete odebrat uživatele Kelly Rollin z pole Přiřazeno v celé tabulce. Takový dotaz vytvoříte následujícím postupem.

  1. Klikněte na tlačítko Microsoft Office Obrázek tlačítka a potom klikněte na příkaz Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Vytvořit klepněte ve skupině Další na příkaz Návrh dotazu.

  4. V dialogovém okně Zobrazit tabulku klepněte na tlačítko Zavřít.

  5. Na kartě Návrh ve skupině Výsledky klepněte na šipku u pole Zobrazení. Tím přejdete do nabídky Zobrazení.

  6. Klepněte na příkaz Zobrazení SQL.

  7. V zobrazení SQL zadejte následující příkaz SQL:

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. Na kartě Návrh klepněte ve skupině Výsledky na příkaz Spustit. Tím spustíte dotaz.

    V aplikaci Access se pravděpodobně zobrazí dotaz, zda chcete odstranit záznamy. Klepnutím na tlačítko Ano provedete odstranění záznamů. Tlačítkem Ne operaci zrušíte.

Následující ukázkový dotaz neodstraní žádné záznamy z tabulky Problémy. Tento dotaz odstraní hodnotu z vícehodnotového pole Přiřazeno ve všech záznamech, kde se v tabulce tato hodnota vyskytuje. Jestliže chcete odstranit záznamy z tabulky Problémy, neuvádějte za klauzuli DELETE v příkazu SQL žádné pole. Chcete-li například ostranit všechny problémy, které jsou mimo jiné přiřazeny také uživateli Kelly Rollin, zadejte následující příkaz SQL:

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Poznámka : Odstraňovací dotaz používejte při odstraňování záznamů velmi opatrně. Po odstranění řádků již nelze operaci vrátit zpět.

Začátek stránky

Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

Děkujeme vám za zpětnou vazbu.

×