Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124

    [access] popolare elenco per data creazione file

    Ho una Sub che si appoggia ad una Function che (in una casella di riepilogo) elenca tutti i files presenti in una directory.
    Fin qui tutto ok, solo che all'interno della casella di riepilogo vedo i files elencati per nome, mentre io li vorrei elencati per data di creazione (dal più recente al più vecchio).

    La funzione che richiamo è questa:

    codice:
    Public Function FillListFiles(ctl As Access.ListBox, StartPath As String)
        Dim MyPath As String
        Dim MyName As String
        ctl.RowSource = ""
        MyPath = StartPath
        MyName = Dir(MyPath)
        Do While MyName <> ""
            With ctl
                .RowSource = .RowSource & MyName & ";"
                
            End With
            MyName = Dir
            
        Loop
        ctl.RowSource = Left(ctl.RowSource, Len(ctl.RowSource) - 1)
    End Function
    La Sub è questa:

    codice:
    Private Sub popola_casella()
    If (Dir("C:\miadir\*.txt) <> "") Then  'verifico che siano presenti i files
    Call ListFilesToTable("C:\miadir\", "*.txt", True)  'trovo tutti i file di testo
    Call FillListFiles(Me!Elenco1, "C:\miadir\" & "*.txt")  'popolo il mio elenco
    End If
    End Sub
    Come posso fare per visualizzare i files ordinati per data di creazione?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    La prima cosa che mi viene in mente è questa

    codice:
    Shell "cmd.exe /c dir c:\cartella\*.* /b /A-D /O-D > c:\listafile.txt"
    Una volta ordinati in senso decrescente per data di creazione scorri il file su cui hai rediretto l'output.

  3. #3
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Già provata: in pratica tu dai un comando che riordina i files all'interno della cartella di windows supponendo che anche all'interno della casella vengano ordinati allo stesso modo, ma ci ho già provato e non ne tiene conto...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da alexxxb
    Già provata: in pratica tu dai un comando che riordina i files all'interno della cartella di windows supponendo che anche all'interno della casella vengano ordinati allo stesso modo, ma ci ho già provato e non ne tiene conto...
    Tendo a fidarmi più di ciò che vedo che di quello che dici.

    codice:
    Private Sub Comando0_Click()
    lstFile.RowSource = ""
    
    Shell "cmd.exe /c dir c:\cartella\*.* /b /A-D /O-D > c:\listafile.txt"
    strFile = "c:\listafile.txt"
    If Len(Dir(strFile)) = 0 Then
        MsgBox ("File non trovato")
        Exit Sub
    End If
    
    iFileNum = FreeFile()
    
    Open strFile For Input As iFileNum
    Do While Not EOF(iFileNum)
        Line Input #iFileNum, testo
        lstFile.AddItem testo
    Loop
    End Sub

  5. #5
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Come la uso nella mia Sub per popolare l'Elenco?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da alexxxb
    Come la uso nella mia Sub per popolare l'Elenco?
    Il codice che ti serve è tutto lì.
    Inserisci nella maschera una casella di riepilogo (nel mio esempio l'ho chiamata lstFile, imposti come tipo origine riga "elenco valori", adatti dal mio codice il percorso che ti occorre e basta).

  7. #7
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Facendo il debug mi da sia su [strFile] che su [iFileNum] che su [testo] "Variabile non definita"

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Dichiarale o togli l'option explicit (giusto per provare il codice).

  9. #9
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Fatto, dichiarate e ora funziona . (ero fuso...)
    Il "problema" che mi da ora è questo: ho associato la compilazione dell'elenco al click di un pulsante. In pratica quando clicco il pulsante la Sub virene eseguita.
    Devo premere il pulsante 2 volte, perchè alla prima volta non fa il refresh della casella, lo fa solo alla seconda volta...
    Ho provato a forzare il requery della casella con un comando ma niente... bisogna sempre premere 2 volte.
    Tu riesci ad immaginare il perchè?

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Hai ragione, scusami.
    Non ci avevo fatto caso. Bisogna gestire il codice in maniera tale che attenda la conclusione del comando shell prima che prosegua.

    Stasera appena posso gli dò un'occhiata.

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.