Geavanceerd: vereist deskundige codering, interoperabiliteit en vaardigheden voor meerdere gebruikers.Dit artikel is alleen van toepassing op een Microsoft Access-database (. mdb).

Symptomen

De eigenschap voor Data Access Objects (DAO) LastUpdated retourneert onjuiste datums/tijden voor Microsoft Access-formulieren,-rapporten,-macro's en-modules.

Oorzaak

Microsoft Access informeert de Microsoft Jet database engine niet over de wijziging van Access-specifieke objecten (formulieren, rapporten, macro's en modules). Daarom wordt de kolom Data Update in de tabel MSysObjects nooit bijgewerkt naar de juiste datum en tijd. Hetzelfde geldt voor Microsoft Access 2007, die gebruikmaakt van de Microsoft Access-database-engine.

Status

Microsoft heeft bevestigd dat dit probleem zich voordoet in de Microsoft-producten die aan het begin van dit artikel worden vermeld.

Meer informatie

De eigenschap LastUpdated die door DAO wordt geleverd, retourneert de juiste datum/tijd voor database-engine-objecten (tabellen, query's en relaties), maar retourneert alleen de aanmaakdatum, niet de datum van de laatste wijziging voor Microsoft Access-objecten (formulieren, rapporten, macro's en modules). Voordat Microsoft Access 2000 werd gebruikt, gebruikte Microsoft Access een Jet database (. mdb)-bestand voor het opslaan van zowel databaseobjecten (tabellen, query's en relaties) als de Microsoft Access-specifieke objecten (formulieren, rapporten, macro's en modules). De specifieke objecten in Microsoft Access zijn opgeslagen in Jet-systeemtabellen, met name de tabellen MSysObjects en MSysModules (of MSysModules2). De kolom Data Update in de tabel MSysObjects is verantwoordelijk voor het opslaan van de laatste wijzigingsdatum van een object en is de kolom die door de DAO LastUpdated- eigenschap wordt gebruikt om de laatste wijzigingsdatum van een object te retourneren. Wanneer een gebruiker een object in eerdere versies heeft gewijzigd en opgeslagen, heeft Microsoft Access de Jet-database-engine meegedeeld dat het object was gewijzigd en heeft Jet de kolom Data Update bijgewerkt naar de huidige datum en tijd. In Microsoft Access 2000 zijn Access project-bestanden (. ADP) geïntroduceerd, die de mogelijkheid hebben om rechtstreeks verbinding te maken met Microsoft SQL Server-databases zonder de Jet database engine te gebruiken. Omdat ADP-bestanden de Jet database engine (of de Access-database-engine) niet gebruiken, kan de opslagindeling die eerder in Jet-databases voor Access-specifieke objecten werd gebruikt, niet worden gebruikt. Het moest ze opslaan in een nieuwe OLE doc-opslagindeling die toegankelijk is in zowel Jet-databases als Access-projecten. Wanneer de gebruiker in eerste instantie een nieuw specifiek object voor Microsoft Access maakt, zoals een formulier), voert de database-engine nog steeds de huidige datum en tijd in de kolommen Datecreate en Data Update in de tabel MSysObjects in. Wanneer de gebruiker het object echter wijzigt en opslaat, wordt de database-engine niet door Microsoft Access gewaarschuwd. Daarom blijft de kolom Data Update altijd hetzelfde. Bovendien hebt u wellicht gemerkt dat het database venster (in versies voorafgaand aan Access 2007) en het navigatiedeelvenster in Access 2007 of Access 2010 de juiste datum en tijd voor de laatste wijziging van een object weergeeft. Dit komt doordat Microsoft Access een eigen intern mechanisme gebruikt voor het opslaan van de aanmaakdatum en de wijzigingsdatum, onafhankelijk van de database-engine. Helaas worden deze gegevens niet door Microsoft Access in het object model beschikbaar gemaakt. Daarom is er geen programmatische manier om deze informatie te verkrijgen in Microsoft Access.

Het probleem reproduceren

  1. Start Microsoft Access en maak een nieuwe, lege database.

  2. Maak een nieuw, leeg formulier in de ontwerpweergave.

  3. Voeg een tekstvak toe aan het formulier.

  4. Sla het formulier op als Frmlastupdateden sluit het vervolgens.

  5. In Access 2003 en eerdere versies van Access, selecteer de weergave menu en klik op Details. In Access 2007 of Access 2010, klik met de rechtermuisknop op de koptekst van de categorie in het Navigatie deelvenster aan de linkerkant en klik op weergeven op Details. Hiermee worden de gewijzigde en gemaakte datums voor elk object weergegeven. Houd er rekening mee dat zowel de gewijzigde en gemaakte kolommen voor het formulier frmlastupdated zijn ingesteld op dezelfde datum en tijd.

  6. Druk op CTRL + G om het venster direct te openen in Visual Basic editor. (In Access 2007 of Access 2010 moet u eerst de inhoud inschakelen of de database moet op een vertrouwde locatie staan.)

  7. Typ de volgende regel in het venster Direct en druk op ENTER:

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

    Houd er rekening mee dat de geretourneerde datum en tijd overeenkomt met de gewijzigde en gemaakte kolommen in het database venster.

  8. Druk op ALT + F11 om terug te schakelen naar Microsoft Access.

  9. Open het formulier frmLastUpdated in de ontwerpweergave.

  10. Voeg een tweede tekstvak toe aan het formulier en sla het op en sluit het. Houd er rekening mee dat de gewijzigde kolom in het database venster een bijgewerkte datum en tijd voor het formulier bevat.

  11. Herhaal stap 7 en 8.

Opmerking De eigenschap LastUpdated retourneert nog steeds de oorspronkelijke datum en tijd in plaats van de nieuwe datum en tijd weergegeven in de kolom gewijzigd in het database venster.

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?

Bedankt voor uw feedback.

×