L
LuigiB
Guest
mi sembra strano che altri funzionino.
scarica l'ultima versione e registra la dll dopo riprova
scarica l'ultima versione e registra la dll dopo riprova
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Dim aNumeri As Variant
aNumeri = Array (1, 2, 3)
Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 1, ret, BA_)
Scrivi "Ritardo : " & ret.RetValori.Ritardo
Scrivi "RitardoMax : " & ret.RetValori.RitardoMax
Scrivi "Presenze : " & ret.RetValori.Presenze
Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple
Function SerieFreq(Numeri As Variant, Ruote As Variant, Sorte As Long, Inizio As Long, Fine As Long) As Long
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Call StatisticaSingoloEsito(Numeri, Inizio, Fine, Sorte, ret, Ruote)
Return ret.RetValori.Presenze
End Function
Public Sub MyScriptRoutine()
' scrivere qui il proprio codice come se fosse la submain di spaziometria. non cambiare nome alla routine
Dim k As Long, j As Long
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Dim aNumeri As Variant
aNumeri = Array (1, 2, 3)
Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 1, ret, BA_)
Scrivi "Ritardo : " & ret.RetValori.Ritardo
Scrivi "RitardoMax : " & ret.RetValori.RitardoMax
Scrivi "Presenze : " & ret.RetValori.Presenze
Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple
Scrivi
Scrivi "Presenze : " & SerieFreq (aNumeri, BA_, 1, EstrazioneIni, EstrazioneFin)
Scrivi
ReDim aTest(10, 10) As Long
For k = 0 To 10
For j = 0 To 10
aTest (k, j) = NumeroCasuale (1, 90)
Next
Next
Call ScriviMatrice(aTest)
End Sub
Function SerieFreq(Numeri As Variant, Ruote As Variant, Sorte As Long, Inizio As Long, Fine As Long) As Long
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Call StatisticaSingoloEsito(Numeri, Inizio, Fine, Sorte, ret, Ruote)
Return ret.RetValori.Presenze
End Function
Sub ScriviMatrice(matricebidimensionale As Variant, Optional cifredecimali As Integer = 0, Optional Lunghezza As Integer = 6)
On Error GoTo errUNKNOWN
Dim k As Long
Dim j As Long
Dim sText As String
Dim sTextTot As String
If cifredecimali < 0 Then cifredecimali = 0
If Lunghezza <= 0 Or Lunghezza > 20 Then Lunghezza = 6
For k = 0 To UBound(matricebidimensionale)
sText = ""
For j = 0 To UBound(matricebidimensionale, 2)
If Not IsEmpty(matricebidimensionale(k, j)) Then
If IsNumeric(matricebidimensionale(k, j)) Then
sText = sText & FormatString (CStr(Round(matricebidimensionale(k, j), cifredecimali)), Space$(Lunghezza), 0) & " "
Else
sText = sText & FormatString(CStr(matricebidimensionale(k, j)), Space$(Lunghezza), 0) & " "
End If
Else
sText = sText & FormatString(CStr(matricebidimensionale(k, j)), Space$(Lunghezza), 0) & " "
End If
Next
If Trim(sText) <> "" Then
sTextTot = sTextTot & sText & "<br>"
End If
Next
Call Scrivi(sTextTot)
errUNKNOWN:
Select Case Err
Case Is <> 0
MsgBox CStr(Err.Number) & "- " & Err.Description
Err.Clear
End Select
End Sub
nel nuovo ambiente la funzione per la statistica è una sola e da tutti i risultati che servono i quali ritornano dentro una variabile che li contiene tutti
questo è l'esempio
Codice:Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO Dim aNumeri As Variant aNumeri = Array (1, 2, 3) Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 1, ret, BA_) Scrivi "Ritardo : " & ret.RetValori.Ritardo Scrivi "RitardoMax : " & ret.RetValori.RitardoMax Scrivi "Presenze : " & ret.RetValori.Presenze Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple
da questo esempio possiamo costruire la nostra SerieFreq come in spaziometria
Codice:Function SerieFreq(Numeri As Variant, Ruote As Variant, Sorte As Long, Inizio As Long, Fine As Long) As Long Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO Call StatisticaSingoloEsito(Numeri, Inizio, Fine, Sorte, ret, Ruote) Return ret.RetValori.Presenze End Function
ScriviMatrice me l'ero scordata , momentaneamente te la metto inieme allo script , in un prossimo aggiornamento sarà disponibile come le altre funzini
ecco l' esempio completo
Codice:Public Sub MyScriptRoutine() ' scrivere qui il proprio codice come se fosse la submain di spaziometria. non cambiare nome alla routine Dim k As Long, j As Long Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO Dim aNumeri As Variant aNumeri = Array (1, 2, 3) Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 1, ret, BA_) Scrivi "Ritardo : " & ret.RetValori.Ritardo Scrivi "RitardoMax : " & ret.RetValori.RitardoMax Scrivi "Presenze : " & ret.RetValori.Presenze Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple Scrivi Scrivi "Presenze : " & SerieFreq (aNumeri, BA_, 1, EstrazioneIni, EstrazioneFin) Scrivi ReDim aTest(10, 10) As Long For k = 0 To 10 For j = 0 To 10 aTest (k, j) = NumeroCasuale (1, 90) Next Next Call ScriviMatrice(aTest) End Sub Function SerieFreq(Numeri As Variant, Ruote As Variant, Sorte As Long, Inizio As Long, Fine As Long) As Long Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO Call StatisticaSingoloEsito(Numeri, Inizio, Fine, Sorte, ret, Ruote) Return ret.RetValori.Presenze End Function Sub ScriviMatrice(matricebidimensionale As Variant, Optional cifredecimali As Integer = 0, Optional Lunghezza As Integer = 6) On Error GoTo errUNKNOWN Dim k As Long Dim j As Long Dim sText As String Dim sTextTot As String If cifredecimali < 0 Then cifredecimali = 0 If Lunghezza <= 0 Or Lunghezza > 20 Then Lunghezza = 6 For k = 0 To UBound(matricebidimensionale) sText = "" For j = 0 To UBound(matricebidimensionale, 2) If Not IsEmpty(matricebidimensionale(k, j)) Then If IsNumeric(matricebidimensionale(k, j)) Then sText = sText & FormatString (CStr(Round(matricebidimensionale(k, j), cifredecimali)), Space$(Lunghezza), 0) & " " Else sText = sText & FormatString(CStr(matricebidimensionale(k, j)), Space$(Lunghezza), 0) & " " End If Else sText = sText & FormatString(CStr(matricebidimensionale(k, j)), Space$(Lunghezza), 0) & " " End If Next If Trim(sText) <> "" Then sTextTot = sTextTot & sText & "<br>" End If Next Call Scrivi(sTextTot) errUNKNOWN: Select Case Err Case Is <> 0 MsgBox CStr(Err.Number) & "- " & Err.Description Err.Clear End Select End Sub
Numeri | indica i numeri oggetto della ricerca può essere un singolo numero per esempio 45 una stringa di numeri separata da virgola o altro per esempio "1,2,3" un array di numeri interi per esempio N = array (1,2,3) |
nEsitoDaCercare | Sorte per la quale si esegue la statistica |
idEstrazioneIni | Range inizio sul quale opera la funzione |
Risultato | struttura che ritorna i parametri statistici dell'esito cercato STRUCT_VERIFICAESITO_RISULTATO |
Ruote | Indica le ruote coinvolte Può essere un singolo numero per esempio 1 per bari , 11 per nazionale una stringa di numeri separata da virgola o altro per esempio "1,2,3" le prime 3 ruote un array di numeri interi per esempio N = array (1,2,3) |
Posizioni | Indica le posizione coinvolte da considerare puo essere un singolo numero per esempio 1 bari puo essere uan stringa per esempio "1,3" per le posizioni 1 e 3 escludendo le altre puo essere un array in questo caso deve essere un'array di boolean e non di interi |
nColpiMax | colpi massimi entro i quali cercare l'esito |
idArchivio | indice per identificare l'archivio , parte da 0 |
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
'Dim Risultato As STRUCT_VERIFICAESITO_RISULTATO
'Dim aRetTrovati () = STRUCT_STATISTICHE_TROVATI()
Dim aNumeri As Variant
Dim aRuote As Variant
Dim T As Variant
aNumeri = Array (15, 48, 21, 75)
aRuote = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ' Tutte
T = Array("Ritardo", "RitMax", "Presenze", "Presenze_Multipla", "VerificaEsito")
Call InitTabella(T, vbGreen, , , vbWhite)
Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 2, ret, aRuote)
' Call VerificaEsito(aNumeri, 2, EstrazioneFin - 10, Risultato, aRuote, , 10, aRetTrovati())
'Scrivi "Ritardo : " & ret.RetValori.Ritardo
'Scrivi "RitardoMax : " & ret.RetValori.RitardoMax
'Scrivi "Presenze : (t)" & ret.RetValori.Presenze
'Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple
T = Array(ret.RetValori.Ritardo, ret.RetValori.RitardoMax, ret.RetValori.Presenze, ret.RetValori.PresenzeMultiple, "Scrivere_ESITO")
Call AddRigaTabella(T)
Call CreaTabella()
Scrivi " Tempo Trascorso" & TempoElaborazioneSecondi
Public Sub MyScriptRoutine()
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Dim Risultato As STRUCT_VERIFICAESITO_RISULTATO
Dim aRetTrovati () As STRUCT_STATISTICHE_TROVATI
Dim aNumeri As Variant
Dim aRuote As Variant
Dim T As Variant
aNumeri = Array (15, 48, 21, 75)
aRuote = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ' Tutte
T = Array("Ritardo", "RitMax", "Presenze", "Presenze_Multipla", "VerificaEsito")
Call InitTabella(T, vbGreen, , , vbWhite)
Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, 2, ret, aRuote)
If VerificaEsito(aNumeri, 2, EstrazioneFin - 10, Risultato, aRuote, , 10, aRetTrovati) Then
T = Array(ret.RetValori.Ritardo, ret.RetValori.RitardoMax, ret.RetValori.Presenze, ret.RetValori.PresenzeMultiple, "Colpi : " & Risultato.ColpiUsati & " per esito " & Risultato.EsitoTrovato & " comb " & StringaNumeri(aRetTrovati(1).aNumeri))
Else
T = Array(ret.RetValori.Ritardo, ret.RetValori.RitardoMax, ret.RetValori.Presenze, ret.RetValori.PresenzeMultiple, "Colpi : " & Risultato.ColpiUsati)
End If
Call AddRigaTabella(T)
Call CreaTabella()
Scrivi " Tempo Trascorso : " & TempoElaborazioneSecondi
End Sub
Dim ret As STRUCT_FRZ_STATISTICA_SINGOLO_ESITO
Dim Ris As STRUCT_VERIFICAESITO_RISULTATO
Dim aTrovati () As STRUCT_STATISTICHE_TROVATI
Dim aNumeri As Variant
Dim aRuote As Variant
Dim T As Variant
Dim sorte As Long = 2
Dim nColpi As Long = 10
Dim k As Long
Dim a As String
aNumeri = Array (15, 48, 21, 75)
aRuote = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ' Tutte
T = Array("Ritardo", "RitMax", "Presenze", "Presenze_Multipla", "VerificaEsito")
Call InitTabella(T, vbGreen, , , vbWhite)
Call StatisticaSingoloEsito(aNumeri, EstrazioneIni, EstrazioneFin, sorte, ret, aRuote)
If VerificaEsito(aNumeri, sorte, EstrazioneFin - 10, Ris, aRuote, , nColpi, aTrovati) Then
Scrivi "Esito al colpo " & Ris.ColpiUsati
Scrivi "Sorte uscita " & Ris.EsitoTrovato
Scrivi "Presenze " & Ris.Presenze
Scrivi "PresenzeMult " & Ris.PresenzeMultiple
For k = 1 To UBound(aTrovati)
Scrivi (StringaNumeri(aTrovati(k).aNumeri) & " all'estrazione " & aTrovati(k).idEstrazione & " ruota " & aTrovati(k).idRuota)
a = SiglaRuota(aTrovati(k).idRuota) & " - " & StringaNumeri(aTrovati(k).aNumeri) & " - Colpo : " & Ris.ColpiUsati & " <> " & GetInfoEstrazione (aTrovati(k).idEstrazione)
Next
Else
Scrivi "Esito non trovato"
End If
'Scrivi "Ritardo : " & ret.RetValori.Ritardo
'Scrivi "RitardoMax : " & ret.RetValori.RitardoMax
'Scrivi "Presenze : (t)" & ret.RetValori.Presenze
'Scrivi "PresenzeMult : " & ret.RetValori.PresenzeMultiple
T = Array(ret.RetValori.Ritardo, ret.RetValori.RitardoMax, ret.RetValori.Presenze, ret.RetValori.PresenzeMultiple, a)
Call AddRigaTabella(T)
Call CreaTabella()
Scrivi " Tempo Trascorso : " & TempoElaborazioneSecondi & " sec "
Ritardo | RitMax | Presenze | Presenze_Multipla | VerificaEsito |
---|---|---|---|---|
4 | 55 | 1222 | 1350 | Mi - 15.75 - Colpo : 2 <> Id : 10192 28/01/2023 Indice Annuale : 12 |
Ciao a tutti, volevo segnalarvi che l'antivirus mi ha segnalato che:
Vedi l'allegato 2253845
cosa ne pensate?
Gia' visto e verificato, si tratta di un falso allarme! Scusate mentre scrivevo Luigi mi ha battuto in volata...Ciao a tutti, volevo segnalarvi che l'antivirus mi ha segnalato che:
Vedi l'allegato 2253845
cosa ne pensate?
Buongiorno a tutti e buona nuova settimana!
Siccome sto perdendo tempo per costruire un grid degno di tale nome, e considerando che quello disponibile in tB per ora non puo' fare cio' che mi serve, e inoltre dopo aver scoperto che nel mio win10 pro esiste una oscura versione di excel in lingua inglese che si apre quando devo visualizzare un allegato o un file con esso apribile, ho pensato bene di popolare un file excel con i dati che voglio presentare.
per @LuigiB
E' possibile verificare, in fase di run-time con tB, se su un dato pc windows esiste una qualche versione di ms excel gia' installata e ovviamente dell'ambiente VBA? Questo per non far andare in crash il sistema ospite. Io non ho ancora trovato la risposta, ma forse tu qualche idea migliore sicuramente l'avrai gia' nella tua preziosa esperienza di programmazione nell'ambito Windows.
Perche' se si puo' fare con tB, questo controllo, allora si ottengono due vantaggi, il grid da popolare per ottenere l'output desiderato diviene facile da fare (attingendo ai dati salvati in un file testo opportunamente formattato) e sopratutto si puo' ulteriormente lavorare sui dati (manualmente) o con le macro VBA all'interno di ms excel.
La tal cosa forse e' cio' a cui Joe sta cercando di trovare una soluzione accettabile. Spero ci sia un modo, compatibile con tB, per poterlo fare...
Grazie in anticipio
Function IsExcelPresente() As Boolean
On Error GoTo errore
Dim o As Object
Set o = CreateObject("excel.application")
o.quit
Set o = Nothing
Return True
errore:
If Err <> 0 Then
Err.Clear
End If
End Function
cioa Rookie , il metodo piu semplice è provare ad istanziarlo , se da errore è ovvio che non ci sia,
La funzione Creatabella del'ambiente ha un parametro che consente di riportare la tabelal che si è creata in un foglio excel la cui link compare nel file html di output sotto la tabella.
ecco la funzione
Codice:Function IsExcelPresente() As Boolean On Error GoTo errore Dim o As Object Set o = CreateObject("excel.application") o.quit Set o = Nothing Return True errore: If Err <> 0 Then Err.Clear End If End Function
Mi compiaccio della tua ottima conoscenza dell'ambiente windows. E sopratutto di fornire risposte informate rispetto a cio' che necessita al soggetto che ti pone il quesito. E sai aggiungere i giusti warnings per applicare praticamente quanto hai suggerito.si è corretto , per lavorare con excel si puo fare l'early binding o il late binding.
Con l'early binding puoi tranquillamente mettere la referenza aa microsoft excel nel pannello dei riferimenti , in questo modo la ptrai usare il modello di oggetti di excel dichiarando le variabili appropriate per esempio dim wb as exel.workbook , il che ti da indubbi vantaggi nella fase di programamzione visto che hai l'intellisense che ti fa vedere i metodi degli oggetti.
Con il late binding non è necessario mettere i riferimenti e tutte le variabili che si riferiscono a oggetti di excel son odefinite object , non avrai a disposizione l'intellisense quandoscrivi il codice.
in tutti i casi prima va istanziata una variabile che punti all'applicazione excel e se l'operazione è riuscita si procede altrimenti si informa l'utente che non ha excel.