Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391

    [VB6] DateLastModified

    Ciao ragazzi,
    sono un neofita e mi sto impegnando a realizzare un semplice programmino che mi controlla se un file in una rete aziendale viene aggiornato dall'ultima nostra visualizzazione dello stesso.

    Per ora sto lavorando con un file sul mio PC.

    Tutto funziona ma quando apro, senza modificare il file xls (quello che sarà in rete) il programma mi dice che è stato aggiornato.
    Per il controllo ho usato DateLastModified e non DateLastAccessed quindi non capisco.

    Mi aiutate?

    codice:
        Dim fs, f, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile("C:\prova.xls")
        lastmodification = f.DateLastModified

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    up

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao Tuning,
    prova in quest'altro modo:
    codice:
    Option Explicit
    Private Sub Command1_Click()
        Dim m As String
        Dim sFILE As String
    
    On Error GoTo Command1_Click_Error
        sFILE = App.Path & "\prova.xls"
        Text1.Text = ""
        
        m = FileDateTime(sFILE)
        Text1.Text = m
    
    On Error GoTo 0
       Exit Sub
    
    Command1_Click_Error:
    
        MsgBox "Error " & Err.Number & " ( " & Err.Description & " ) nella procedura Command1_Click della Form: Form1"
    
    End Sub
    LM

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    ciao,
    scusa l'ignoranza, ma quello da te postato è un codice che posso incollare direttamente oppure devo adattarlo?

    mi dice "Errrore 424 (necessario oggetto) nell aprocedura....."

    mentre, non so se ho fatto bene, se metto
    codice:
        Dim fs, f, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile("C:\prova.xls")
        lastmodification = f.DateLastModified
        MsgBox Err.Number
    l'errore nel msgbox è 0

    il fatto che se apro il file (senza nessuna modifica) il programma mi dice che è modificato, ma appeno lo chiudo torna alla normalità, potrebbe essere dato dal fatto che il programma trova il file in sola lettura e mi da "l'errore"?

    aiuto

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Tuning
    ciao,
    scusa l'ignoranza, ma quello da te postato è un codice che posso incollare direttamente oppure devo adattarlo?

    mi dice "Errrore 424 (necessario oggetto) nell aprocedura....."
    Ma la Text1 l'hai inserita nel form?

    mentre, non so se ho fatto bene, se metto
    codice:
        Dim fs, f, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile("C:\prova.xls")
        lastmodification = f.DateLastModified
        MsgBox Err.Number
    l'errore nel msgbox è 0

    il fatto che se apro il file (senza nessuna modifica) il programma mi dice che è modificato, ma appeno lo chiudo torna alla normalità, potrebbe essere dato dal fatto che il programma trova il file in sola lettura e mi da "l'errore"?

    aiuto
    Con quel codice, se apro e chiudo il file, la data resta resta la stessa ... solo se lo modifico, allora cambia data/orario.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    Originariamente inviato da oregon
    Con quel codice, se apro e chiudo il file, la data resta resta la stessa ... solo se lo modifico, allora cambia data/orario.
    ed è quello che vorrei fare, ma se apro il file per leggerlo (non dal programma stesso) lui mi dice che è stato aggiornato.



    per essere la prima volta che vedo VB ho finito tutto il programma (molto semplice in verità), ma non capisco perchè mi ha questo problema

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    nessuna idea?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    Ho controllato con Proprietà del file la data di modifica e ultimo accesso e se il file è chiuso queste sono differenti

    es:
    File chiuso
    Data modifica 07/07/07 11.45.00
    Data ultimo accesso 07/07/07 11.57.00

    Apro il file senza modificarlo
    Data modifica 07/07/07 11.58.05 (perchè?)
    Data ultimo accesso 07/07/07 11.58.07

    Richiudo il file
    Data modifica 07/07/07 11.45.00 (torna quella reale)
    Data ultimo accesso 07/07/07 11.58.07

    Così mi pare di capire che il programma non funzionerà mai VVoVe:

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Allora ... io ho utilizzato un semplice file Excel (prova.xls) e con il codice che hai mostrato (non con il tuo programma che non ho ... solamente con quel codice) la data e' corretta.

    Se apro il file con Excel senza modificarlo, il programma indica sempre la stessa data.

    Se modifico il file con Excel allora il programma mi indica (giustamente) una data diversa.

    I fatti sono due:

    1) o tu apri il file e, senza saperlo, lo modifichi

    2) o il tuo programma (completo di codice che io non ho visto) fa qualcosa di sbagliato

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    Ciao,
    approfitto della tua gentilezza
    Ho sempre pudore a postare i miei codici visto che... sono una schiappa
    Non far caso alle mille Rem e alle eventuali insensatezze

    codice:
    Const SND_ASYNC = &H1
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Public loop_audio As Integer
    
    
    Private Sub Form_Load()
    Timer1.Interval = 1000   ' Imposta l'intervallo.
    Label1.BackColor = vbBlack
    
    End Sub
    
    
    Private Sub Timer1_Timer()
    'If GetAttr("C:\prova.xls") = vbReadOnly Then
    'Label1.BackColor = vbBlack
    'MsgBox "è solo lettura"
    'Else
    Dim MySize
    MySize = FileLen("C:\prova.xls")   ' Restituisce la lunghezza
       ' del file espressa in byte.
    'MsgBox MySize
        
        ' prende l'ora di ultima modifica del file XLS
       ' Dim fs, f, s
       ' Set fs = CreateObject("Scripting.FileSystemObject")
       ' Set f = fs.GetFile("C:\prova.xls")
       ' lastmodification = f.DateLastModified
         '   MsgBox Err.Number
        
        'prende l'ora di ultima visualizzazione dal TXT
    Dim libero As String
    libero = FreeFile
    Dim lastsize As String
    Open "CheckUpdateDate.txt" For Input As libero
    Do While Not EOF(libero)
    Line Input #libero, lastsize
    'DATA1.Text = stringa
    Loop
    Close #libero
    
    'MsgBox lastview
    
    'controlla se l'ora di ultima visualizzazione sia predecente/antecedente all'ora di ultima modifica
    If MySize > lastsize Then
    Label1.BackColor = vbRed
        'notifica audio solo ogni 10 cicli fino al 130esimo (da moltiplicare per i sec di intervallo)
        If loop_audio = 0 Or loop_audio = 10 Or loop_audio = 20 Or loop_audio = 30 Or loop_audio = 40 Or loop_audio = 50 Or loop_audio = 60 Or loop_audio = 70 Or loop_audio = 80 Or loop_audio = 90 Or loop_audio = 100 Or loop_audio = 110 Or loop_audio = 120 Or loop_audio = 130 Then
        sndPlaySound ("c:windows\media\Windows XP - Batteria in esaurimento.wav"), SND_ASYNC
        End If
    Else
    Label1.BackColor = vbBlack
    End If
        loop_audio = loop_audio + 1
    
    'end is se il file è in sola lettura
    'End If
    End Sub
    
    Private Sub Command1_Click()
    Label1.BackColor = vbBlack
    
    Dim exApp As Excel.Application
    Dim exWb As Excel.Workbook
    Dim exWs As Excel.Worksheet
    Dim numRighe As Integer
    Dim indRiga As Integer
    
    'apre excel
    Set exApp = New Excel.Application
    exApp.Visible = True
    
    'apre il file xls
    strperc = "C:\prova.xls"
    Set exWb = exApp.Workbooks.Open(strperc)
    
    'prende la data di sistema
    Dim MySize2
    MySize2 = FileLen("C:\prova.xls")   ' Restituisce la lunghezza
       ' del file espressa in byte.
    
    
    'Dim mytime As String
    'Dim mydate As String
    'mytime = Time + Date
    'mydate = Date
    'MsgBox mytime
    'MsgBox mydate
    
    ' scrive in un file di TXT l'ora di ultima visualizzazione del file, se il file non esiste lo crea
        Dim fso, txtfile
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set txtfile = fso.CreateTextFile("CheckUpdateDate.txt", True)
        ' Scrive una riga con un carattere di nuova riga.
        
        txtfile.WriteLine (MySize2)
        'txtfile.WriteLine ("Test in corso di 1, 2 e 3.")
        'txtfile.WriteLine ("Test in corso di 1, 2 e 3.")
        txtfile.Close
    
    
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.