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ì 20 maggio 2025
    Bari
    12
    60
    87
    01
    02
    Cagliari
    36
    24
    53
    35
    16
    Firenze
    55
    51
    21
    18
    35
    Genova
    05
    31
    25
    82
    45
    Milano
    81
    45
    88
    35
    31
    Napoli
    11
    54
    68
    70
    82
    Palermo
    74
    69
    90
    57
    25
    Roma
    57
    09
    16
    54
    79
    Torino
    24
    07
    88
    51
    79
    Venezia
    41
    13
    07
    56
    19
    Nazionale
    81
    12
    83
    76
    01
    Estrazione Simbolotto
    Milano
    40
    09
    27
    33
    20

Ultimi Messaggi

Indietro
Alto