Edoardo_95
Advanced Member
Fatto domani procederò con gli archivi paralleli.bisognerebbe mettere un tasto stop per interrompere volendo la statistica delle formazioni se dura troppo..
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.
Fatto domani procederò con gli archivi paralleli.bisognerebbe mettere un tasto stop per interrompere volendo la statistica delle formazioni se dura troppo..
Il controllo devo metterlo al load del form dove lancio il carimento degli item? oppure nel form crea archivi paralleli? non ho ben chiarook allora adesso innanzi tutto fai un controllo per la funzione degli archivi paralleli che non possa essere lanciata se nellacombo non è selezionato l'archivio reale.
Poi devi fare una modifica ,tu attualemnte le estrazioni le leggi nel formsplash , invece devi leggerle al selecteditem della combobox degli archivi.
In prati quando uno seleziona l'archivio nella combo la classea archivio prende il puntamento a quel file.
Aaaaaah ora ho capito. Bene mi metto all'opera appena possibiledato che gli archivi paralleli vengono creati a partire da quello reale , e dato che con la nostra combo possiamo selezionare un archivio diverso da quello reale per esempio l'archivio L1 , allora la funzione per creare gli archivi paralleli non deve essere abilitata se nella combo non è impostato l'archivioreale , in pratica l'index 0 della combo
invee all selectedchange devi ricaricare la classe archivio col nuovo file prendendolo appunto dalla combo che serve per selezionarlo e che hai gia alimentato
Bene allora nel form MDI mi sono creato una variabile privata globale al form.dato che gli archivi paralleli vengono creati a partire da quello reale , e dato che con la nostra combo possiamo selezionare un archivio diverso da quello reale per esempio l'archivio L1 , allora la funzione per creare gli archivi paralleli non deve essere abilitata se nella combo non è impostato l'archivioreale , in pratica l'index 0 della combo
invee all selectedchange devi ricaricare la classe archivio col nuovo file prendendolo appunto dalla combo che serve per selezionarlo e che hai gia alimentato
Private IndexArchivio As Integer
Private Sub cmbArchivio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbArchivio.SelectedIndexChanged
IndexArchivio = cmbArchivio.SelectedIndex
End Sub
Private Sub ArchiviParalleliPerPosizioneToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ArchiviParalleliPerPosizioneToolStripMenuItem.Click
Dim frm As New frmCreaArchPar(IndexArchivio, cmbArchivio)
ShowFormChild(frm, True)
End Sub
Private cmbTmp As ComboBox
Private IndexArchivioTmp As Integer
Sub New(IndexArchivio As Integer, cmb As ComboBox)
cmbTmp = cmb
IndexArchivioTmp = IndexArchivio
InitializeComponent()
GestioneAbilitaDisabilita(IndexArchivioTmp, cmbTmp)
End Sub
Sub GestioneAbilitaDisabilita(Index As Integer, cmb As ComboBox)
Dim bControlForm As Boolean
Dim bComboBox As Boolean
If Index = 0 Then bControlForm = True And bComboBox = False
ButtonOK.Enabled = bControlForm
cmb.Enabled = bComboBox
If Index <> 0 Then bControlForm = False And bComboBox = False
ButtonOK.Enabled = bControlForm
CheckBox1.Enabled = bControlForm
ComboBox1.Enabled = bControlForm
ButtonAnnulla.Enabled = bControlForm
cmb.Enabled = bComboBox
End Sub
Private Sub ButtonOK_Click(sender As Object, e As EventArgs) Handles ButtonOK.Click
If ButtonOK.Text = "OK" Then
SalvaValoreCfg(eValoriAppConfig.ArchiviParalleli, ComboBox1.SelectedIndex.ToString)
ButtonOK.Text = "STOP"
ButtonAnnulla.Enabled = False
GroupBox1.Enabled = False
GestioneEsegui()
ButtonOK.Text = "OK"
GroupBox1.Enabled = True
ButtonAnnulla.Enabled = True
cmbTmp.Enabled = True
MessageBox.Show("Fine processo", "Fine", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Close()
Else
cApNew.StopProcess()
End If
End Sub
Private Sub frmCreaArchPar_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If IndexArchivioTmp <> 0 Then
If MessageBox.Show("Gli archivi paralleli si possono creare a partire da un archivio di base. Selezionare l'archivio di base 'Lotto' in basso a sinistra. Archivio parallelo attualmente selezionato: " & cmbTmp.SelectedItem.ToString, GetNomeAppEVersione, MessageBoxButtons.OK, MessageBoxIcon.Information) Then
cmbTmp.Enabled = True
Me.Close()
End If
End If
End Sub
Per quanto riguarda la seconda parte ho semplicemente fatto cosìdato che gli archivi paralleli vengono creati a partire da quello reale , e dato che con la nostra combo possiamo selezionare un archivio diverso da quello reale per esempio l'archivio L1 , allora la funzione per creare gli archivi paralleli non deve essere abilitata se nella combo non è impostato l'archivioreale , in pratica l'index 0 della combo
invee all selectedchange devi ricaricare la classe archivio col nuovo file prendendolo appunto dalla combo che serve per selezionarlo e che hai gia alimentato
Private Sub cmbArchivio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbArchivio.SelectedIndexChanged
IndexArchivio = cmbArchivio.SelectedIndex
If IndexArchivio = 0 Then
sFileArchivio = GetPercorsoArchivio()
Else
sFileArchivio = GetPercorsoFileArchivioParallelo(IndexArchivio)
End If
cArchivio = New ClsArchivio(sFileArchivio)
End Sub
Sub CloseAllForm()
Dim formNames As New List(Of String)
For Each frm As Form In Application.OpenForms
If Not (TypeOf frm Is frmMdi) Then
formNames.Add(frm.Name)
End If
Next
For Each frmName As String In formNames
Application.OpenForms(frmName).Close()
Next
End Sub
Va bene procedofatto questo io direi di dedicarci alla finestra Estazione che ho messo io ieri.
Innanzi tutto da li è possibile lanciare la funzione edit/add estrazioni quindi attenzione in quel pulsante prima va fatto un controllo che faccia aprire il form add/edit solo se siamo nell'archivio reale.
Puoi tranquillamente testare l'index della combo box della selezione archivio , se è 0 il form puo essere aperto senno no.
successivamente bisogna alimentarte le listview delel somme e delle distanze tra gli estratti , le devi mettere perche io non le ho messe.
Sicuramente sarà una domanda sciocca e ti chiedo scusa ma non riesco a capire il perché. Vorrei prendere il valore della variabile globale interna al form con un readonly ma non funge.fatto questo io direi di dedicarci alla finestra Estazione che ho messo io ieri.
Innanzi tutto da li è possibile lanciare la funzione edit/add estrazioni quindi attenzione in quel pulsante prima va fatto un controllo che faccia aprire il form add/edit solo se siamo nell'archivio reale.
Puoi tranquillamente testare l'index della combo box della selezione archivio , se è 0 il form puo essere aperto senno no.
successivamente bisogna alimentarte le listview delel somme e delle distanze tra gli estratti , le devi mettere perche io non le ho messe.
Public ReadOnly Property ArchivioPuntato() As Integer
Get
Return IndexArchivio
End Get
End Property
Option Compare Text
Public Class clsEstrMonopoli
Private WebB As WebBrowser
Sub New()
WebB = New WebBrowser
End Sub
Public Property WebBrowser As WebBrowser
Get
Return WebB
End Get
Set(value As WebBrowser)
WebB = value
End Set
End Property
Sub Naviga(sUrl As String)
WebB.Navigate(sUrl)
Do While WebB.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Loop
End Sub
Friend Function GetEstrazione(ByRef strctE As StrEstrazione, Optional nTentativiMax As Integer = 20) As Boolean
Dim docAll As HtmlElementCollection = Nothing
Dim doc As HtmlDocument
Dim bFound As Boolean
Dim nTentativi As Integer
Dim nRuota As Integer, nPos As Integer
Dim sTemp As String
Dim nEstratto As Integer
nRuota = 1
strctE.DimensionaRuote()
Do
System.Threading.Thread.Sleep(500)
Application.DoEvents()
If Not IsNothing(WebB.Document) Then
doc = WebB.Document
For Each element In doc.All
If UCase(element.tagName) = "DIV" Then
If element.Id = "contenuti_aams" Then
docAll = element.All
Exit For
End If
End If
Next
If Not IsNothing(docAll) Then
For Each element As HtmlElement In docAll
If element.TagName.ToString.ToUpper = "TABLE" Then
If element.InnerText.Contains("Estrazione") Then
sTemp = element.InnerText
Dim i As Integer = sTemp.IndexOf(vbCrLf)
If i > 0 Then
sTemp = sTemp.Substring(0, i)
sTemp = Replace(sTemp, "n°", "")
Dim av() As String = sTemp.Split(" ")
If av.GetUpperBound(0) >= 3 Then
If IsDate(av(3)) AndAlso IsNumeric(av(1)) Then
strctE.Data.Data = ConvertTodate(av(3))
strctE.Data.Numero = ConvertToInt(av(1))
For Each cell As HtmlElement In element.All
If (cell.TagName.ToString.ToUpper).Contains("TD") Then
nEstratto = ConvertToInt(cell.InnerText.Trim)
If nEstratto > 0 Then
nPos += 1
If nPos = 6 Then
nPos = 1
nRuota += 1
End If
strctE.Ruote(nRuota).SetNumero(nEstratto, nPos)
End If
End If
Next cell
End If
End If
bFound = nRuota >= 10
End If
End If
End If
Next
End If
End If
nTentativi += 1
If nTentativi > nTentativiMax Then Exit Do
Loop While bFound = False
Return bFound
End Function
End Class
Sub AggiornaEstrazioni()
Dim w As clsEstrMonopoli = New clsEstrMonopoli
Dim strctLastE As StrEstrazione = New StrEstrazione
Dim strctE As New StrEstrazione
Dim sLink As String = "https://www.adm.gov.it/portale/monopoli/giochi/gioco-del-lotto/lotto_g/lotto_estr?prog=[PROG]&anno=[ANNO]" ' esempio : https://www.adm.gov.it/portale/monopoli/giochi/gioco-del-lotto/lotto_g/lotto_estr?prog=142&anno=2021
Dim sLinkTmp As String
Dim nLastMese As Integer
Dim nIndiceMensile As Integer
Dim nIdEstr As Integer
Dim nAggiornate As Integer
Dim NumEstrAnn As Integer
If cArchivio.GetEstrazione(cArchivio.QuantitaEstrazioni, strctLastE) Then
NumEstrAnn = strctLastE.Data.Numero
nLastMese = Month(strctLastE.Data.Data)
nIndiceMensile = strctLastE.Data.Numero
nIdEstr = cArchivio.QuantitaEstrazioni
For nAnno As Integer = Year(strctLastE.Data.Data) To Year(Now)
Do
NumEstrAnn += 1
sLinkTmp = Replace(sLink, "[PROG]", NumEstrAnn.ToString)
sLinkTmp = Replace(sLinkTmp, "[ANNO]", nAnno.ToString)
ListBox1.Items.Add(sLinkTmp)
ListBox1.SelectedIndex = ListBox1.Items.Count - 1
Application.DoEvents()
w.Naviga("abaut:blank")
w.Naviga(sLinkTmp)
If w.GetEstrazione(strctE) Then
nIdEstr += 1
If Month(strctE.Data.Data) = nLastMese Then
nIndiceMensile += 1
Else
nIndiceMensile = 1
End If
strctE.Data.Numero = NumEstrAnn
strctE.Data.IndiceMensile = nIndiceMensile
strctE.identifier = nIdEstr
nLastMese = Month(strctE.Data.Data)
cArchivio.ScriviEstrazione(nIdEstr, strctE)
nAggiornate += 1
Else
Exit Do
End If
Loop
NumEstrAnn = 0
Next
End If
MsgBox("Fine Estrazioni aggiornate : " & nAggiornate.ToString)
End Sub
Fattosospendiamo un secondo questa finestra per accontentare chi ci chiede degli aggiornamenti
inserisci questa classe
Codice:Option Compare Text Public Class clsEstrMonopoli Private WebB As WebBrowser Sub New() WebB = New WebBrowser End Sub Public Property WebBrowser As WebBrowser Get Return WebB End Get Set(value As WebBrowser) WebB = value End Set End Property Sub Naviga(sUrl As String) WebB.Navigate(sUrl) Do While WebB.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() Loop End Sub Friend Function GetEstrazione(ByRef strctE As StrEstrazione, Optional nTentativiMax As Integer = 20) As Boolean Dim docAll As HtmlElementCollection = Nothing Dim doc As HtmlDocument Dim bFound As Boolean Dim nTentativi As Integer Dim nRuota As Integer, nPos As Integer Dim sTemp As String Dim nEstratto As Integer nRuota = 1 strctE.DimensionaRuote() Do System.Threading.Thread.Sleep(500) Application.DoEvents() If Not IsNothing(WebB.Document) Then doc = WebB.Document For Each element In doc.All If UCase(element.tagName) = "DIV" Then If element.Id = "contenuti_aams" Then docAll = element.All Exit For End If End If Next If Not IsNothing(docAll) Then For Each element As HtmlElement In docAll If element.TagName.ToString.ToUpper = "TABLE" Then If element.InnerText.Contains("Estrazione") Then sTemp = element.InnerText Dim i As Integer = sTemp.IndexOf(vbCrLf) If i > 0 Then sTemp = sTemp.Substring(0, i) sTemp = Replace(sTemp, "n°", "") Dim av() As String = sTemp.Split(" ") If av.GetUpperBound(0) >= 3 Then If IsDate(av(3)) AndAlso IsNumeric(av(1)) Then strctE.Data.Data = ConvertTodate(av(3)) strctE.Data.Numero = ConvertToInt(av(1)) For Each cell As HtmlElement In element.All If (cell.TagName.ToString.ToUpper).Contains("TD") Then nEstratto = ConvertToInt(cell.InnerText.Trim) If nEstratto > 0 Then nPos += 1 If nPos = 6 Then nPos = 1 nRuota += 1 End If strctE.Ruote(nRuota).SetNumero(nEstratto, nPos) End If End If Next cell End If End If bFound = nRuota >= 10 End If End If End If Next End If End If nTentativi += 1 If nTentativi > nTentativiMax Then Exit Do Loop While bFound = False Return bFound End Function End Class
in un form con una listbox invece metti questa sub e lanciala da un pulsante.
Codice:Sub AggiornaEstrazioni() Dim w As clsEstrMonopoli = New clsEstrMonopoli Dim strctLastE As StrEstrazione = New StrEstrazione Dim strctE As New StrEstrazione Dim sLink As String = "https://www.adm.gov.it/portale/monopoli/giochi/gioco-del-lotto/lotto_g/lotto_estr?prog=[PROG]&anno=[ANNO]" ' esempio : https://www.adm.gov.it/portale/monopoli/giochi/gioco-del-lotto/lotto_g/lotto_estr?prog=142&anno=2021 Dim sLinkTmp As String Dim nLastMese As Integer Dim nIndiceMensile As Integer Dim nIdEstr As Integer Dim nAggiornate As Integer Dim NumEstrAnn As Integer If cArchivio.GetEstrazione(cArchivio.QuantitaEstrazioni, strctLastE) Then NumEstrAnn = strctLastE.Data.Numero nLastMese = Month(strctLastE.Data.Data) nIndiceMensile = strctLastE.Data.Numero nIdEstr = cArchivio.QuantitaEstrazioni For nAnno As Integer = Year(strctLastE.Data.Data) To Year(Now) Do NumEstrAnn += 1 sLinkTmp = Replace(sLink, "[PROG]", NumEstrAnn.ToString) sLinkTmp = Replace(sLinkTmp, "[ANNO]", nAnno.ToString) ListBox1.Items.Add(sLinkTmp) ListBox1.SelectedIndex = ListBox1.Items.Count - 1 Application.DoEvents() w.Naviga("abaut:blank") w.Naviga(sLinkTmp) If w.GetEstrazione(strctE) Then nIdEstr += 1 If Month(strctE.Data.Data) = nLastMese Then nIndiceMensile += 1 Else nIndiceMensile = 1 End If strctE.Data.Numero = NumEstrAnn strctE.Data.IndiceMensile = nIndiceMensile strctE.identifier = nIdEstr nLastMese = Month(strctE.Data.Data) cArchivio.ScriviEstrazione(nIdEstr, strctE) nAggiornate += 1 Else Exit Do End If Loop NumEstrAnn = 0 Next End If MsgBox("Fine Estrazioni aggiornate : " & nAggiornate.ToString) End Sub
Nemmeno così funziona....non riesco trasportare fuori dal form l'index del dell'archiviobhe se la proprieta che vuoi mettere è nel form mdi non ha senso passare per quella variabile index archivio in quanto basta leggere la proprieta selected index delal combo
Public ReadOnly Property ArchivioPuntato As Integer
Get
Return cmbArchivio.SelectedIndex
End Get
End Property