Данни за достъп обекти (DAO) последно актуализиран свойство връща неправилни дати/часове в базата данни на Microsoft Access

Advanced: изисква експертно кодиране, оперативна съвместимост и многопотребителски умения.Тази статия се отнася само за база данни на Microsoft Access (. mdb).

Симптоми

Обекти за достъп до данни (DAO) последно актуализиран свойство връща неправилни дати/часове за Microsoft Access формуляри, отчети, макроси и модули.

Причина

Microsoft Access не уведомява двигателя на базата данни на Microsoft Jet за промяната на обектите, специфични за Access (формуляри, отчети, макроси и модули); Затова Dateupdate колона в таблицата msssssssa никога не се актуализира точната дата и час. Същото поведение е вярно за Microsoft Access 2007, който използва ядрото на базата данни на Microsoft Access.

Статут

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в началото на тази статия.

Повече информация

Последното актуализирано свойство, ПРЕДОСТАВЕНО от DAO, връща правилната дата/час за обекти на ядрото на базата данни (таблици, заявки и релации), но връща само датата на създаване, а не Последната промяна на датата за специфични обекти на Microsoft Access (формуляри, отчети, макроси и модули). Преди Microsoft Access 2000, Microsoft Access използва файл с база данни Jet (. mdb), за да съхранява и двата обекта на базата данни (таблици, заявки и релации), както и обектите на Microsoft Access-специфични обекти (формуляри, отчети, макроси и модули). Microsoft Access съхранява своите конкретни обекти в таблици Jet система, по-специално на Msysssdei и mthe модули (или MSysModules2) таблици. Колоната Dateupdate в таблицата Мsssssssdes е отговорен за съхранение на последната дата на модифициране на обект и е колоната, която се използва DAO lastupdated свойство за връщане на обект Последна промяна дата. Когато потребител модифициран и записан обект в по-стари версии, Microsoft Access уведоми двигателя Jet база данни, че обектът е променен и Jet актуализира Dateupdate колона на текущата дата и час. Microsoft Access 2000 въведени файлове на проект на Access (. ADP), които имат възможност за свързване директно към бази данни на Microsoft SQL Server без използване на двигателя на база данни Jet. Тъй като ADP файлове не използват ядрото на базата данни Jet (или ядрото на базата данни на Access), Access не може да използва същия формат за съхранение, използван преди това в бази данни Jet за достъп специфични обекти. Тя трябваше да ги съхранявате в нов формат OLE DOC памет, която е достъпна в бази данни Jet и достъп до проекти. Когато потребителят първоначално създава нов Microsoft Access конкретен обект, като например формуляр), ядрото на базата данни все още влиза текущата дата и час в Datecreate и Datecreate колони в таблицата Обаче когато потребителят променя и записва обекта, Microsoft Access не уведомява двигателя на базата данни; Ето защо колоната Dateupdate винаги остава същата. Освен това може да сте забелязали, че прозорецът на базата данни (във версии преди Access 2007) и навигационния екран в Access 2007 или Access 2010 показва правилната дата и час за последната модификация на обекта. Това е така, защото Microsoft Access използва собствен вътрешен механизъм за съхранение на датата, създадена и дата на модифициране, независимо от двигателя на базата данни. За съжаление Microsoft Access не излага тази информация в обектния си модел; Затова няма програмен начин да стигнете до тази информация в Microsoft Access.

Стъпки за възпроизвеждане на поведението

  1. Стартирайте Microsoft Access и след това създайте нова празна база данни.

  2. Създаване на нов, празен формуляр в изглед за проектиране.

  3. Добавяне на текстово поле към формуляра.

  4. Запишете формуляра като Frmlastupdatedи след това го затворете.

  5. В Access 2003 и по-стари версии на Access изберете менюто изглед и щракнете върху подробности. В Access 2007 или Access 2010 щракнете с десния бутон върху заглавката на категорията в навигационния екран вляво и щракнете върху изглед по подробни данни. Това показва променените и създадените дати за всеки обект. Имайте предвид, че модифицирани и създадени колони за frmlastupdated формуляр са зададени на същата дата и час.

  6. Натиснете CTRL + G, за да отворите прозореца в редактора на Visual Basic. (В Access 2007 или Access 2010 трябва първо да разрешите съдържанието или базата данни трябва да е в надеждно местоположение.)

  7. Въведете следния ред в прозореца и след това натиснете ENTER:

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

    Имайте предвид, че върнатите дата и час съответстват на променените и създадените колони в прозореца на базата данни.

  8. Натиснете ALT + F11 за да превключите обратно към Microsoft Access.

  9. Отворете frmLastUpdated формуляр в изглед за проектиране.

  10. Добавете второ текстово поле към формуляра и след това го запишете и затворете. Обърнете внимание, че променената колона в прозореца на базата данни съдържа актуализирана дата и час за формуляра.

  11. Повторете стъпки 7 и 8.

Забележка: Свойството " последно актуализирано " все още връща оригиналната дата и час вместо новата дата и час, показвани в променената колона в прозореца на базата данни.

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×