Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23

    [access] importazione TXT per data

    Ciao, avrei un problema da risolvere in access 2003.
    In una cartella del mio PC denominata IMPORT, vengono continuamente generati dei log (files .txt) che si chiamano sempre "new_" e con numeri progressivi che indicano la sequenza con cui sono stati creati, quindi dentro la cartella avrò una serie di files tipo questa:
    new_1.txt
    new_2.txt
    new_3.txt
    ecc...

    Devo importare in Access solo il file più recente (come data di creazione e quindi anche come numero progressivo)



    Tramite questo comando riesco ovviamente ad importare solamente il file che si chiama "new_1.txt":
    codice:
    DoCmd.TransferText acImportDelim, "new_1.txt", "C:\import\new1.txt"
    Ma io non posso dargli un parametro così fisso, perchè l'ultimo file creato non posso sapere che numero avrà...
    Come posso fare per dire al mio codice di importare solo il più recente tra tutti quelli che trova nella cartella?

    Grazie
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  2. #2
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23
    Nessun suggerimento?
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Tramite l'oggetto filesearch puoi agevolmente recuperare il file più recente

    http://msdn.microsoft.com/en-us/libr...ice.11%29.aspx

  4. #4
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23
    Originariamente inviato da nicola75ss
    Tramite l'oggetto filesearch puoi agevolmente recuperare il file più recente

    http://msdn.microsoft.com/en-us/libr...ice.11%29.aspx
    Non riesco a capire come usarlo, ottengo solo una lista di files, mentre io ho bisogno che la cosa avvenga in automatico.
    Potresti farmi un esempio di come posso utilizzarlo per andare automaticamente in quella cartella ed importare il file più recente?
    Scusa ma non sono ferratissimo in access.
    Grazie
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Nell'editor vba aggiungi il riferimento a Microsoft Office X Object Library. Poi prova ad assegnare a un pulsante questa macro

    codice:
    Option Compare Database
    
    Private Sub Comando0_Click()
        Dim fs As FileSearch
        Dim directory As String
        Dim i As Integer
         
        directory = "c:\tuo_path\tua_cartella"
        Set fs = Application.FileSearch
        With Application.FileSearch
            .NewSearch
            .Filename = "*.txt"
            .LookIn = directory
            .SearchSubFolders = True
            .LastModified = msoLastModifiedAnyTime
            .Execute msoSortByLastModified, msoSortOrderDescending
        End With
        If fs.FoundFiles.Count > 0 Then MsgBox fs.FoundFiles(1)
    
    End Sub
    e vedi se ti restituisce il file più recente.

  6. #6
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23
    Originariamente inviato da nicola75ss
    Nell'editor vba aggiungi il riferimento a Microsoft Office X Object Library. Poi prova ad assegnare a un pulsante questa macro

    codice:
    Option Compare Database
    
    Private Sub Comando0_Click()
        Dim fs As FileSearch
        Dim directory As String
        Dim i As Integer
         
        directory = "c:\tuo_path\tua_cartella"
        Set fs = Application.FileSearch
        With Application.FileSearch
            .NewSearch
            .Filename = "*.txt"
            .LookIn = directory
            .SearchSubFolders = True
            .LastModified = msoLastModifiedAnyTime
            .Execute msoSortByLastModified, msoSortOrderDescending
        End With
        If fs.FoundFiles.Count > 0 Then MsgBox fs.FoundFiles(1)
    
    End Sub
    e vedi se ti restituisce il file più recente.
    Scusa la mia incompetenza:come faccio ad aggiungere il riferimento nell'editor vba?
    Senza inserirlo facendo il debug mi si blocca su Dim fs As FileSearch dandomi l'errore "Tipo definito dall'utente non definito".

    P.S. Il codice l'ho inserito in un modulo come Public Function per poterlo richiamare da diverse Forms
    codice:
    Option Compare Database
    Option Explicit
    
    Public Function Comando0_Click()
        Dim fs As FileSearch
        Dim directory As String
        Dim i As Integer
         
        directory = "c:\tuo_path\tua_cartella"
        Set fs = Application.FileSearch
        With Application.FileSearch
            .NewSearch
            .FileName = "*.txt"
            .LookIn = directory
            .SearchSubFolders = True
            .LastModified = msoLastModifiedAnyTime
            .Execute msoSortByLastModified, msoSortOrderDescending
        End With
        If fs.FoundFiles.Count > 0 Then MsgBox fs.FoundFiles(1)
    
    End Function
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Devi andare su strumenti => riferimenti e spuntare la voce

    Microsoft Office X Object Library

    dove al posto di x avrai un numero relativo alla versione di office che utilizzi.

  8. #8
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23
    Grande Nicola, funziona alla perfezione.
    Grazie mille!
    Alex
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  9. #9
    Utente di HTML.it L'avatar di @lexxx
    Registrato dal
    Feb 2009
    Messaggi
    23
    Riprendo questo thread perchè avrei bisogno di implementare il codice.

    Il codice in oggetto funziona benissimo: la msgBox mi restituisce il nome del file più recente all'interno della directory, però avrei bisogno di fare un'altra cosa.
    Nella mia directory ci sono 2 tipi di files:
    i files del primo tipo si chiamano "aaa_1.txt", "aaa_2.txt", aaa_3.txt", ecc...
    i files del secondo tipo si chiamano "bbb_1.txt", "bbb_2.txt", bbb_3.txt", ecc...

    Ora avrei bisogno che nella stessa msgBox mi restituisse il più recente dei files che cominciano con "aaa" e anche il più recente dei files che comninciano con "bbb"

    Come posso fare?
    Ci sono due tipo di persone a questo mondo: buoni e cattivi. Il buono dorme meglio, ma il cattivo sembra godersi di più le ore diurne

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Converti il codice che ti avevo scritto in una funzioncina che inserirai in un modulo

    codice:
    Public Function recente(radice As String)
        Dim fs As FileSearch
        Dim directory As String
        Dim i As Integer
         
        directory = "C:\Users\nicola\Desktop\recenti"
        Set fs = Application.FileSearch
        With Application.FileSearch
            .NewSearch
            .FileName = radice & "*.txt"
            .LookIn = directory
            .SearchSubFolders = True
            .LastModified = msoLastModifiedAnyTime
            .Execute msoSortByLastModified, msoSortOrderDescending
        End With
        If fs.FoundFiles.Count > 0 Then
        recente = MsgBox(fs.FoundFiles(1))
        End If
    End Function
    e la richiami secondo le tue esigenze

    codice:
    Private Sub Comando0_Click()
    Call recente("a") ' file il cui nome inizia per a
    Call recente("b") ' file il cui nome inizia per b
    End Sub
    Ovviamente la funzione è perfettibile (potresti aggiungere un parametro relativo alla ricorsività o meno della ricerca, ecc.). Il mio esempio è solo uno spunto.

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.