Ciao Moro , benissimo ! Ho incollato il tuo codice in un progettino di esempio e ho visto che funziona perfettamaente.
La modifica che ti si è resa necessaria dipende dal fatto che il sito che usi vuole la data in quel formato percio hai dovuto formattarla
per rispettare cio che devi passare a lla link.
Tutto ok hai fatto benissimo.
Faccio una piccola precisazione riferita al "ProgettoPlugin" , avrai notato che il proetto parte da un template
che inserisce un form con alcuni controlli di default e una dorsale di codice che opportunamente implementata
serve per fare le statistiche.
A te tutto questo non serve percui elimina tutti i controlli dal form , poi apri la finestra del codice , e cancella tutto
e le uniche routine che devono rimanere sono
Codice:
Option Explicit
Option Compare Text
Public bFerma As Boolean
Private Sub Form_Load()
' NON MODIFICARE SE NON NECESSARIO
Call InitSpazioScript
End Sub
Private Sub Form_Terminate()
' NON MODIFICARE SE NON NECESSARIO
Call Deinit
End Sub
sulla form priva ormai di tutti i contollli inserisci un pulsante è da li che richiameremo la procedura che inizia l'aggiornamento.
Codice:
Private Sub Command1_Click()
InitAggiornamentoDL5M
End Sub
ora andiamo a parlare della procedura piu importante del plugin , la procedura che si occupa di leggere il file scaricato
interpretarlo e farci tornare le estrazioni.
Ripetiamo cosa dovra fare e come ipotizziamo il funzionamento di questa procedura.
Ricevera in input il percorso di un file html (quello da leggere con le estrazioni)
Scrivera le estrazioni lette in un array
quali sono i problemi che dobbiamo affrontare per implementarne il funzioamento ?
sicuramente dovremo poter leggere il file scaricato.
Questo si fa con le operazioni di I/O (input/output) sui file.
Poi dovremmo analizzare e fare il parsing del file linea per linea ,per poterlo interpretare.
Benissimo , come hai gia fatto facciamo girare la procedura cosi com'è
poi andiamo a vedere che "faccia" c'hanno i file scaricati
Li proviamo ad aprire col browser e vediamo c he sono proprio loro , ora li apriamo con ultraedit
o notepad per vedere come sono scritti al loro interno e quali sono i criteri con i quali possiamo
individuare i dati da catturare
Aprendo il file html con ultraedit ecco come si presenta nella porzione che ci interessa
Codice:
<div class="popContent">
<table summary="10eLOTTO - Numeri estratti" class="tableCnt">
<tr class="white">
<th><div class="numeroEstrazione">001 - 21/04</div></th>
<td><div class="numeroEstratto">11</div></td>
<td><div class="numeroEstratto">12</div></td>
<td><div class="numeroEstratto">20</div></td>
<td><div class="numeroEstratto">27</div></td>
<td><div class="numeroEstratto">41</div></td>
<td><div class="numeroEstratto">44</div></td>
<td><div class="numeroEstratto">49</div></td>
<td><div class="numeroEstratto">53</div></td>
<td><div class="numeroEstratto">55</div></td>
<td><div class="numeroEstratto">58</div></td>
<td><div class="numeroEstratto">59</div></td>
<td><div class="numeroEstratto">60</div></td>
<td><div class="numeroEstratto">62</div></td>
<td><div class="numeroEstratto">65</div></td>
<td><div class="numeroEstratto">72</div></td>
<td><div class="numeroEstratto">78</div></td>
<td><div class="numeroEstratto">81</div></td>
<td><div class="numeroEstratto">85</div></td>
<td><div class="numeroEstratto">87</div></td>
<td><div class="numeroEstratto">89</div></td>
</tr>
<tr class="white">
<th><div class="numeroEstrazione">002 - 21/04</div></th>
<td><div class="numeroEstratto">6</div></td>
<td><div class="numeroEstratto">12</div></td>
<td><div class="numeroEstratto">14</div></td>
<td><div class="numeroEstratto">19</div></td>
<td><div class="numeroEstratto">36</div></td>
<td><div class="numeroEstratto">38</div></td>
<td><div class="numeroEstratto">39</div></td>
<td><div class="numeroEstratto">41</div></td>
<td><div class="numeroEstratto">49</div></td>
<td><div class="numeroEstratto">52</div></td>
<td><div class="numeroEstratto">56</div></td>
<td><div class="numeroEstratto">61</div></td>
<td><div class="numeroEstratto">64</div></td>
<td><div class="numeroEstratto">67</div></td>
<td><div class="numeroEstratto">73</div></td>
<td><div class="numeroEstratto">79</div></td>
<td><div class="numeroEstratto">85</div></td>
<td><div class="numeroEstratto">86</div></td>
<td><div class="numeroEstratto">87</div></td>
<td><div class="numeroEstratto">88</div></td>
</tr>
vediamo subito che la riga che contiene i riferimeti di data e numero eestrazione si individua facilmente perche
contiene la parola <numeroEstrazione> , da notare che la data non contiene l'anno
vediamo che dopo la suddetta riga compaiono altre righe dove è presente la parola <numeroEstratto> , si tratta
delle righe che contengono i numeri estratti appartenenti a quella specifica estrazione letta nella prima riga
All'interno di queste righe dovremo estrapolare i dati che ci servono , quindi si tratta di individuare un criterio
per estrarli.
Parliamo della prima riga quella contenete la data
Codice:
<th><div class="numeroEstrazione">001 - 21/04</div></th>
dobbiamo arrivare a quel valore
001 - 21/04
come possiamo fare ? E chiaro che dovremo manipolare la stringa.
Abbiamo gia usato la funzione split.
Che succederebbe se noi splittassimo quella riga in funzione del carattere ">"
avremmo un array con i seguenti elementi
Codice:
<th
<div class="numeroEstrazione"
[b]001 - 21/04</div[/b]
</th
[code]
si nota che l'elemento con indice 2 (parte da 0) è quello che ci serve , sara sempre cosi dato che i file sono standard
ora sappiamo che dobbiamo operare sul valore che contiene la riga
[b]001 - 21/04</div[/b]
in particolare dobbiamo estrapolare il numero estrazione (001) e la data (21/04)
prima di tutto prendiamo solo la parte di stringa che ci serve , individuiamo la posizione dove
troncare la stringa grazie al carattere "<"
quindi riusciamo a prendere la priam parte che contiene [b]001 - 21/04[/b]
da qui con split sara facile ottenere i due valori in variabili distinte
Benissimo abbiamo visto come estrapolare data e numero estrazione , ora parliamo delle righe con i numeri estratti
il concetto è identico.
Individuiamo la riga grazie alla presenza della parola "numeroEstratto" e poi una volta individuata operiamo
per estrarre il numero.
[code]
<td><div class="numeroEstratto">11</div></td>
Anche qui se usiamo la funzione split con il carattere separatore ">" otteniamo
Codice:
<td
<div class="numeroEstratto"
[b]11</div[/b]
</td
[code]
anche in questo caso l'elemento con indice 2 è quello che contiene il valore che ci serve
[code]
[b]11</div[/b]
[code]
dal quale dobbiamo estrapolare il dato da catturare , facilissimo anche qui tronchiamo la stinga al carattere "<"
ora che abbiamo visto come interpretare il file possiamo iniziare a vedere quali sono gli altri punti da affrontare.
Il primo è ovviamente quello di leggere il file , ci farebbe comodo una funzione che passando il path del file ci tornasse
un array contenente le righe lette dal file.
in pratica questa funzione dovrebbe leggere il file alimentare un array con le righe lette e farcelo tornare indietro
in maniera che noi poi possiamo leggere le righe e interpretarle.
questa funzione la puoi prendere pari pari è la seguente
[code]
Function LeggiFileTornaRighe(sFile As String, aRighe() As String)
Dim f As Integer
Dim sBuffer As String
f = FreeFile ' apro un puntatore al file
Open sFile For Binary As f ' apro il file in binario
sBuffer = Space(LOF(f)) ' preparo il buffer di lettura alla dimensione del file
Get f, 1, sBuffer ' leggo dal byte 1 l'intero file nella variabile sBuffer
Close f ' chiudo il file
ReDim aRighe(0) As String ' ridimensiono l'array delle righe
aRighe() = Split(sBuffer, vbLf) ' splitto il buffer con il carattere line feed in maniera da ottenere le righe
End Function
Ora direi che siamo pronti per cominciare , andiamo a vedere come implementare la sub LeggiFileHtmlTornaEstrazioni
ricordiamoci che l'anno di estrazione non compare nella pagina html percio ce lo dobbiamo portare appresso in qualche modo e
il modo piu semplice è inserire un altro parametro nella sub , il parametro nAnno
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO , nAnno as integer)
End Sub
Sappiamo che questa sub riceve un parametro che poi conterra le estrazioni trovate , la prima cosa da fare
in testa al codice è azzerare questo parametro ridimensionandolo a 0 elementi , poi durante la lettura delle righe dovremo gestire
il Redim per memorizzare le estrazioni che via via troveremo.
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno as integer)
dim nTrovate as long 'conteggia le estrazioni trovate
redim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
End Sub
dopo avere fatto questo aggiungiamo il codice che legge il file e ci fa tornare l'array con le righe lette
e inseriamo il ciclo per leggere le righe
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno as integer)
dim nRiga as long 'cicla sulel righe lette
dim nTrovate as long 'conteggia le estrazioni trovate
redim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file
for nRiga = 0 to ubound(aRighe)
next
End Sub
A questo punto dobbiamo andare ad inserire il codice dentro il ciclo , ovvero dovremmo andare ad individuare e a leggere
le righe che ci servono, abbiamo gia visto come fare a livllo logico ora il tutto va implementato
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno as integer)
dim nRiga as long 'cicla sulel righe lette
dim nTrovate as long 'conteggia le estrazioni trovate
redim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file e mi tornano le righe
for nRiga = 0 to ubound(aRighe)
If InStr(aRighe(nRiga ), "numeroEstrazione") Then
' è la riga che contiene la data ed è quella che ci indica che abiamo trovato una nuova estrazione
End If
If InStr(aRighe(nRiga ), "numeroEstratto") Then
' è la riga che contiene uno dei numeri estratti
End If
next
End Sub
sappiamo che ogni estrazione che troviamo la inseriremo nel nostro array , sappiamo anche che l'array lo avevamo ridimensionato
a 0 in testa al codice , quindi appena troviamo una nuova estrazione dobbiamo certamente incrementare la dimensione del nostro array
per far spazio all'estrazione da memorizzare.
Quindi aggiungiamo il codice che gestisce il dimensionamento dell'array , quand'è che lo dobbiamo ridimensionare ? Appena troviamo
la riga con una nuova data , percio facciamo cosi
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno as integer)
dim nRiga as long 'cicla sulel righe lette
dim nTrovate as long 'conteggia le estrazioni trovate
redim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file
for nRiga = 0 to ubound(aRighe)
If InStr(aRighe(nRiga ), "numeroEstrazione") Then
' è la riga che contiene la data ed è quella che ci indica che abiamo trovato una nuova estrazione
nTrovate = nTrovate + 1 ' incremento le estrazioni trovate
redim preserve aRetEstr (nTrovate) As STRUCT_ESTRAZIONE_10LOTTO ' ridimension l'array preservando i valori precedenti
End If
If InStr(aRighe(nRiga ), "numeroEstratto") Then
' è la riga che contiene uno dei numeri estratti
End If
next
End Sub
Abbiamo visto che appena troviamo la riga contenente la data estrazione incrementiamo la dimensione dell'array aRetEstr
ora all'elemento identificato dalla variabile nTrovate dovremmo andare a scrivere i valori che estrapoleremo.
Avevamo gia fatto l'analisi e abbiamo visto come fare per tirare fuori i valori di data e di numero estrazione da quella riga
ora dovremo implementarelo.
Ci farebbe comodo una procedura che passando un elemento dell'array e la stringa letta dal file contenente i valori di data e numero estr ,
la leggesse e valorizzasse i membri dell'elemento dell'array contenente l'estrazione da valorizzare.
Ecco il prototipo di questa procedurina
Codice:
Sub LeggiDataEId(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String)
End Sub
il primo paramentro è del tipo UDT , quindi potra ricevere un singolo eleento dell'array aRetEstr visdto che sono dello stesso tipo
il secondo parametro è la riga da leggere.
andiamo a scrivere il codice d i questa sub semplicemente trasformando in codice quello che avevamo visto in fase di analisi
Codice:
Sub LeggiDataEId(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String, nAnno As Integer)
Dim i As Integer
Dim sTemp As String
ReDim aV(0) As String
aV() = Split(sRiga, ">")
i = InStr(aV(2), "<")
sTemp = Left(aV(2), i - 1)
ReDim aV(0) As String
aV() = Split(sTemp, "-")
structEstr.strctData.nNumEstrazione = Val(aV(0))
ReDim avv(0) As String
avv() = Split(aV(1), "/")
structEstr.strctData.AA = nAnno
structEstr.strctData.Mm = Val(Trim$(avv(1)))
structEstr.strctData.GG = Val(Trim$(avv(0)))
End Sub
ora che abbiamo scrittol questa funzioncina di supporto andiamo ad usarla
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno As Integer)
Dim nRiga As Long 'cicla sulel righe lette
Dim nTrovate As Long 'conteggia le estrazioni trovate
ReDim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file
For nRiga = 0 To UBound(aRighe)
If InStr(aRighe(nRiga), "numeroEstrazione") Then
' è la riga che contiene la data ed è quella che ci indica che abiamo trovato una nuova estrazione
nTrovate = nTrovate + 1 ' incremento le estrazioni trovate
ReDim Preserve aRetEstr(nTrovate) As STRUCT_ESTRAZIONE_10LOTTO ' ridimension l'array preservando i valori precedenti
Call LeggiDataEId(aRetEstr(nTrovate), aRighe(nRiga), nAnno)
End If
If InStr(aRighe(nRiga), "numeroEstratto") Then
' è la riga che contiene uno dei numeri estratti
End If
Next
End Sub
si nota che durante il ciclo di lettura delle righe ogni volta che troviamo la parola "numeroEstrazione" andiamo sia ad incrementare
la dimensione dell'array che conterra le estrazioni e inoltre contesualmente andiamo a valorizzare i membri di quel nuovo elemento appena
predisposto nell'array per quanto riguarda i valori di data e numero estrazione
ora dibbiamo gestire le righe che contengono i numeri estratti , come abbiamo visto in fase di analisi le righe con i numeri estratti
appartengono alla data letta per ultima e quindi all'elemento identificato da nTrovate nell'array aRetEstr
sappiamo gia a priori che dovremo leggere 20 righe ognuna riferita ad uno dei numeri estratti , percio introduciamo
una variabile per conteggiare le righe lette , questa variabile si deve azzerare nello stesso momento in cui troviamo una nuova
data e si deve incrementare di 1 ogni volta che troviamo un nuovo numero.
Ecco come va modificata la procedura
Codice:
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno As Integer)
Dim nRiga As Long 'cicla sulel righe lette
Dim nNumTrovati As Integer' gestisce i 20 num trovat per ogni estrazione
Dim nTrovate As Long 'conteggia le estrazioni trovate
ReDim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file
For nRiga = 0 To UBound(aRighe)
If InStr(aRighe(nRiga), "numeroEstrazione") Then
' è la riga che contiene la data ed è quella che ci indica che abiamo trovato una nuova estrazione
nTrovate = nTrovate + 1 ' incremento le estrazioni trovate
ReDim Preserve aRetEstr(nTrovate) As STRUCT_ESTRAZIONE_10LOTTO ' ridimension l'array preservando i valori precedenti
Call LeggiDataEId(aRetEstr(nTrovate), aRighe(nRiga), nAnno)
nNumTrovati = 0
End If
If InStr(aRighe(nRiga), "numeroEstratto") Then
' è la riga che contiene uno dei numeri estratti
nNumTrovati = nNumTrovati + 1
End If
Next
End Sub
ora ogni nuovo ennesimo numero che troviamo dobbiamo andare a valorizzare il membro dell'elemento nTrovate dell'array aRetEstr
anche in questo caso ragioniamo come prima e scopriamo che ci farebbe comodo una sub alla quale passare l'elemento
dell'array aRetEstr che deve essere valorizzato , e la riga letta dal file html. Tale funzione legge la riga estrapola i dati e li scrive
nell'elemento dell'array.
ecco il prototipo
Codice:
Sub LeggiNumeroEstratto(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String, nIdNumeroDaValorizzare As Integer)
end sub
il primo parametro sarà l'elemento dell'array i cui membri che dovremo valorizzare
il secondo la riga contenente i dati il terzo l'indice del numero da valorizzare (da 1 a 20)
Sappiamo come interpretare la riga in base all'analisi fatta all'inizio
la procedura diventa cosi
Codice:
Sub LeggiNumeroEstratto(structEstr As STRUCT_ESTRAZIONE_10LOTTO, sRiga As String, nIdNumeroDaValorizzare As Integer)
Dim i As Integer
Dim sTemp As String
ReDim aV(0) As String
aV() = Split(sRiga, ">")
i = InStr(aV(2), "<")
sTemp = Left(aV(2), i - 1)
structEstr.aNum(nIdNumeroDaValorizzare) = Val(sTemp)
End Sub
ora siamo pronti per usare questa sub all'interno di quella che legge le estrazioni che diventa
[/ode]
Sub LeggiFileHtmlTornaEstrazioni(sFile As String, aRetEstr() As STRUCT_ESTRAZIONE_10LOTTO, nAnno As Integer)
Dim nRiga As Long 'cicla sulel righe lette
Dim nNumTrovati As Integer ' gestisce i 20 num trovat per ogni estrazione
Dim nTrovate As Long 'conteggia le estrazioni trovate
ReDim aRetEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
ReDim aRighe(0) As String ' preparo l'array che conterà le righe del file
Call LeggiFileTornaRighe(sFile, aRighe) ' leggo il file
For nRiga = 0 To UBound(aRighe)
If InStr(aRighe(nRiga), "numeroEstrazione") Then
' è la riga che contiene la data ed è quella che ci indica che abiamo trovato una nuova estrazione
nTrovate = nTrovate + 1 ' incremento le estrazioni trovate
ReDim Preserve aRetEstr(nTrovate) As STRUCT_ESTRAZIONE_10LOTTO ' ridimension l'array preservando i valori precedenti
Call LeggiDataEId(aRetEstr(nTrovate), aRighe(nRiga), nAnno)
nNumTrovati = 0
End If
If InStr(aRighe(nRiga), "numeroEstratto") Then
' è la riga che contiene uno dei numeri estratti
nNumTrovati = nNumTrovati + 1
Call LeggiNumeroEstratto(aRetEstr(nTrovate), aRighe(nRiga), nNumTrovati)
End If
Next
End Sub
[/code]
direi che abbiamo quasi finito , infatti il grosso del lavoro è fatto , siamo risusciti a leggere la pagina html e ci tornano indietro le estrazioni
lette.
Vediamo come richiamre la sub LeggiFileHtmlTornaEstrazioni da quella principale InitAggiornamentoDL5M
Codice:
Sub InitAggiornamentoDL5M()
Dim sDataUltimaEstr As String
Dim idEstr As Long
Dim numEstr As Long
Dim sTemp As String
Dim k As Long
Dim sNuovaData As String
Dim sLinkHtml As String, sFileLocal As String
ImpostaArchivio10ELotto (2) ' Con questo imposto l'archivio a quello del 10eLotto 5minuti
sTemp = GetInfoEstrazioneDL(EstrazioniArchivioDL) ' Con questo scrivo il risultato ottenuto in una variabile temporanea
' leggo i dati contenuti nella variabile temporanea e li separo con la funzione split
ReDim aV(0) As String
aV() = Split(sTemp, " ")
' Formato risultato del GetInfoEstrazioneDL [01189] [208] 11.04.2014
' 1° Elemento Array ->[01189]
' 2° Elemento Array ->[208]
' 3°Elemento Array ->11.04.2014
' Gli array partono da 0 perciò memorizzo i singoli valori nelle apposite variabili
' ricordando che bisogna "normalizzarli" togliendo le parentesi quadre e sostitundo il punto(.) con lo slash(/)
' Elimino le parentesi quadre dall'id estrazione contenuto nell'elemento 0 dell'array aV()
aV(0) = Replace(aV(0), "[", "")
aV(0) = Replace(aV(0), "]", "")
' Elimino le parentesi quadre dal numero estrazione contenuto nell'elemento 1 dell'array aV()
aV(1) = Replace(aV(1), "[", "")
aV(1) = Replace(aV(1), "]", "")
' cambio il punto con lo slash nell'elemento 2 dell'array aV()
aV(2) = Replace(aV(2), ".", "/")
' Adesso è possibile memorizzare i dati nelle variabili
idEstr = Val(aV(0))
numEstr = Val(aV(1))
sDataUltimaEstr = aV(2)
' Qui inizia il ciclo di lettura delle pagine html da scaricare
sNuovaData = sDataUltimaEstr ' La partenza avviene dall'ultima data disponbile trovata in archivio
Do While Format(sNuovaData, "yyyymmdd") <= Format(Now, "yyyymmdd")
sLinkHtml = "http://www.lottomaticaitalia.it/10elotto/estrazioni-e-vincite/popup-pdf/estrazioni-giorno.html?data=" & Format(sNuovaData, "yyyymmdd") ' costruisce il link di base
sFileLocal = App.Path & "\Temp\" & Format(sNuovaData, "yyyymmdd") & ".html" ' costruuisce il percorso nel quale salvare i vari file in locale
Call DownloadFromWeb(sLinkHtml, sFileLocal) ' scarico i file
ReDim aEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
Call LeggiFileHtmlTornaEstrazioni(sFileLocal, aEstr, Year(sNuovaData))
sNuovaData = DateAdd("d", 1, sNuovaData) ' aggiunge un giorno e ottiene una nuova data
Loop
End Sub
con questo codice siamo in grado di scaricare e interpretare tutte le pagine delle estrazioni , per ogni iterazione del ciclo do loop prima di calcolare la nuova data , andremo a vedere se bisogna scrivere nell'archivio le estrazioni trovate.
Infatti ricordati che partiamo dall'ultima data gia in archivio quindi alcune estrazioni gia le abbiamo e nonostante la procedura che legge il
file html ce le faccia tornare noi quelle non dobbiamo inserirle , dobbiamo inserire solo quelle che mancano
quindi ricapitolando , lanciamo la sub LeggiFileHtmlTornaEstrazioni , questa ci trona un array con n estrazioni e nella circostanza in cui
lew estrazioni sono quelle dell'ultima data che gia abbimo dobbiamo stare attenti a saltare quelle gia in archivio.
Le possiamo riconoscere tramite NumeroEstrazione , in pratica se la data è quella dell'ultima estrazione e il numero estrazione è maggiore di quello
che avevamo letto all'inzio le dobbiamo prendere senno no.
Tuto questo solo nel caso di data uguale all'ultima data inserita , neglia ltri casi ovvero le date successive le estrazioni vanno prese tutte
Qui entri in gioco tu , qust'ultima parte del codice te la spiego in teoria e tu dovrai implemetarla.
Dopo aver lanciato LeggiFileHtmlTornaEstrazioni e prima di calcolare la nuova data dovrai implementare il codice che
1) cicli con un ciclo for sull'array aEstr da 1 a ubound(aEstr)
2) se la data attuale del file scaricato è quella uguale all'ultima in archivio gestire le estrazioni da saltare
3) scrivere l'estrazione dell'elemento identificato dalla variabile di controllo del suddetto ciclo nell'archivio 10 e lotto mediante la funzione
SalvaEstrazioneDL
4) cancellare il file locale che ormai non serve piu
per aiutarti ancora faccio un'abbozzo , è ovvio che devi scrivere tu il codice di questa procedura
Codice:
sub SalvaEstrazioni (aEstr() as STRUCT_ESTRAZIONE_10LOTTO , sDataUltimaEstrArchivio as string , sDataCorrente as string )
dim k as long
for k = 1 to ubound (aEstr)
SalvaEstrazioneDL
next
end sub
SalvaEstrazioni la dovrai chiamare dirante il ciclo Do loop subito dopo LeggiFileHtmlTornaEstrazioni e prima di calcolare la nuova data.
Ciao