Vlastnost Lastupdata objektů DAO (Data Access Objects) vrací nesprávné datum/čas v databázi aplikace Microsoft Access

Pokročilé: vyžaduje znalost kódování, interoperability a dovedností více uživatelů.Tento článek se týká pouze databáze aplikace Microsoft Access (MDB).

Příznaky

Vlastnost Lastupdata objektů DAO (Data Access Objects) vrací nesprávné datum/čas pro formuláře, sestavy, makra a moduly aplikace Microsoft Access.

Příčina

Aplikace Microsoft Access neupozorní databázový stroj Microsoft Jet na změnu objektů specifických pro přístup (formuláře, sestavy, makra a moduly). Proto se sloupec DateUpdate v tabulce Msysobvysunutí nikdy neaktualizuje na správné datum a čas. Stejné chování platí pro aplikaci Microsoft Access 2007, která používá databázový stroj Microsoft Access.

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.

Další informace

Vlastnost Lastupdata poskytnutá rozhraním DAO vrací správné datum a čas pro objekty databázového stroje (tabulky, dotazy a vztahy), ale vrací pouze datum vytvoření, nikoli datum poslední změny pro specifické objekty aplikace Microsoft Access (formuláře, sestavy, makra a moduly). Před aplikací Microsoft Access 2000 aplikace Microsoft Access použila k ukládání databázových objektů (tabulek, dotazů a vztahů) i objektů specifických pro aplikaci Microsoft Access (formuláře, sestavy, makra a moduly) soubor databáze Jet (MDB). Aplikace Microsoft Access ukládl své specifické objekty do tabulek systému Jet, konkrétně do tabulek Msysobvysunutí a Msysmodulí (nebo MSysModules2). Sloupec DateUpdate v tabulce Msysobvysunutí je zodpovědný za uložení data poslední změny objektu a je sloupcem, který vlastnost DAO lastupdata používá k vrácení data poslední změny objektu. Když uživatel upravil a uložil objekt v dřívějších verzích, aplikace Microsoft Access oznámila databázovému stroji Jet, že objekt byl upraven, a databázový stroj Jet aktualizoval sloupec DateUpdate na aktuální datum a čas. Aplikace Microsoft Access 2000 zavedla soubory projektu aplikace Access (ADP), které mají možnost přímého připojení k databázím serveru Microsoft SQL Server bez použití databázového stroje Jet. Vzhledem k tomu, že soubory ADP nepoužívají databázový stroj Jet (ani databázový stroj aplikace Access), nebylo možné použít stejný formát úložiště, který byl dříve použit v databázích jet pro objekty specifické pro přístup. Musely být uloženy v novém formátu úložiště OLE, který je přístupný v databázích jet i v projektech aplikace Access. Když uživatel zpočátku vytvoří nový specifický objekt aplikace Microsoft Access, například formulář, databázový stroj stále zadá aktuální datum a čas do pole DateCreate a aktualizuje sloupce v tabulce msysobvysunutí. Pokud však uživatel tento objekt upraví a uloží, aplikace Microsoft Access neoznámí databázovému stroji; Proto zůstává sloupec DateUpdate vždy stejný. Kromě toho jste si mohli všimnout, že okno databáze (ve verzích předcházejících aplikaci Access 2007) a navigační podokno v aplikaci Access 2007 nebo Access 2010 zobrazuje správné datum a čas poslední změny objektu. Je to způsobeno tím, že aplikace Microsoft Access používá vlastní interní mechanismus pro uložení vytvořeného data a data změny, nezávisle na databázovém stroji. Aplikace Microsoft Access bohužel tyto informace ve svém objektovém modelu nevystavuje. neexistuje tedy žádný programový způsob, jak získat tyto informace v aplikaci Microsoft Access.

Kroky pro reprodukci chování

  1. Spusťte aplikaci Microsoft Access a vytvořte novou prázdnou databázi.

  2. V návrhovém zobrazení vytvořte nový prázdný formulář.

  3. Přidejte do formuláře textové pole.

  4. Uložte formulář jako Frmlastupdataa zavřete jej.

  5. V aplikaci Access 2003 a dřívějších verzích aplikace Access vyberte nabídku Zobrazit a klepněte na tlačítko Podrobnosti. V aplikaci Access 2007 nebo Access 2010 klepněte pravým tlačítkem myši na záhlaví kategorie v navigačním podokně vlevo a klepněte na příkaz Zobrazit podle podrobností. Tím se zobrazí data pro změněné a vytvořené pro každý objekt. Všimněte si, že změněné i vytvořené sloupce pro formulář Frmlastupdata jsou nastaveny na stejné datum a čas.

  6. Stisknutím kombinace kláves CTRL + G otevřete okno Immediate v editoru jazyka Visual Basic. (V aplikaci Access 2007 nebo Access 2010 je třeba nejprve povolit obsah nebo databázi v důvěryhodném umístění.)

  7. Do okna Immediate zadejte následující řádek a stiskněte klávesu ENTER:

    ?CurrentDb.Containers("Forms").Documents("frmLastUpdated").LastUpdated

    Všimněte si, že vrácené datum a čas odpovídají změnovanému a vytvořenému sloupci v okně databáze.

  8. Stisknutím kombinace kláves ALT + F11 přepněte zpět do aplikace Microsoft Access.

  9. Otevřete formulář Frmlastupdata v návrhovém zobrazení.

  10. Přidejte do formuláře druhé textové pole a potom jej uložte a zavřete. Povšimněte si, že upravený sloupec v okně databáze obsahuje aktualizované datum a čas pro formulář.

  11. Opakujte kroky 7 a 8.

Poznámka: Vlastnost Lastupdata stále vrací původní datum a čas místo nového data a času zobrazeného ve sloupci změněno v okně databáze.

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×