MartyConnelly
martyconnelly at shaw.ca
Thu Aug 12 15:47:16 CDT 2004
If you need more detail, this gives you last write,creation and last
access date
Option Compare Database
Option Explicit
Private Declare Function FindFirstFile Lib "kernel32" Alias _
"FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As _
WIN32_FIND_DATA) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" _
(lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" _
(lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
'get the file's datetime stamp
Private Declare Function GetFileTime Lib "kernel32" _
(ByVal hFile As Long, lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, _
lpLastWriteTime As FILETIME) As Long
Const MAX_PATH = 260
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
'used to store timestamps from GetFileTime API call
Public Type FileTimeStamps
ftCreate As Date
ftAccess As Date
ftModify As Date
End Type
Sub test()
Dim FileData As WIN32_FIND_DATA
Dim FT As FILETIME
Dim ST As SYSTEMTIME
Dim lretval As Long
FileData.cFileName = Space$(MAX_PATH)
lretval = FindFirstFile("C:\Access files\Snapscreenform.mdb", FileData)
Debug.Print FileData.cFileName
Debug.Print ConvertGetFileTime(FileData.ftCreationTime)
Debug.Print ConvertGetFileTime(FileData.ftLastAccessTime)
Debug.Print ConvertGetFileTime(FileData.ftLastWriteTime)
Debug.Print FileDateTime("C:\Access files\Snapscreenform.mdb")
Debug.Print FileData.ftCreationTime.dwHighDateTime & _
FileData.ftCreationTime.dwLowDateTime
End Sub
Private Function ConvertGetFileTime(FT As FILETIME) As Date
'convert the low and high times to dates
Dim lngWFD As Long
Dim ST As SYSTEMTIME
Dim LOCTime As FILETIME
'convert to your time, not GMT
FileTimeToLocalFileTime FT, LOCTime
FileTimeToSystemTime LOCTime, ST
ConvertGetFileTime = _
DateSerial(ST.wYear, ST.wMonth, ST.wDay) + _
TimeSerial(ST.wHour, ST.wMinute, ST.wSecond)
End Function
Arthur Fuller wrote:
>That will work where the scripting runtime is installed, but IME almost
>every company forbids its installation because it is so potentially
>dangerous.
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
>paul.hartland at fsmail.net
>Sent: Thursday, August 12, 2004 4:15 AM
>To: Access Developers discussion and problem solving
>Subject: Re: [AccessD] Date Modified
>
>
>Rocky,
>If you set a reference to Microsoft Scripting Runtime then add the
>following code: Dim fsys As New FileSystemObject Dim dtProductsCSV As
>Date Dim fProductsCSV As Object
>
>Set fProductsCSV = fsys.GetFile(FilePath & FileName) dtProductsCSV =
>fProductsCSV.DateLastModified
>
>
>
>
>
>
>Message date : Aug 12 2004, 01:53 AM
>>From : "Rocky Smolin - Beach Access Software"
>To : AccessD at databaseadvisors.com
>Copy to :
>Subject : [AccessD] Date Modified
>Dear List:
>
>Is there a method to retrieve the Date Modified from a file?
>
>TIA
>
>Rocky Smolin
>Beach Access Software
>http://www.e-z-mrp.com
>
>--
>_______________________________________________
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>
>
--
Marty Connelly
Victoria, B.C.
Canada