2013-08-26 4 views
0

MS Access 2003의 .mdb 파일이 있으며이 데이터베이스를 사용한 마지막 날짜를 알아야합니다. 우리는 프로그램 적으로 .mdb 파일을 읽고 마지막으로 사용한 날짜를 찾아야합니다. 또한 마지막으로 데이터베이스를 수정 한 날짜를 찾아야합니다.C#에서 .mdb 파일의 마지막 사용 날짜를 찾는 방법

개발 환경 : - 2010 Visul 스튜디오, C#을 Windows Form에

솔루션 : -이 미래에 다른 사람을 도움이 될 수 있습니다.

string query = "SELECT MSysObjects.DateCreate,MSysObjects.DateUpdate FROM MSysObjects WHERE Type=2"; 
string[] arrDate = getDBCreationAndModificationDates(query); 

private string[] getDBCreationAndModificationDates(string query) 
     { 
      string[] arrDate = new string[2]; 
      dao.Database db = appclass.CurrentDb(); 
      dao.Recordset rs = null; 
      rs = db.OpenRecordset(query, Type.Missing, Type.Missing, Type.Missing); 
      string strDate=string.Empty; 
      if (rs != null) 
      { 
       arrDate[0] = rs.Fields[0].Value.ToShortDateString(); 
       arrDate[1] = rs.Fields[1].Value.ToShortDateString(); 
      } 
      rs.Close(); 
      db.Close(); 
      return arrDate; 
     } 
+0

* 사용 된 *에 따라 다릅니다. 누군가 데이터베이스를 방금 연 경우에 사용 되었습니까? 데이터를 변경하고 보고서를 실행해야합니까? – Yuck

+1

'mdb' 파일의 마지막 사용 날짜도'normal' 파일의 마지막 사용 날짜입니다. –

+0

http://msdn.microsoft.com/en-us/library/system.io.file.getlastaccesstime.aspx –

답변

1

.MDB 파일에 File.GetLastWriteTime을 사용하십시오.

지정된 파일 또는 디렉토리가 마지막으로 기록 된 날짜 및 시간을 에게 반환합니다.

DateTime dt = File.GetLastWriteTime(path); 
+2

조금 더 주무세요. 언제 왜 다른 것을 사용합니까? –

+0

@RobertHarvey, 읽기를 위해 파일을 열어도 수정되지 않으므로'GetLastAccessTime'에 대해 확실하지 않습니다. GetLastWriteTime – user2711965

+0

GetLastAccessTime은 거의 사용하지 않기 때문에 사용하지 않을 것입니다. (기본 Windows 설치에서는 사용 가능하지 않습니다.) –

2

당신은에서는 FileInfo 클래스를 사용하여 정보를 얻는 시도 할 수 있습니다.

System.IO.FileInfo fi = new System.IO.FileInfo("Path to the file"); 
System.DateTime strLastAccessed = fi.LastAccessTime; 
System.DateTime strLastModified = fi.LastWriteTime; 
+0

Nicholas, 데이터베이스가 아닌 파일의 최종 액세스 시간을 제공합니다. 예를 들어 데이터베이스가 3 일 전에 액세스되었지만 .mdb 파일이 오늘 다른 시스템에 복사 된 경우 3 일이 아닌 오늘 날짜가 제공됩니다. – user2525155

+0

파일의 정보를 신뢰할 수 없다면 모든 테이블에 마지막으로 수정 된 열을 넣고 해당 열을 삽입/업데이트하도록 모든 쿼리를 변경하는 등의 사용자 지정 솔루션을 마련해야합니다. 그런 다음 각 테이블의 해당 열을 확인하고 마지막으로 수정 한 날짜를 다시보고하라는 또 다른 쿼리를 만들어야합니다. 많은 수의 쿼리/매크로가있는 대규모 데이터베이스 인 경우 특히 그렇습니다. –

+0

테이블 수준에서는 각 테이블에 추가 열을 가질 필요가 없습니다. MS Access 테이블 수준에서 마지막 수정 된 정보를 제공합니다 생각합니다. 나는 master/system db에 마지막으로 업데이트 된 날짜를 표시하는 단일 속성이 있는지 궁금 해서요. 그렇지 않으면 모든 테이블을 수정하여 날짜를 찾고 마지막으로 날짜를 선택해야합니다. 또한 n 개의 데이터베이스가 있으며 시스템의 모든 .mdb 파일을 검색하여 보고서를 생성해야합니다. – user2525155