Elenco file da cartella remota.

di il
7 risposte

Elenco file da cartella remota.

Ciao a tutti.
Periodicamente ho bisogno di aggiornare un elenco di documenti in formato PDF presenti su due cartelle remote.
In entrambe queste cartelle remote, oltre ai PDF, esiste una cartella in cui conservano le versioni vecchie dei PDF (e che a me non interessano)
il codice è il seguente

Dim MyPath  As String
Dim MyName  As String
Dim Totale1 As Integer
Dim Totale2 As Integer

'IMPORTA LE SOP
MyPath = DLookup("SOPRoma", "tblSistema")
Totale1 = 0
MyName = Dir(MyPath & "*.pdf")
DBEngine(0)(0).Execute ("DELETE * FROM tblSOP;"), dbFailOnError
Do While MyName <> ""
    
    Debug.Print MyName
    Totale1 = Totale1 + 1
    Debug.Print Totale1
    'DBEngine(0)(0).Execute ("INSERT INTO tblSOP ([Titolo]) VALUES ('" & MyName & "');"), dbFailOnError
    MyName = Dir
    
 Loop


'IMPORTA LE PO
MyPath = DLookup("PORoma", "tblSistema")
Totale2 = 0
DBEngine(0)(0).Execute ("DELETE * FROM tblPO;"), dbFailOnError
MyName = Dir(MyPath & "*.*")
Do While MyName <> ""
     
     Debug.Print MyName
     Totale2 = Totale2 + 1
     
     'DBEngine(0)(0).Execute ("INSERT INTO tblPO ([Titolo]) VALUES ('" & MyName & "');"), dbFailOnError
         
     MyName = Dir
 Loop

MsgBox "Importazione SOP da Roma terminata." & vbNewLine & "Tabella SOP aggiornata" & vbNewLine & "Importate nr. " & Totale1 & " SOP", vbOKOnly + vbInformation, "Importazione SOP"
MsgBox "Importazione PO da Roma terminata." & vbNewLine & "Tabella PO aggiornata" & vbNewLine & "Importate nr. " & Totale2 & " PO", vbOKOnly + vbInformation, "Importazione PO"

Una cartella contiene 33 PDF e l'altra 8.
Lo scopo sarebbe quello di cancellare la tabella nella quale salvo i titoli dei PDF, quindi ripopolare la tabella con il nuovo elenco dei PDF
Come si nota, nei due Loop ho disattivato l'inserimento in tabella, in quanto rilevo un problema che non capisco.
Se lancio il codice così come è (cioè non facendo popolare le due tabelle), in debug ottengo correttamente visualizzati i nomi di tutti i file presenti nelle due cartelle remote (33+8).
Se però mi azzardo a far popolare le tabelle, arrivato al 15mo files del primo Loop....si blocca ed esce.
Se invece blocco la tabella nel primo Loop ma la lascio attiva nel secondo Loop (quello relativo agli 8 PDF) la relativa tabella si popola senza nessun problema.

7 Risposte

  • Re: Elenco file da cartella remota.

    Come si chiama il file che provoca l'errore?
    non è che contiene un apice/apostrofo?

    io in generale nella composizione di un SQL se ho parametri "esterni" di tipo stringa uso sempre un replace
    tu hai messo questa
    INSERT INTO tblSOP ([Titolo]) VALUES ('" & MyName & "');
    io metterei questa
    INSERT INTO tblSOP ([Titolo]) VALUES ('" & Replace$(MyName,"'","''") & "');
  • Re: Elenco file da cartella remota.

    Perché non hai ancora visualizzato il nome dei file prima della INSERT? Avresti sicuramente capito di che problema si tratta senza neanxhe scrivere sul forum
  • Re: Elenco file da cartella remota.

    muttley005 ha scritto:


    Come si chiama il file che provoca l'errore?
    non è che contiene un apice/apostrofo?
    Hai ragione......ci sono nomi di alcuni file con apostrofo e altri con lettere accentate

    MALEDETTI, MALEDETTI!!!!! Non voi, per carità, ma i geni che nominano quei file. E per inciso sono gli stessi geni che quando si inventano qualche DB usano nomi "artistici" per i campi (tipo "Numero dell'unità in una calda notte d'estate").
    Vabbè, lasciamo perdere 'ste storie...

    oregon ha scritto:


    Perché non hai ancora visualizzato il nome dei file prima della INSERT? Avresti sicuramente capito di che problema si tratta senza neanxhe scrivere sul forum
    Scusami, ma se non erro la visualizzazione del nome del file è proprio due righe prima dell'INSERT......
    E comunque visualizzando l'elenco dei nomi nella finestra Immediata, a dire il vero non ci ho fatto molto caso pur leggendoli tutti, non mi era proprio passato per la mente la possibilità di accenti o caratteri accentati.
    Nel corso del tempo ho preso l'abitudine a non usarli, ma se li leggo onestamente non ci faccio caso.
  • Re: Elenco file da cartella remota.

    Ok ma devi tentare il + possibile di prevenire azioni dell'utente "stupido".
    prova quel codice che ti ho postato e vedrai che risolvi
  • Re: Elenco file da cartella remota.

    muttley005 ha scritto:


    Ok ma devi tentare il + possibile di prevenire azioni dell'utente "stupido".
    prova quel codice che ti ho postato e vedrai che risolvi
    Si effettivamente grazie al tuo suggerimento le due tabelle si sono popolate regolarmente.
    Mi lascia un pò perplesso il fatto che non siano nello stesso ordine della cartella remota (ordine alfabetico), ma è come se ad un certo punto saltasse più in basso per poi ritornare su...., ma fa niente, non è un problema (almeno per ora)

    Il problema "utente stupido" è che in questo caso "l'utente stupido" sono io, in quanto loro forniscono la "materia prima" e io la devo usare.
    Quelle poche volte che ci siamo permessi (io ed un collega) di fargli notare alcune...convenzioni (memori anche del buon vecchio DOS e le sue "regole") anche proponendoci di fare noi un DB fatto un pochino meglio (ma solo un pochino, non siamo geni informatici...) apriti cielo, manco gli avessimo offeso la mamma, la nonna e la sorella......
  • Re: Elenco file da cartella remota.

    Se anche li legge in modo non ordinato puoi sempre presentarli a tuo piacimento dando tu un ordine in presentazione, no?
  • Re: Elenco file da cartella remota.

    L'ordine con cui visualizzi l'elenco non è quello con cuj la Dir restituisce i nomi, che è quello di prima creazione.

    P. S. Non avevo visto subito il Debug.Print ma a maggior ragione doveva essere evidente il problema con l'ultimo file visualizzato
Devi accedere o registrarti per scrivere nel forum
7 risposte