Řešení a ochrana před vytvářením duplicitních dat

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

Duplicitní data mohou způsobit potíže, které mohou stát uživatele peníze, důvěryhodnost nebo dobrou vůli. Duplicitní záznam může například způsobit dodání rychle se kazícího zboží na nesprávnou adresu. Access pomáhá zabránit vytváření duplicitních dat tím, že poskytuje metody pro opakované použití dat a umožňuje nastavit požadavek, aby nově zadávané hodnoty byly jedinečné.

Poznámka :  Metody v tomto článku se nevztahují na webové databáze. Můžete je však použít v databázi pro klientské počítače a poté tuto databázi použít jako zdroj pro vytvoření nové webové databáze. Další informace o webových databázích naleznete v článku Vytvoření databáze aplikace Access pro sdílení na webu.

Poznámka :  Tento článek se nevztahuje na aplikace pro Access (to je nový druh databází, které se navrhují v Accessu a publikují online). Další informace najdete v tématu Vytvoření aplikace pro Access.

V tomto článku

Základní informace

Než začnete

Příprava ukázkových dat pro vyzkoušení některých příkladů

Odstranění a úpravy duplicitních dat v jedné tabulce

Vyřešení problému s duplicitními daty ve více tabulkách

Ochrana uživatelů před zadáváním duplicitních dat v tabulce

Základní informace

Jedním z hlavních důvodů pro používání relační databáze, jako je databáze Accessu, je zabránit vytváření duplicitních dat, která mohou způsobit zmatek a potíže. Vytváříte-li databázi shromažďováním dat z existujících systémů, například ze sady sešitů aplikace Excel, můžete někdy získat duplicitní data, která je třeba vyřešit před tím, než začnete databázi používat. Pokud navíc neučiníte určitá opatření týkající se návrhu (nebo jsou tato opatření z nějakého důvodu neproveditelná), může databáze někdy získat duplicitní hodnoty, zvláště pokud zadává data současně více uživatelů.

Co jsou duplicitní data

Výraz duplicitní data neznamená, že existují dvě přesné kopie stejných dat. Duplicitními daty se spíše rozumí data, která jsou trochu jiná, ale která odkazují na totéž jako nějaká jiná data. To nemusí být nutně špatně – například celé jméno s iniciálou druhého jména a bez ní.

Duplicitní data se mohou objevit na různých úrovních:

  • Dva nebo více záznamů může obsahovat duplicitní pole.    Dva záznamy mohou být považovány za duplicitní, i když ne všechna pole těchto záznamů obsahují shodné hodnoty. Například na tomto obrázku jsou zobrazeny dva záznamy zákazníka Antonio Moreno Taquería.

    Duplicitní záznamy zákazníka v tabulce Zákazníci

    I když má každý záznam jedinečné ID zákazníka (hodnotu ve sloupci zcela vlevo), hodnoty v polích Název, Adresa a Město jsou stejné. Je možné, že pro jednoho zákazníka byl záznam vytvořen dvakrát, nebo existuje oprávněný důvod k tomu, aby byli dva zákazníci u stejné společnosti. Bude nutné prohlédnout záznamy a zkontrolovat, zda nejsou duplicitní.

  • Dvě nebo více tabulek může obsahovat podobná data.    Můžete například zjistit, že tabulky Zákazníci a Klienti obsahují záznamy o stejných zákaznících.

    Tabulky Klienti a Zákazníci se stejnými daty

    I když tabulky mohou mít poněkud odlišnou strukturu, obě obsahují stejný druh informací – data o zákaznících – takže byste měli zvážit vytvoření nové tabulky jejich sloučením.

  • Dvě nebo více databází může obsahovat podobná data.    Pokud zjistíte, že dvě nebo více databází obsahuje podobná data, nebo převezmete databázi, jejíž data se překrývají s údaji aktuální databáze, měli byste porovnat data a struktury obou databází a pak podniknout nezbytné kroky pro jejich sloučení.

    Ruční porovnání databází není jednoduchý úkol, i když jsou databáze malé. Potřebujete-li s porovnáním pomoci, různí prodejci nabízejí nástroje pro porovnávání obsahů a struktur databází aplikace Access.

    Důležité : Pokud jste podnikli kroky k odstranění duplicitních dat z tabulek, ale ve formuláři nebo sestavě se přesto zobrazují duplicitní data, může to být způsobeno nesprávným návrhem formuláře nebo sestavy. Zkontrolujte, zda jsou podkladové tabulky a dotazy správně propojeny a zda oddíly formuláře nebo sestavy neobsahují více než jeden ovládací prvek, který je vázán na stejný zdroj. Další informace o návrhu sestavy naleznete v článku Úvod k sestavám.

Co nejsou duplicitní data

  • Někdy se stane, že dva nebo více záznamů bude sdílet stejnou sadu hodnot, ale netýkají se stejné věci. Celé jméno řady zákazníků může být například Jan Novák, ale hodnoty nejsou duplicitní, protože se týkají jiných lidí. V této situaci nehrozí nebezpečí duplicity dat, pokud další pole v databázi (například pole ID, uživatelská jména, adresy či poštovní směrovací čísla) obsahují dostatek jedinečných informací pro to, aby záznamy nebylo možné považovat za duplicitní.

  • U dat vrácených dotazem se může zdát, že obsahují duplicitní záznamy, pokud dotaz neobsahuje pole, která jednoznačně identifikují každý záznam. Na následujícím obrázku je příklad dat vrácených dotazem:

    Zobrazení, které neobsahuje pole, podle něhož by bylo možné záznamy jednoznačně identifikovat

    Několik řádků ve výsledcích dotazu vypadá jako duplicity. Podobný dotaz, který by ale obsahoval pole s primárním klíčem, by však odhalil, že každý záznam je ve skutečnosti jedinečný:

    Zobrazení nyní obsahuje pole Kód objednávky, které odstraňuje duplicitu záznamů

    Chcete-li se vyhnout těmto potížím, je nutné při vytváření dotazu zahrnout pole, která jednoznačně identifikují každý záznam. K tomuto účelu slouží pole primárního klíče, místo toho však lze rovněž použít i kombinaci dalších polí. Pokud například výsledné zobrazení obsahuje vícekrát běžné jméno kontaktní osoby a název města, je možné do dotazu zahrnout telefonní číslo a adresu – tato kombinace dat může stačit na to, aby byl každý záznam jedinečný.

Řešení a ochrana před vytvářením duplicitních dat

Chcete-li vyřešit problém s duplicitními daty, můžete je upravit nebo odstranit.

  • Duplicitní záznam upravte, pokud skutečně představuje odlišný subjekt, například zákazníka, pro kterého neexistuje žádný další záznam a který se na základě nějaké chyby (třeba nesprávného zadání) stal duplikátem nějakého jiného záznamu.

  • Duplicitní záznam odstraňte, pokud nepředstavuje nějaký jiný subjekt – tedy pokud pro stejný subjekt existuje jiný záznam, jehož použití upřednostňujete.

  • V některých případech odstraníte jeden duplikát a jiný upravíte, protože žádný ze záznamů není zcela přesný. Chcete-li odstranit duplikát z tabulky, která souvisí s jinými tabulkami, pravděpodobně bude potřeba pro některé relace povolit kaskádová odstraňování.

Chcete-li zabránit vytváření duplicitních dat, zvažte následující doporučení:

  • Zkontrolujte, zda má každá tabulka primární klíč.

  • Pokud existují pole, která nejsou součástí primárního klíče, ale musí obsahovat jedinečné hodnoty, vytvořte pro tato pole jedinečné indexy.

  • Zvažte možnost vytvoření formulářů pro zadávání dat a použití seznamů v těchto formulářích v zájmu snadnějšího vyhledání existujících hodnot.

Začátek stránky

Než začnete

Před odstraněním duplicitních dat proveďte následující kroky:

  • Ujistěte se, že soubor databáze není určen jen pro čtení.

  • Pokud vaši databázi používají další uživatelé a chcete minimalizovat narušení jejich práce, požádejte je o zavření objektů, s nimiž chcete pracovat. Jinak může dojít ke konfliktům dat.

  • Pokud je přijatelné, aby byla databáze během vaší práce na ní nedostupná, otevřete ji ve výhradním režimu. Tuto akci provedete kliknutím na kartu Soubor a potom na tlačítko Otevřít. V dialogovém okně vyhledejte a vyberte databázi, klikněte na šipku u tlačítka Otevřít a poté na příkaz Výhradní přístup.

    Otevření souboru ve výhradním režimu

  • Než budete odstraňovat záznamy, zálohujte databázi. Operaci odstranění nelze vrátit zpět. Jedinou možností, jak odstraněné záznamy zachránit, je obnovit je ze záložní kopie. Při operaci odstranění se také mohou odstranit záznamy z relačně propojených tabulek, proto je nejvhodnější před spuštěním této operace zálohovat celou databázi.

Zálohování databáze

  1. Klikněte na kartu Soubor a na Uložit jako a pak v části Uložit databázi jako klikněte na Zálohovat databázi.
    Zobrazí se dialogové okno Uložit jako a Access připojí k názvu souboru aktuální datum. Pokud například chcete zálohovat databázi Aktiva, vytvoří se název souboru v tomto tvaru: Aktiva_2011-10-29.

  2. Přijměte výchozí název a umístění nebo zadejte jiný název a zvolte jiné umístění a klikněte na tlačítko Uložit.
    Aplikace Access zavře původní soubor, vytvoří jeho záložní kopii a znovu otevře původní soubor.

Poznámka : Chcete-li provést obnovení ze záložní verzi databáze, zavřete soubor s originálem databáze a dejte mu jiný název. Přiřaďte záložní kopii název původní verze databáze a otevřete ji v aplikaci Access.

Začátek stránky

Příprava ukázkových dat pro vyzkoušení některých příkladů

V postupech v tomto článku se používají následující ukázkové tabulky. Chcete-li tyto postupy vyzkoušet, zkopírujte ukázkové tabulky do nové prázdné databáze pomocí postupu na konci této části.

Tabulka Zákazníci:

NázevSpolečnosti

JménoKontaktu

Adresa

Město

PSČ

Telefon

Baldwin Museum of Science

Josh Barnhill

1 Main St.

New York

12345

(505) 555-2122

Blue Yonder Airlines

Waleed Heloo

52 1st St.

Boston

23456

(104) 555-2123

Coho Winery

Pica Guido

3122 75th Ave. S.W.

Seattle

34567

(206) 555-2124

Contoso Pharmaceuticals

Jean Philippe Bagel

1 Contoso Blvd.

Londýn

NS1 EW2

(171) 555-2125

Fourth Coffee

Julian Price

Calle Smith 2

Mexico City

56789

(7) 555-2126

Coho Winery

Christine Hughes

3122 75th St. S.

Seattle

34567

(206) 555-2125

Humongous Insurance

Steve Riley

67 Big St.

Tampa

01234

(916) 555-2128

Trey Research

Dana Birkby

2 Nosey Pkwy

Portland

43210

(503) 555-2129

Fourth Coffee

Reshma Patel

Calle Smith 2

Mexico City

56789

(7) 555-2233

Tabulka Zaměstnanci:

Příjmení Název

Jméno

Adresa

Město

DatumNarození

ZaměstnánOd

Barnhill

Josh

1 Main St.

New York

5. 2. 1968

10. 6. 1994

Heloo

Waleed

52 1st St.

Boston

22. 5. 1957

22. 11. 1996

Guido

Pica

3122 75th Ave. S.W.

Seattle

11. 11. 1960

11. 3. 2000

Bagel

Jean Philippe

1 Contoso Blvd.

Londýn

22. 3. 1964

22. 6. 1998

Price

Julian

Calle Smith 2

Mexico City

5. 6. 1972

5. 1. 2002

Hughes

Christine

3122 75th St. S.

Seattle

23. 1. 1970

23. 4. 1999

Riley

Steve

67 Big St.

Tampa

14. 4. 1964

14. 10. 2004

Birkby

Dana

2 Nosey Pkwy

Portland

29. 10. 1959

29. 3. 1997

Bagel

Jean Philippe

1 Contoso Blvd.

Londýn

22. 3. 1964

20. 6. 1998

Tabulka Dlužné částky:

NázevSpolečnosti

JménoKontaktu

Adresa

Město

PSČ

Telefon

DlužnáČástka

Baldwin Museum of Science

Josh Barnhill

1 Main St.

New York

12345

(505) 555-2122

556,78 USD

Blue Yonder Airlines

Waleed Heloo

52 1st St.

Boston

23456

(104) 555-2123

1 893,24 USD

Coho Winery

Pica Guido

3122 75th Ave. S.W.

Seattle

34567

(206) 555-2124

321,79 USD

Contoso Pharmaceuticals

Jean Philippe Bagel

1 Contoso Blvd.

Londýn

NS1 EW2

(171) 555-2125

457,68 GBP

Fourth Coffee

Julian Price

Calle Smith 2

Mexico City

56789

(7) 555-2126

98,75 USD

Coho Winery

Christine Hughes

3122 75th St. S.

Seattle

34567

(206) 555-2125

321,79 USD

Humongous Insurance

Steve Riley

67 Big St.

Tampa

01234

(916) 555-2128

297,45 USD

Trey Research

Dana Birkby

2 Nosey Pkwy

Portland

43210

(503) 555-2129

509,09 USD

Fourth Coffee

Reshma Patel

2 Calle Smith

Mexico City

56789

(7) 555-2233

98,75 USD

Tabulka Klienti:

Název

Adresa

Město

Telefon

Fax

Baldwin Museum of Science

1 Main St.

New York

(505) 555-2122

(505) 555-2122

Blue Yonder Airlines

52 1st St.

Boston

(104) 555-2123

(104) 555-2123

Coho Winery

3122 75th Ave. S.W.

Seattle

(206) 555-2124

(206) 555-2124

Contoso Pharmaceuticals

1 Contoso Blvd.

Londýn

(171) 555-2125

(171) 555-2125

Fourth Coffee

Calle Smith 2

Mexico City

(7) 555-2126

(7) 555-2126

Consolidated Messenger

3122 75th St. S.

Seattle

(206) 555-2125

(206) 555-2129

Graphic Design Institute

67 Big St.

Tampa

(916) 555-2128

(916) 555-2128

Litware, Inc.

3 Microsoft Way

Portland

(503) 555-2129

(503) 555-2110

Tailspin Toys

4 Microsoft Way

Portland

(503) 555-2233

(503) 555-2239

Vložení ukázkových dat na listy v Excelu

  1. Spusťte Excel. Otevře se prázdný sešit.

  2. Stisknutím kláves SHIFT+F11 vložte list (budete potřebovat čtyři).

  3. Zkopírujte data z každé ukázkové tabulky včetně záhlaví sloupců (první řádek) do prázdného listu.

Vytvoření databázových tabulek z listů

  1. Vyberte data z prvního listu včetně záhlaví sloupců.

  2. Klikněte pravým tlačítkem myši na navigační podokno a vyberte příkaz Vložit.

  3. Kliknutím na tlačítko Ano potvrdíte, že první řádek obsahuje záhlaví sloupců.

  4. Opakujte kroky 1–3 pro zbývající listy.

Začátek stránky

Odstranění a úpravy duplicitních dat v jedné tabulce

Vyhledání záznamů, ve kterých se některá pole úplně nebo částečně shodují

Odstranění duplicitních záznamů pomocí odstraňovacího dotazu z jedné tabulky a jejich souvisejících záznamů v jiných tabulkách

Vytvoření a spuštění odstraňovacího dotazu

Vyhledání záznamů, ve kterých se některá pole úplně nebo částečně shodují

  • Vytvořte dotaz pomocí Průvodce vyhledávacím dotazem na duplicitní položky. Dotaz standardně vrací shodné záznamy pouze v případě, že se hodnoty v každém poli shodují znak po znaku. Pokud chcete najít částečné shody, můžete použít v dotazu výraz nebo můžete upravit kód jazyka SQL (Structured Query Language).

  • Volitelně můžete při prohlížení výsledků dotazu v zobrazení Datový list upravit hodnoty polí nebo odstranit některé záznamy.

  • Můžete také použít v dotazu výraz tak, aby zahrnoval hodnoty, které se shodují jen částečně.

Následující postup používá ukázkovou tabulku Zákazníci uvedenou v části Příprava ukázkových dat pro vyzkoušení některých příkladů.

Vytvoření vyhledávacího dotazu na duplicitní položky

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Průvodce dotazem.

  2. V dialogovém okně Nový dotaz klikněte na položku Průvodce vyhledávacím dotazem na duplicitní položky a poté klikněte na tlačítko OK.

  3. V seznamu tabulek vyberte tabulku Zákazníci a klikněte na tlačítko Další.

  4. V seznamu dostupných polí vyberte pole NázevSpolečnosti, Adresa a Město – pole, která chcete porovnávat. Klikněte na tlačítko Další.

  5. V dalším seznamu dostupných polí vyberte pole obsahující data, která chcete zobrazit nebo aktualizovat, nebo pole obsahující data, která vám pomohou odlišit duplicitní záznamy od neduplicitních. Pokud jste použili tabulku Zákazníci, přidejte pole JménoKontaktu a Telefon, protože data v těchto polích vám mohou pomoci najít duplicitní hodnoty a případně zjistit, proč byly tyto hodnoty zadány. Klikněte na tlačítko Další.

  6. Přijměte navržený název dotazu (Duplicitní hodnoty v tabulce Zákazníci) nebo zadejte vlastní název a spusťte dotaz kliknutím na tlačítko Dokončit:

NázevSpolečnosti

Adresa

Město

JménoKontaktu

Telefon

Fourth Coffee

Calle Smith 2

Mexico City

Julian Price

(7) 555-2126

Fourth Coffee

Calle Smith 2

Mexico City

Reshma Patel

(7) 555-2233

  1. Při vytváření tabulky Zákazníci jste si možná všimli více než dvou duplicitních záznamů (tabulka obsahuje čtyři). Ostatní duplicitní záznamy se nezobrazí, protože hodnoty v poli Adresa se neshodují znak po znaku. Dotaz můžete upravit tak, aby vracel hodnoty, které se shodují částečně – postup je popsán v následujících krocích.

Úprava vyhledávacího dotazu na duplicitní položky tak, aby zahrnoval částečné shody

  1. Přepněte dotaz do Zobrazení SQL. Můžete to provést dvěma způsoby:

    • Klikněte pravým tlačítkem myši na kartu dotazu a vyberte příkaz Zobrazení SQL.

    • V pravém dolním rohu okna dotazu klikněte na tlačítko Zobrazení SQL.

  2. Upravte kód v jazyku SQL tak, aby vyhledával a porovnával částečné hodnoty.

    Pokud jste v předchozích krocích použili tabulku Zákazníci, zobrazí se tento příkaz SQL:

    SELECT Customers.[Company Name], Customers.[Address], Customers.[City], Customers.[Contact Name], Customers.[Phone]
    FROM Customers
    WHERE (((Customers.[CompanyName]) In (SELECT [CompanyName] FROM [Customers] As Tmp GROUP BY [CompanyName],[Address],[City] HAVING Count(*)>1 And [Address] = [Customers].[Address] And [City] = [Customers].[City])))
    ORDER BY Customers.[CompanyName], Customers.[Address], Customers.[City];

    Klauzule WHERE používá příkaz SELECT k zjištění skupiny duplicitních položek. Příkaz SELECT vytvoří seznam názvů společností, které se objevují ve více než jednom záznamu se stejnou adresou a městem, a klauzule WHERE pomocí tohoto seznamu názvů omezí výsledky dotazu na duplicitní položky.

    Předpokládejme, že se rozhodnete změnit pole adresy na vrátit částečné shody – tom, že nejdřív sedm znaků adresy se musí shodovat – tak, aby se bude duplicitní potenciální vyplývající z jednoduchého typografických rozdíly. Klauzule WHERE změníte takto:
    WHERE (((Customers.[CompanyName]) In (SELECT [CompanyName] FROM [Customers] As Tmp GROUP BY [CompanyName],Left([Address],7),[City] HAVING Count(*)>1 And Left([Address],7) = Left([Customers].[Address],7) And [City] = [Customers].[City])))Pokud chcete udělat více nebo méně omezující kritéria změnit číslo používané funkce Left. Příklad je možné použít Left([Address],5) podle použití pouze prvních pět znaků.

  3. Po dokončení úprav příkazu klikněte na tlačítko Spustit Obrázek tlačítka . Tím dotaz spustíte a zobrazíte výsledky v zobrazení Datový list.

    Dotaz nyní vrátí čtyři duplicitní záznamy:

Společnosti Název

Adresa

Město

JménoKontaktu

Telefon

Coho Winery

3122 75th Ave. S.W.

Seattle

Pica Guido

(206) 555-2124

Coho Winery

3122 75th St. S.W

Seattle

Christine Hughes

(206) 555-2125

Fourth Coffee

Calle Smith 2

Mexico City

Julian Price

(7) 555-2126

Fourth Coffee

Calle Smith 2

Mexico City

Reshma Patel

(7) 555-2233

Úpravy nebo odstranění záznamů

Proveďte jednu z následujících akcí:

  • Chcete-li upravit hodnotu v poli, vyberte pole a zadejte novou hodnotu. Pokud v daném příkladu Reshma Patel pracuje ve společnosti Fourth Coffee v jiné lokalitě Mexico City, je nutné u tohoto záznamu změnit hodnotu pole Adresa.

  • Chcete-li odstranit celý záznam (řádek), klikněte na volič řádku (prázdné pole na levé straně řádku) a stiskněte klávesu DELETE. Pokud v daném příkladu existuje pouze jedna lokalita Coho Winery a kontaktem je Pica Guido, je nutné druhý záznam Coho Winery odstranit.

Odstranění duplicitních záznamů pomocí odstraňovacího dotazu z jedné tabulky a jejich souvisejících záznamů v jiných tabulkách

Existuje-li příliš mnoho duplicitních položek, než aby bylo možné je vyřešit ručně, zvažte použití odstraňovacího dotazu. Před použitím odstraňovacího dotazu zkontrolujte relace tabulek. Pokud tabulka s duplicitními daty je relačně propojena s jinou tabulkou, měli byste určit, zda jsou tato duplicitní data v tabulce na straně 1 relace 1:N. Můžete to zkontrolovat pomocí nástroje Relace:

  1. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

  2. V okně nástroje Relace vyhledejte tabulky a u každé z nich zkontrolujte příslušný symbol. Má-li jedna tabulka symbol 1 a druhá symbol nekonečno, bude relace 1:N.

  3. Jsou-li data na straně 1 (vedle tabulky je symbol 1), je třeba pro tuto relaci povolit kaskádové odstraňování. Kaskádové odstraňování odstraní záznamy související se záznamem, který chcete odstranit. Zákazník má například mnoho objednávek a vy nechcete při odstraňování jeho záznamů uchovat žádné záznamy o těchto objednávkách.

  4. Pokud se data vyskytují na straně N (vedle tabulky je symbol nekonečno), nezáleží na tom, zda je povoleno kaskádové odstraňování.

Vytvoření a spuštění odstraňovacího dotazu

Důležité : Výsledky odstraňovacího dotazu nelze vrátit zpět. Před spuštěním odstraňovacího dotazu byste měli databázi zálohovat.

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na položku Návrh dotazu.

  2. V dialogovém okně Zobrazit tabulku poklikejte na tabulku, ze které chcete odstranit záznamy.
    V Návrháři dotazu se zobrazí v tabulce. Následující obrázek ukazuje typická tabulka v Návrháři dotazu.

    Tabulka v návrháři dotazů

    1. Tabulka v návrháři dotazů
    2. Návrhová mřížka dotazu

  3. Dvojitým kliknutím na hvězdičku (*) přidáte všechna pole v tabulce do návrhové mřížky. Přidáte-li všechna pole tabulky, umožníte tak, aby odstraňovací dotaz odstranil z tabulky celé záznamy (řádky).

  4. Přidejte jedno nebo více polí, které budete používat k určení záznamů, které chcete odstranit. Předpokládejme například, že zákazník s vámi ukončí spolupráci a vy potřebujete odstranit všechny nevyřízené objednávky tohoto zákazníka. Chcete-li vyhledat pouze tyto záznamy, můžete přidat do návrhové mřížky pole ID zákazníka a Datum objednávky.

  5. Pod právě přidanými poli zadejte do řádku Kritéria v návrhové mřížce příslušná kritéria. Můžete například zadat ID zákazníka, se kterým už nespolupracujete, a datum, od kterého jsou objednávky tohoto zákazníka neplatné.

    Další informace o používání kritérií najdete v článku Příklady kritérií dotazů.

  6. U každého pole kritérií zrušte zaškrtnutí políčka Zobrazit.

  7. Na kartě Návrh klikněte ve skupině Výsledky na Spustit. Zkontrolujte, jestli dotaz vrací záznamy, které chcete odstranit.

  8. Na kartě Návrh klikněte ve skupině Výsledky na položku Návrhové zobrazení.

  9. Na kartě Návrh klikněte ve skupině Typ dotazu na Odstranit.

    Access změní výběrový dotaz na odstraňovací dotaz, skryje řádek Zobrazit v dolní části návrhové mřížky a přidá řádek Odstranit.

  10. Zkontrolujte, zda řádek Odstranit ve sloupci * (všechna pole) zobrazuje možnost From. Ve všech sloupcích kritérií by se mělo zobrazit slovo Kde.

  11. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

  12. Odstranění dat potvrdíte kliknutím na tlačítko Ano.

Skrytí potvrzovací zprávy

Tyto kroky proveďte, pokud nechcete, aby se při každém spuštění odstraňovacího nebo jiného akčního dotazu zobrazovala potvrzovací zpráva.

  1. Na kartě Soubor klikněte na položku Možnosti.

  2. V dialogovém okně Možnosti aplikace Access klikněte na položku Nastavení klienta a v části Úpravy ve skupině Potvrzení zrušte zaškrtnutí políčka Akční dotazy.

Začátek stránky

Vyřešení problému s duplicitními daty ve více tabulkách

Data, která jsou v tabulkách duplicitní, představují obvykle překrývající se záznamy: pro stejnou entitu existuje záznam ve více než jedné tabulce. To může být složité, pokud tabulky nemají přesně stejná pole. Jedna tabulka může například používat celá jména, ale jiná má pro jméno a příjmení samostatná pole. Takováto situace někdy nastane:

  • Při vytváření nové databáze z různých existujících zdrojů dat

  • Při integraci nového zdroje dat do existující databáze

  • Při sloučení dvou podobných databází

Chcete-li tento problém vyřešit, proveďte sloučení všech dat z překrývajících se tabulek do nové tabulky, a rozhodněte, které záznamy mají být odstraněny. Poté odstraňte záznamy, které v této nové tabulce nechcete. Pak používejte novou tabulku jako náhradu za obě staré tabulky.

Vytvoření dotazu, který zobrazí společně všechny záznamy z překrývajících se tabulek

Vytvoření nové tabulky ze záznamů v překrývajících se tabulkách

Označení záznamů, které se mají odstranit z nové tabulky

Vytvoření dotazu pro odstranění nežádoucích duplicitních položek

Vytvoření dotazu, který zobrazí společně všechny záznamy z překrývajících se tabulek

Chcete-li společně zobrazit překrývající se záznamy z více tabulek, vytvořte sjednocovací dotaz. Sjednocovací dotaz obvykle odfiltruje duplicitní položky, pomocí klíčového slova ALL však můžete dát aplikaci Access pokyn, že chcete zobrazit i duplicitní záznamy. Dále byste měli seřadit záznamy podle pole s hodnotami, které chcete porovnat, například s názvy společností nebo jmény kontaktů. Následující postup používá ukázkové tabulky Klienti a Zákazníci uvedené v části Příprava ukázkových dat pro vyzkoušení některých příkladů.

Poznámka : Ve sjednocovacím dotazu lze použít více než dvě tabulky. Stačí přidat klauzuli UNION ALL mezi každou dvojici příkazů SELECT.

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Návrh dotazu.

  2. Dialogové okno Zobrazit tabulku zavřete, aniž byste přidávali do návrhové mřížky tabulky nebo dotazy.

  3. Na kartě Návrh klikněte ve skupině Výsledky na položku Zobrazení a potom na položku Zobrazení SQL.

  4. Vložte do okna následující příkaz SQL.

    SELECT CompanyName, ContactName, Address, City, PostalCode, Phone, "" AS Remove FROM Customers 
    UNION ALL
    SELECT Name, "" AS ContactName, Address, City, "" AS PostalCode, Phone, "" AS Remove FROM Clients
    ORDER BY [Company Name];

    První příkaz SELECT načte záznamy z tabulky Zákazníci. Druhý příkaz SELECT načte záznamy z tabulky Klienti a vytvoří prázdné hodnoty pro pole, která jsou v tabulce Zákazníci, ale ne v tabulce Klienti. Oba příkazy SELECT také obsahují nové pole, které můžete použít později k označení záznamů, které mají být odstraněny. Klauzule UNION ALL spojí záznamy z obou tabulek. Klauzule ORDER BY seřadí záznamy tak, aby duplicitní záznamy následovaly těsně za sebou a bylo možné je snadno porovnat.

    Poznámka : Každý příkaz SELECT ve sjednocovacím dotazu musí vracet shodný počet polí ve stejném pořadí. Odpovídající pole musí mít kompatibilní datové typy s jedinou výjimkou: jako odpovídající pole lze použít pole typů Číslo a Text. Názvy polí se mohou lišit: výsledky dotazu použijí názvy polí z prvního příkazu SELECT.

  5. Na kartě Návrh klikněte ve skupině Výsledky na příkaz Spustit a zkontrolujte výsledky.

  6. Dotaz uložte. Tento dotaz bude použit jako zdroj dat pro novou tabulku.

Vytvoření nové tabulky ze záznamů v překrývajících se tabulkách

Sjednocovací dotaz lze použít jako zdroj dat nového dotazu, který vytváří novou tabulku. Nová tabulka bude obsahovat všechny záznamy z překrývajících se tabulek. Poté můžete záznamy upravit a odstranit ty, které nepotřebujete.

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Návrh dotazu.

  2. V dialogovém okně Zobrazit tabulku klikněte na kartu Dotazy a potom poklikejte na sjednocovací dotaz, který jste vytvořili v předchozí části.

  3. V návrháři dotazu dvojím kliknutím na hvězdičku u sjednocovacího dotazu přidáte všechna jeho pole do výsledků dotazu.

  4. Na kartě Návrh klikněte ve skupině Typ dotazu na položku Vytvářecí.

  5. V dialogovém okně Vytvořit tabulku zadejte název nové tabulky.

  6. Na kartě Návrh klikněte ve skupině Výsledky na Spustit.

Označení záznamů, které se mají odstranit z nové tabulky

Po sloučení dat do nové tabulky tato data zkontrolujte a označte záznamy, které chcete odstranit.

  1. Otevřete novou tabulku.

  2. Zkontrolujte každou sadu duplicitních záznamů a u těch, které chcete odstranit, zadejte do pole Odebrat značku x. Z každé sady duplicitních záznamů byste měli uchovat pouze jeden záznam.

Vytvoření dotazu pro odstranění nežádoucích duplicitních položek

Chcete-li odstranit nežádoucí duplicitní záznamy, postupujte podle pokynů v části Vytvoření a spuštění odstraňovacího dotazu s touto změnou:

  1. V kroku 4 (přidání polí, která mají být použita jako kritéria pro odstranění) přidejte pole Odebrat.

  2. V kroku 5 (zadání kritérií) zadejte do řádku Kritéria u pole Odebrat značku x.

Začátek stránky

Ochrana uživatelů před zadáváním duplicitních dat v tabulce

Zde je několik tipů, které umožňují zabránit uživatelům v zadávání duplicitních dat v tabulce.

  • Nastavte pole tak, aby mohlo obsahovat pouze jedinečné hodnoty.    Proveďte některou z následujících akcí:

    • Nastavte, že toto pole bude primárním klíčem. To lze provést pouze v případě, že tabulka dosud nemá určený primární klíč. Chcete-li nastavit pole jako primární klíč, otevřete tabulku v návrhovém zobrazení, klikněte na požadované pole pravým tlačítkem myši a v místní nabídce klikněte na příkaz Primární klíč Obrázek tlačítka . Pole s primárním klíčem akceptuje pouze jedinečné hodnoty a upozorní uživatele, chtějí-li do něho zadat duplicitní hodnotu.

    • Má-li již tabulka primární klíč a jiné pole, které by mělo obsahovat jedinečné hodnoty, je potenciálním zdrojem duplicitních dat, nastavte vlastnost Indexovat tohoto pole na hodnotu Ano (bez duplicity) podle tohoto postupu:

      1. Klikněte pravým tlačítkem myši na tabulku v navigačním podokně a potom klikněte na příkaz Návrhové zobrazení.

      2. V podokně Vlastnosti pole klikněte na položku Indexovat a z rozevíracího seznamu vyberte možnost Ano (bez duplicity).

  • Určete, že kombinace hodnot v několika polích musí být v každém záznamu jedinečná.    Jako primární klíč tabulky můžete například nastavit kombinaci polí, jako je Jméno, Adresa a Město. Uvědomte si ale, že pokud budete někdy opravdu chtít zadat záznam, který bude mít tyto hodnoty duplicitní, bude třeba toto omezení odebrat, což by mohlo vyžadovat značné množství další práce.

    Při vytváření primárního klíče tvořeného více poli postupujte takto:

    1. Otevřete tabulku v návrhovém zobrazení.

    2. Kliknutím na volič řádku nalevo od prvního pole vyberte celý řádek.

    3. Podržte stisknutou klávesu CTRL a klikněte na voliče řádků dalších polí, která chcete zahrnout do primárního klíče.

    4. Klikněte pravým tlačítkem myši na vybraná pole a vyberte příkaz Primární klíč Obrázek tlačítka .

      Tímto postupem se u všech jednotlivých polí primárního klíče nastaví vlastnost Indexovat na hodnotu Ano (duplicita povolena), takže je pak například možné zadat do více záznamů stejné jméno, adresu nebo město, ale nelze do více záznamů zadat stejnou kombinaci jména, adresy a města. Můžete mít například dvě kontaktní osoby se jménem Jan Dryml, které bydlí na adrese Nádražní 123, pokud obě nežijí v Praze.

Začátek stránky

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

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.

×