Thuộc tính đối tượng truy cập dữ liệu (DAO) LastUpdated trả về ngày/thời gian không đúng trong cơ sở dữ liệu Microsoft Access

Nâng cao: yêu cầu chuyên gia mã hóa, tương tác và kỹ năng đa người dùng.Bài viết này chỉ áp dụng cho cơ sở dữ liệu Microsoft Access (. MDB).

Triệu chứng

Thuộc tính đối tượng truy cập dữ liệu (DAO) Lastupdated trả về ngày/thời gian không đúng cho các hình thức Microsoft Access, báo cáo, macro và mô-đun.

Nguyên nhân

Microsoft Access không thông báo cho cơ sở dữ liệu Microsoft Jet về việc sửa đổi các đối tượng truy cập cụ thể (biểu mẫu, báo cáo, macro và mô-đun); do đó, Dateupdate cột trong bảng Msysobjects không bao giờ Cập Nhật đúng ngày và giờ. Hành vi tương tự là đúng cho Microsoft Access 2007, sử dụng cơ sở dữ liệu Microsoft Access.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê ở đầu bài viết này.

Thông tin Bổ sung

Thuộc tính Lastupdated cung cấp bởi Dao trả về đúng ngày/giờ cho các đối tượng cơ sở dữ liệu (bảng, truy vấn và mối quan hệ), nhưng nó chỉ trả lại ngày tạo, không ngày sửa đổi cuối cùng cho Microsoft Access cụ thể đối tượng (biểu mẫu, báo cáo, macro và mô-đun). Trước khi truy cập Microsoft 2000, Microsoft Access sử dụng tệp cơ sở dữ liệu máy bay phản lực (. MDB) để lưu trữ cả hai đối tượng cơ sở dữ liệu (bảng, truy vấn và mối quan hệ) cũng như các đối tượng dành riêng cho Microsoft Access (biểu mẫu, báo cáo, macro và mô-đun). Microsoft Access lưu trữ các đối tượng cụ thể trong bảng hệ thống Jet, đặc biệt MSysObjects và MSysModules (hoặc MSysModules2) bảng. Dateupdate cột trong bảng MSysObjects chịu trách nhiệm lưu trữ một đối tượng cuối ngày sửa đổi và cột thuộc tính dao lastupdated sử dụng để trả lại một đối tượng cuối ngày sửa đổi. Khi người dùng sửa đổi và lưu một đối tượng trong phiên bản trước đó, Microsoft Access thông báo công cụ cơ sở dữ liệu máy bay phản lực mà đối tượng đã được sửa đổi, và máy bay phản lực Cập Nhật Dateupdate cột ngày hiện tại và thời gian. Microsoft Access 2000 giới thiệu các tệp dự án truy cập (. ADP), có khả năng kết nối trực tiếp với cơ sở dữ liệu Microsoft SQL Server mà không cần sử dụng công cụ máy bay phản lực. Vì các tệp ADP không sử dụng cơ sở dữ liệu máy bay phản lực (hoặc cơ sở dữ liệu Access), truy cập không thể sử dụng cùng một định dạng lưu trữ đã được sử dụng trong cơ sở dữ liệu máy bay phản lực cho các đối tượng cụ thể truy cập. Nó phải lưu trữ chúng trong một định dạng lưu trữ OLE doc mới có thể truy cập vào cơ sở dữ liệu máy bay phản lực và dự án Access. Khi người dùng ban đầu tạo một đối tượng cụ thể Microsoft Access mới, chẳng hạn như biểu mẫu), cơ sở dữ liệu vẫn nhập ngày hiện tại và thời gian vào Datecreate và dateupdate cột trong bảng msysobjects. Tuy nhiên, khi người dùng sửa đổi và lưu các đối tượng, Microsoft Access không thông báo cho cơ sở dữ liệu công cụ; do đó, Dateupdate cột luôn ở cùng. Ngoài ra, bạn có thể thấy rằng cửa sổ cơ sở dữ liệu (trong phiên bản trước khi truy cập 2007) và ngăn điều hướng trong Access 2007 hoặc truy cập 2010 Hiển thị đúng ngày và giờ cho một đối tượng sửa đổi cuối cùng. Điều này là do Microsoft Access sử dụng cơ chế nội bộ để lưu trữ ngày tạo và ngày sửa đổi, độc lập của cơ sở dữ liệu. Thật không may, Microsoft Access không tiếp xúc thông tin này trong mô hình đối tượng; do đó, không có chương trình cách để nhận thông tin này trong Microsoft Access.

Các bước để tái tạo hành vi

  1. Khởi động Microsoft Access, và sau đó tạo một cơ sở dữ liệu trống mới.

  2. Tạo một hình thức trống mới trong dạng xem thiết kế.

  3. Thêm một hộp văn bản vào biểu mẫu.

  4. Lưu dạng Frmlastupdated, và sau đó đóng lại.

  5. Trong Access 2003 và các phiên bản trước của Access, chọn Menu xem và bấm vào chi tiết. Trong Access 2007 hoặc Access 2010, nhấp chuột phải vào tiêu đề thể loại trong ngăn điều hướng bên trái và nhấp vào xem theo chi tiết. Điều này sẽ hiển thị ngày sửa đổi và tạo cho mỗi đối tượng. Lưu ý rằng sửa đổi và tạo cột cho biểu mẫu frmlastupdated được đặt thành cùng ngày và giờ.

  6. Nhấn CTRL + G để mở cửa sổ ngay lập tức trong Visual Basic Editor. (Trong Access 2007 hoặc Access 2010, trước tiên bạn phải cho phép nội dung hoặc cơ sở dữ liệu phải ở vị trí tin cậy.)

  7. Gõ dòng sau vào cửa sổ ngay lập tức, và sau đó nhấn ENTER:

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

    Lưu ý rằng ngày và giờ trở lại tương ứng với cột đã sửa đổi và tạo trong cửa sổ cơ sở dữ liệu.

  8. Nhấn ALT + F11 để chuyển trở lại Microsoft Access.

  9. Mở biểu mẫu frmLastUpdated trong giao diện thiết kế.

  10. Thêm một hộp văn bản thứ hai vào biểu mẫu, và sau đó lưu và đóng nó. Lưu ý rằng cột sửa đổi trong cửa sổ cơ sở dữ liệu có một ngày và thời gian Cập Nhật cho biểu mẫu.

  11. Lặp lại bước 7 và 8.

Lưu ý Thuộc tính Lastupdated vẫn trả về ngày và giờ ban đầu thay vì ngày mới và thời gian hiển thị trong cột sửa đổi trong cửa sổ cơ sở dữ liệu.

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Cảm ơn phản hồi của bạn!

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×