+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

Interrogare la data di creazione/aggiormanento di un file

  1. #1
    L'avatar di ceklo
    ceklo non è in linea Scribacchino
    Post
    529
    Like Inviati  
    0
    Like Ricevuti  
    0
    Cari amici tutti,

    Desidero sapere come fare per interrogare la data di creazione, ultimo accesso e modifica di alcuni file.

    In particolare mi interessa sapere la data dell'ultima modifica per sostituire un file con un'altro con lo stesso nome .

    Ho fatto una procedura di sincronizzazione dei dati presenti su un portatile, alla pressione di un pulsante faccio UPLOAD di tutto il file verso il server.
    Ovviamente devo impedire la cosa se, la data del file sul portatile è inferiore alla data del file presente sul server.

    Io con le API non sono esperto, anzi non ne so nulla. Aiuto

    Grazie
    ceklo

  2. #2
    L'avatar di StegcO
    StegcO non è in linea Scolaretto
    Post
    421
    Like Inviati  
    0
    Like Ricevuti  
    0
    Onestamente non lo sò, hai cercato su Google? Così a occhio e croce, se ti aiuti con DB?
    ℹ️ Leggi di più su StegcO ...

  3. #3
    Lucax non è in linea Novello
    Post
    10
    Like Inviati  
    0
    Like Ricevuti  
    0
    Potresti utilizzare FileDateTime

  4. #4
    L'avatar di maximum
    maximum non è in linea Scolaretto
    Post
    468
    Like Inviati  
    0
    Like Ricevuti  
    0
    Io ho un progettino che legge tutte le proprietà di un file e le stampa.
    In un modulo .bas utilizzo questa routine:

    'Recupera in una collection le proprietà del file in input
    Public Function FileProperties(sPath As String, sFileName As String) As Collection
    
        Dim oShell As Object
        Dim oFolder As Object
        Dim oItem As Object
        
        Dim arrProps(41)
        Dim tmpCol As New Collection
        
        Set oShell = CreateObject("Shell.Application")
        Set oFolder = oShell.Namespace(sPath & "")
        
        For i = 0 To 40
            arrProps(i) = oFolder.GetDetailsOf(oFolder.Items, i)
        Next
        
        For Each oItem In oFolder.Items
            If LCase(oItem.Name) = LCase(sFileName) Then
                For i = 0 To 40
                    If arrProps(i) <> "" Then
                        tmpCol.Add oFolder.GetDetailsOf(oItem, i), arrProps(i)
                    End If
                Next
                Exit For
            End If
        Next
        
        Set FileProperties = tmpCol
        Set tmpCol = Nothing
        Set oFolder = Nothing
        Set oShell = Nothing
    
    End Function
    
    Mentre sulla mia forma il seguente codice per stampare la data di ultima modifica del file:
    msgbox clProps(4)
    
    Ti rimando ad un 3d proprio di questo forum, dove puoi trovare l'elenco completo delle proprietà che puoi leggere attraverso la collection clProps , eccolo qua --> http://forum.masterdrive.it/visual-b...ile-vb6-29485/
    Spero ti possa essere utile.

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,832
    Like Inviati  
    0
    Like Ricevuti  
    25
    E' la prima cosa fatta che ho trovato...

    How to use FindFirstFile Win32 API from Visual Basic code

    Ciao
    ℹ️ Leggi di più su @Alex ...

  6. #6
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Post
    1,164
    Like Inviati  
    0
    Like Ricevuti  
    0
    Visto che è un pò che non posto più e avevo voglia di farlo ti dò una soluzione fatta in casa con una manciata di API

    Option Explicit
    
    'Funzioni Api
    Public Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
    Public Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
    Public Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
    Public Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    
    'Costanti necessarie alle api
    Public Const OFS_MAXPATHNAME = 128
    Public Const OF_READ = &H0
    
    'Tipi necessari alle Api
    Public 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
    
    Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type
    
    Public Type OFSTRUCT
            cBytes As Byte
            fFixedDisk As Byte
            nErrCode As Integer
            Reserved1 As Integer
            Reserved2 As Integer
            szPathName(OFS_MAXPATHNAME) As Byte
    End Type
    
    Sub Main()
    
        Dim s_PathFile As String
        Dim n_HandleFile As Long
        
        Dim OF As OFSTRUCT
        
        Dim FT_Creazione As FILETIME
        Dim FT_UltimoAccesso As FILETIME
        Dim FT_UltimoScrittura As FILETIME
        
        Dim ST_Creazione As SYSTEMTIME
        Dim ST_UltimoAccesso As SYSTEMTIME
        Dim ST_UltimoScrittura As SYSTEMTIME
        
        'Leggo il percorso del file
        s_PathFile = InputBox("Inserisci il percorso del file", , Environ("SystemDrive") & "\" & Dir(Environ("SystemDrive")))
        
        'Apro il file in modo da ottenerne l'Handle
        n_HandleFile = OpenFile(s_PathFile, OF, OF_READ)
        
        'Ottengo le date di creazione,accesso,scrittura
        GetFileTime n_HandleFile, FT_Creazione, FT_UltimoAccesso, FT_UltimoScrittura
        
        'Converto la struttura FILETIME in una struttura SYSTEMTIME
        FileTimeToSystemTime FT_Creazione, ST_Creazione
        FileTimeToSystemTime FT_UltimoAccesso, ST_UltimoAccesso
        FileTimeToSystemTime FT_UltimoScrittura, ST_UltimoScrittura
        
        'Comunico le informazioni
        MsgBox "Il file " & s_PathFile & _
            " è stato creato il " & Format(ST_Creazione.wDay & "/" & ST_Creazione.wMonth & "/" & ST_Creazione.wYear, "dd/mm/yyyy") & _
            ", ultima lettura il " & Format(ST_UltimoAccesso.wDay & "/" & ST_UltimoAccesso.wMonth & "/" & ST_UltimoAccesso.wYear, "dd/mm/yyyy") & _
            ", ultima modifica il " & Format(ST_UltimoScrittura.wDay & "/" & ST_UltimoScrittura.wMonth & "/" & ST_UltimoScrittura.wYear, "dd/mm/yyyy"), _
            vbInformation, "FileInformation"
        
    End Sub
    
    Fammi sapere se ti va bene
    ℹ️ Leggi di più su spikexx84 ...

  7. #7
    L'avatar di ceklo
    ceklo non è in linea Scribacchino
    Post
    529
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buon giorno,

    Mi rendo conto che tutto succede con una velocità impressionante, e quando torno dalle mie assenze, la sorpresa è piacevolissima.

    Peccato non riesca ad essere sempre presente per ringraziarvi con la prontezza che merita la vostra generosità.

    Grazie delle risposte, mi attivo per adattare i vostri suggerimenti alle mie esigenze.

    Purtroppo tra ieri (quando ho iniziato la discussione) e oggi sono stato molto occupato con le mie attività. Ma ho proseguito con i miei ragionamenti prima di mettere mano al codice. Ho aggiornato anche le premesse e mi serve inoltre sapere cosa succede se il file da sostituire è in uso. e cosa capita se vado a scrivere "sopra" UN FILE APERTO. Il SO dovrebbe impedirlo, no? Mi manda in errore la mia applicazione?

    Grazie
    Saluti
    Ceklo

    Grazie

  8. #8
    L'avatar di amanu86
    amanu86 non è in linea Scolaretto
    Post
    375
    Like Inviati  
    0
    Like Ricevuti  
    0
    Io in un mio programma ho usato questa soluzione

        Dim fso As Scripting.FileSystemObject
        Dim erFile As Scripting.File
        Dim Localfile As String
        
        Localfile = 'qui metti il percorso completo del file
        Set fso = CreateObject("Scripting.FileSystemObject")
        If (fso.FileExists(Localfile)) Then
            Set erFile = fso.GetFile(Localfile)
             msg = msg & "Ultimo accesso: " & erFile.DateLastAccessed & vbCrLf
            'msg = msg & "Ultima modifica: " & erFile.DateLastModified
        End If
        'MsgBox (msg)
    Exit Sub
    
    ℹ️ Leggi di più su amanu86 ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. leggere data creazione file da path
    Da Tommy_G nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 24-06-2013, 00:49
  2. ACCESS 2007- Data creazione file
    Da Zenzi nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 20-07-2011, 09:12
  3. Modifica data creazione a file.
    Da Marina nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 23-01-2008, 19:18
  4. [VB6]- Data creazione file
    Da Louis nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 15-05-2006, 16:45
  5. Interrogare database
    Da d3vilkiss nel forum PHP
    Risposte: 3
    Ultimo Post: 22-02-2006, 10:01