Importazione articoli 2

Creato il: 17.03.2016
Questa versione dello script di pre-processing e' ottimizzata per file di grandi dimensioni (che vengono progressivamente salvati su disco invece di essere elaborati interamente in memoria)
Option Explicit
 
Dim OutputData, FileArticoli, righe, i, campi
Dim NuovoNomeFile
Dim ImportazioneAnnullata
 
' Visualizza una barra di avanzamento dell'elaborazione
Rdy.LogForm_Show True, False, True
 
' Lettura file ricevuto dal fornitore
FileArticoli=Rdy.LoadStringFromFile(RowItem.InputFileName)
 
' inserimento su un array delle righe trovate sul file
Righe=Split(FileArticoli, vbCrLf)
 
' Genero un nuovo nome di file temporaneo
NuovoNomeFile=RowItem.InputFileName & ".process.txt"
 
' Creo il file vuoto e passo il nome del nuovo file elaborato alla procedura di import
Rdy.SaveStringToFile NuovoNomeFile,""
RowItem.InputFileName=NuovoNomeFile
 
' Questa variabile conterra' le righe rielaborate da scrivere sul file temporaneo
OutputData = ""
 
' scorre tutte le righe del file
ImportazioneAnnullata = False
 
For i=0 To UBound(righe)
   ' Aggiorna la barra di avanzamento dell'elaborazione
Rdy.LogForm_Progress i, UBound(righe)
   If Rdy.LogForm_StopProcess_Pressed Then
       ImportazioneAnnullata=True
       Exit For
   End If
 
   ' spezzo la riga in tanti campi separati (in questo caso viene considerato il punto e virgola come separatore di campo)
campi=split(righe(i),";")
 
   If i=0 Then
       ' La prima riga non viene modificata perche' contiene le intestazioni dei campi
Else
       ' Controllo che sulla riga siano presenti 2 o piu' campi
If UBound(campi)>=1 Then
           ' Aggiungo 'ABC' sul primo campo
campi(0) = "ABC" & campi(0)
       End If
   End If
 
   ' Aggiunge la riga alla stringa di output
OutputData = OutputData & join(campi, ";") & vbCrLf
 
   ' Ogni 100 righe scrive sul file temporaneo e svuota il buffer
If (i mod 100)=0 Then
       Rdy.SaveStringToFile NuovoNomeFile,OutputData,True
       OutputData = ""
   End If
Next
 
' Nasconde la barra di avanzamento
Rdy.LogForm_Hide
 
If ImportazioneAnnullata Then
   'Scrive un file vuoto
Rdy.SaveStringToFile NuovoNomeFile,"",True
   Rdy.ShowMessage "Elaborazione interrotta dall'utente"
Else
   ' Salvo le ultime righe
Rdy.SaveStringToFile NuovoNomeFile,OutputData,True
End If

Login