Novità

AIUTO , SE POTETE, AGGIORNAMENTO 10ELOTTO5MIN

Ciao Carmine .. alimentare un array vuol dre semplicemente riempirlo.
Scusa tu sai che c'è una procedura principale che scorre le date una alla volta , questa procedura per ogni data scarica un file html , poi lancia una funzione
che legge il file html e torna tutte le estrazioni della pagina letta , poi successivamente le estrazioni contenute nell'array vengono salvate in archivio , poi il giro
si ripete fino a che non ci sono piu giorni da elaborare.
questo dovrebbe essere piu che chiaro ... la programazione non è tanto codice ma bensi logica ..
in quale punto del codice tu dsponi di un array con riempito con tutti i suoi bei valori ?
Bhe è in qel punto che puo mostrare la data e l'ora e le estraazioni aggiunte...
non è che devi prendermi alla lettera .. devi capire quello che dico ...poi sperimenta come abbiamio gia detto
a far le prove non si rompe nulla.
L'unica cosa che ti chiedo è di non metterti a fare prove a caso come fanno quelli che secondo loro
modificano gli script ... se fai qualche prova il tutto deve partire da una logica poi puoi pure non riuscire ma almeno sai perche stavi facendo in qual modo.
quindi ripeto .. zero tentativi a caso.
Ciao
 
Ultima modifica di un moderatore:
Ciao Luigi, allora prove a caso no, non avrebbe senso e non credo aiuti a capire e comprendere...

Allora facendo tutto il ragionamento di come gira il flusso totale del codice, ho elaborato che il punto migliore da dove prendere i valori che a me servono è nella procedura chiamata Salvaestrazione, perchè appunto è la parte finale del flusso avente appunto l'array riempito di tutti i valori che poi andrò a scrivere fisicamente in archivio.

Nel dettaglio, ho inserito questo :

Codice:
Private Sub SalvaEstrazioni(aEstr() As STRUCT_ESTRAZIONE_10LOTTO, sDataUltimaEstrArchivio As String, sDataCorrente As String, NumEstr As Long)
    Dim k As Long
    Dim n As Long
    Dim sFile As String
    Dim sData As String
    Dim nNumEst As Integer

    sFile = GetDirectoryAppData & "BaseDati10Elotto5M.Dat"    ' Setto il path del percorso dove andare a scrivere le estrazioni
    ReDim aNumeri(0)    ' Ridimensiono l'array aNumeri a 0 elementi
        
    If sDataUltimaEstrArchivio = sDataCorrente Then    ' Se l'ultima data rilevata in archivio è uguale alla data odierna
        For k = 1 To UBound(aEstr) ' Cicla l'array aEstr da 1 a quante estrazioni legge nella pagina html
            If aEstr(k).strctData.nNumEstrazione > NumEstr Then ' Se il numero estrazione della pagina html scaricata è maggiore dell'ultimo in archivio
                Call LeggiNumeriEstrazioni(aEstr(k), aNumeri)    ' Richiamo la funzione LeggiNumeriEstrazioni
                [COLOR="#FF0000"][B]LblNumEstr.Caption = k ' Valorizzo la label Numero Estrazione che scorre man mano che vengono viste estrazioni
                LblNumEstr.Refresh ' Faccio il refresh della caption per la label
                LblOraEstr.Caption = GetOraEstrazione(k) ' Mostro l'ora dell'estrazione tramite la function GetoraEstrazione
                LblOraEstr.Refresh ' Faccio il refresh della caption per la label
                DoEvents[/B][/COLOR]
                Call SalvaEstrazioneDL(aNumeri, sDataCorrente, aEstr(k).strctData.nNumEstrazione, sFile) ' Richiamo la procedura che salva le estrazioni
            End If
        Next
    Else
        For k = 1 To UBound(aEstr)    ' Cicla l'array aEstr da 1 a quante estrazioni legge nella pagina html
            Call LeggiNumeriEstrazioni(aEstr(k), aNumeri)    ' Richiamo la funzione LeggiNumeriEstrazioni
           [COLOR="#FF0000"][B] LblNumEstr.Caption = k ' Valorizzo la label Numero Estrazione che scorre man mano che vengono viste estrazioni
            LblNumEstr.Refresh ' Faccio il refresh della caption per la label
            LblOraEstr.Caption = GetOraEstrazione(k) ' Mostro l'ora dell'estrazione tramite la function GetoraEstrazione
            LblOraEstr.Refresh ' Faccio il refresh della caption per la label
            DoEvents[/B][/COLOR]
            Call SalvaEstrazioneDL(aNumeri, sDataCorrente, aEstr(k).strctData.nNumEstrazione, sFile)    ' Richiamo la procedura che salva le estrazioni
        Next
    End If
End Sub

Da qui, oltre a chiederTi se la logica che ho seguito è corretta, Ti chiedo se è corretto fare il refresh come vedi in procedura e se è corretto inserire il DoEvents per un blocco eventuale dell'utente della procedura...

Ora sempre con logica, devo capire dove è meglio fare la valorizzazione totale delle estrazioni aggiunte, quindi non il conteggio fino a 288 ma un conteggio totale di tutte le estrazioni di tutti i giorni viste...
 
ciao Carmine , cosi va benissimo . Il refresh è superfluo se usi il do events.
Per conteggiare le estrazioni inserite
dichiara una variabile TotInserite nella procedura che chiama SalvaEstrazioni
In SalvaEstrazioni metterai un nuovo parametro di tipo long dove passerai la variabilerr appena dichiarata.
In SalvaEstrazioni questa variabile si incrementa e nella procedura che la chiama la userai per valorizzare un'altra label.

dentro SalvaEstrazioni questa nuova variabile si incrementera.
Poi nella procedura che chiama SalvaEstrazioni mostrerai il valore di questa variabile
 
Ciao Luigi,

per il refresh hai ovviamente ragione, è superfluo. Fa il suo lavoro ugualmente solo con il DoEvents...

Per il conteggio estrazioni ho fatto tutto, funziona solo che non incrementa di uno in uno...ma di 288 in 288 cioè ad ogni "giornata"...non cambia nulla sono solo dettagli...
 
Benissimo , e allora eventualmente come si fa a far vedere che scorre di uno in uno ?
 
Due sono le opzioni :

- Valorizzare la label in un punto diverso della proedura

- Prendere il valore del membro dell'array che man mano viene popolato..
 
Infatti Luigi hai fatto bene ad accendere la uno, era da valorizzare in un'altro punto della procedura.

Ora incremento la variabile e passo il valore, risultato la label conteggia e scorre tutto il totale delle estrazioni aggiunte.

Direi che sono quasi al capolinea, ora devo permettere all'utente di fare un'eventuale "annulla" della procedura con il command button annulla...credo si tratti di interrompere il ciclo for che la procedura fa, ho solo paura che un'eventuale interruzione vada a "fare casino" all'interno dell'archivio di spaziometria mentre lo si sta aggiornando...
 
Ultima modifica:
Bravo ! molto bene ... no casini perche dovrebbero capitare. Se il process odi aggiornamento si interrompe nell'archivio rimangono solo le estrazioni gia inserite.
Ovviamente gestisci l'exit do immediatamente prima del loop.
In questo modo le estrazioni lette dall'ultima pagina scaricata saranno comunque tutte inserite.
 
Ciao Luigi,

purtroppo ho bisogno di "capire" cioè di un Tuo aiuto anche per la gestione dell'exit do...allora Tu dici di gestirlo immediatamente prima del loop, io per logica ho capito e fatto quanto sotto.


Questo era già presente nel progetto fin dall'inizio e ho pensato di poterlo utilizzare...
Codice:
Public bFerma As Boolean

Poi nella procedura dove è presente il Do Loop ho pensato di inserire subito prima del loop questo :

Codice:
bFerma = False

Infine nel pulsante con caption annulla c'è :
Codice:
Private Sub XPButton3_Click()
bFerma = True
End Sub

Spero di non ricevere l'ennesimo "cazziatone" da Te Luigi... :)
 
hai fatto benissimo , manca solo l'istruzione che esce dal ciclo .. dove la metterai ?
ciao
 
L'istruzione che esce dal ciclo intendi :

If bFerma = True Then Exit Do ???

Pensavo di inserirlo qui :

Codice:
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 base
        sFileLocal = App.Path & "\Temp\" & Format(sNuovaData, "yyyymmdd") & ".html"    ' costruuisce il percorso per il file in locale
        Call DownloadFromWeb(sLinkHtml, sFileLocal)    ' scarica il file

        ReDim aEstr(0) As STRUCT_ESTRAZIONE_10LOTTO
        Call LeggiFileHtmlTornaEstrazioni(sFileLocal, aEstr, Year(sNuovaData))    ' richiamo la funzione "LeggiFileHtmlTornaEstrazioni"

        Call SalvaEstrazioni(aEstr, sDataUltimaEstr, sNuovaData, NumEstr, TotInserite)    ' richiamo la funzione "SalvaEstrazioni"

        sNuovaData = DateAdd("d", 1, sNuovaData)    ' aggiunge un giorno e ottiene una nuova data
        
        ValUsed = ValUsed + 1
        
        ProgBarXP1.Value = PercentualeCorrente(ValUsed, ValTot)
        
        LlbDataAggiunta.Caption = sNuovaData
        
        If Format(sNuovaData, "yyyymmdd") > Format(Now, "yyyymmdd") Then
        LlbDataAggiunta.Caption = Format(Now, "dd/mm/yyyy")
        End If

        DoEvents

        [COLOR="#FF0000"][B]If bFerma = True Then Exit Do[/B][/COLOR]
        
Loop

Ovviamente come avrai già visto, non funziona...non mi dà alcun errore ma non si blocca il processo di aggiornamento...
 
ciao , no non ho controllato comunque è giusto cosi , se non esce probabilmente bFerma non vale true ...
fai le tue prove e sistemalo.
 
x luigib

ciao scusa
ho installato spazio su un pc che non ha office
ho scaricato openoffice
ma se voglio esportare le colonne in excel non riesco
hai qualche dritta?
 
Ciao Luigi,

da Te sempre le soluzioni più semplici :) ( mi riferisco alla domanda di giluge...)

Tornando al codice, ora tutto funziona e la procedura è corretta come l'avevo scritta...

Adesso sono alle prese con lo scrivere la funzioncina che cancella i file html temporaneamente scaricati per la lettura delle estrazioni, pensavo ad un qualcosa tipo:

- passargli come parametro il path della locazione dei file

- fare un kill dei vari html subito dopo averne salvato le estrazioni in archivio


Credo che la logica può andare...
 
Ultima modifica:
Ciao Moro , basta inserire un kill dopo la lettura del file html , mi pare che la procedura si chiamasse LeggiHtmlTornaEstrazioni o qualcosa di simile.
Il concetto è eliminare il file immediatamente dopo averlo letto , in alternativa potresti pensare a un percorso dove spostare i file letti in modo
da poterli rileggere tutti in caso di archivio corrotto /rovinato , Con questa seconda soluzione dovresti prevedere eventualmente un aggiornamento da internet oppure da percorso locale... ad ogni modo solo per parlare non è necessaria una funzione simile.

Per Giulge :

Se io ti do un piatto di spaghetti tu lo mangi col cucchiaio ?
Ci vuole la forchetta ...
Stessa cosa se il programma esporta in excel per funzionare gli serve excel non open office ...
 
xluigib

mi sono rivolto a te perche' - sei il progettista del prog- trovi sempre soluzioni ai problemi ecc-pensavo appunto che ci fosse soluzione.

scusa se ti ho rotto-
x moro-80, nemmeno io ho nulla contro di te, ma a volte....
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto