고급: 전문가 코딩, 상호 운용성 및 다중 사용자 기술이 필요합니다.이 문서는 Microsoft 액세스 데이터베이스(.mdb)에만 적용됩니다.

증상

DAO(데이터 액세스 개체) LastUpdated 속성은 Microsoft Access 양식, 보고서, 매크로 및 모듈에 대해 잘못된 날짜/시간을 반환합니다.

원인

Microsoft Access는 액세스 관련 개체(양식, 보고서, 매크로 및 모듈)의 수정에 대해 Microsoft Jet 데이터베이스 엔진에 알리지 않습니다. 따라서 MSysObjects 테이블의 DateUpdate 열은 올바른 날짜와 시간으로 업데이트되지 않습니다. 동일한 동작은 Microsoft 액세스 데이터베이스 엔진을 사용하는 Microsoft Access 2007에서도 마찬가지입니다.

상태

Microsoft는 이 문서의 시작 부분에 나열된 Microsoft 제품의 문제임을 확인했습니다.

추가 정보

DAO에서 제공하는 LastUpdated 속성은 데이터베이스 엔진 개체(테이블, 쿼리 및 관계)에 대한 올바른 날짜/시간을 반환하지만 Microsoft Access 특정 개체(양식, 보고서, 매크로 및 모듈)에 대한 마지막 수정날짜가 아닌 생성 날짜만 반환합니다. Microsoft Access 2000 이전에는 Microsoft Access가 Jet 데이터베이스(.mdb) 파일을 사용하여 데이터베이스 개체(테이블, 쿼리 및 관계)와 Microsoft Access 관련 개체(양식, 보고서, 매크로 및 모듈)를 모두 저장했습니다. Microsoft Access는 특정 개체를 제트 시스템 테이블, 특히 MSysObjects 및 MSysModules2(또는 MSysModules2) 테이블에 저장했습니다. MSysObjects 테이블의 DateUpdate 열은 개체의 마지막 수정 날짜를 저장하며 DAO LastUpdate 속성이 개체의 마지막 수정 날짜를 반환하는 데 사용하는 열입니다. 사용자가 이전 버전에서 개체를 수정하고 저장하면 Microsoft Access에서 Jet 데이터베이스 엔진에 개체가 수정되었음을 알리고 Jet는 DateUpdate 열을 현재 날짜 및 시간으로 업데이트했습니다. Microsoft Access 2000은 Jet 데이터베이스 엔진을 사용하지 않고 Microsoft SQL Server 데이터베이스에 직접 연결할 수 있는 액세스 프로젝트(.adp) 파일을 도입했습니다. ADP 파일은 Jet 데이터베이스 엔진(또는 Access Database Engine)을 사용하지 않으므로 Access는 Access 관련 개체에 대해 Jet 데이터베이스에서 이전에 사용한 것과 동일한 저장소 형식을 사용할 수 없습니다. Jet 데이터베이스와 Access 프로젝트 모두에서 액세스할 수 있는 새로운 OLE 문서 저장소 형식으로 저장해야 했습니다. 사용자가 처음에 폼과 같은 새 Microsoft Access 특정 개체를 만들 때 데이터베이스 엔진은 여전히 현재 날짜와 시간을 DateCreate 및 DateUpdate 항목MSysObjects 테이블의 열에 입력합니다. 그러나 사용자가 개체를 수정하고 저장할 때 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를 눌러 시각적 기본 편집기에서 즉시 창을 엽니다. (Access 2007 또는 Access 2010에서는 먼저 콘텐츠를 사용하도록 설정하거나 데이터베이스가 신뢰할 수 있는 위치에 있어야 합니다.)

  7. 다음 줄을 바로 창에 입력한 다음 ENTER를 누릅니다.

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

    반환된 날짜와 시간은 데이터베이스 창의 수정 및 생성 열에 해당합니다.

  8. ALT+F11을 눌러 Microsoft 액세스로 다시 전환합니다.

  9. 디자인 뷰에서 frmLast업데이트 양식을 엽니다.

  10. 양식에 두 번째 텍스트 상자를 추가한 다음 저장하고 닫습니다. 데이터베이스 창의 수정된 열에는 양식에 대한 업데이트된 날짜와 시간이 포함되어 있습니다.

  11. 7단계와 8단계를 반복합니다.

참고 사항LastUpdate 속성은 데이터베이스 창에서 수정된 열에 표시된 새 날짜 및 시간 대신 원래 날짜와 시간을 반환합니다.

추가 도움이 필요하신가요?

기술 향상

교육 살펴보기 >

새로운 기능 우선 가져오기

Microsoft Insider 참가 >

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

의견 주셔서 감사합니다!

×