Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Allora ... ti rispondo e poi mi taccio dato che la questione mi interessa relativamente.
SQL è un linguaggio di interrogazione standard, non è un prodotto. Quindi SQL non si installa ma semplicemente si usa scrivendo le query.
I GESTORI di DB, invece, (a vari livelli di potenza ed affidabilità) sono, ad esempio, "ACCESS" o "SQL SERVER" (nota ... SQL SERVER non solo SQL) e questi sono prodotti da installare.
ACCESS lavora con il linguaggio SQL e va benissimo per il DB che devi gestire tu, ti è stata detta una cosa falsa. Fra l'altro, installare e gestire SQL SERVER (anche nella versione Express) non è cosa semplice e avresti ulteriori difficoltà non indifferenti.
Per quanto riguarda l'inserimento dei dati del file txt nel DB (una volta che il DB è strutturato e normalizzato in tabelle e campi relazionati come ti è stato suggerito), è una cosa semplicissima, che potresti realizzare anche con un eseguibile separato (una sorta di tool) che prenda il txt in input e crei il DB in output (tanto tutte le estrazioni sono sempre disponibili); o anche che prelevi automaticamente da web il file e lo importi (anche questo può essere fatto abbastanza semplicemente).
Il fatto che tu abbia difficolta a leggere un file di testo, diviso in linee, ed utilizzare una Split per ogni linea in un ciclo per suddividere date, ruote e numeri, la dice lunga su quanto dovresti studiare in seguito per gestire il dialogo con il DB in SQL.
Tutto il resto, anche se adesso parli di criteri semplici, sappi che poi diventerà molto più complesso e vorrai fare ulteriori selezioni sempre più contorte e, senza un DB e il linguaggio SQL, NON lo potrai fare (se non impazzendo e scrivendo codice assurdo).
Ultimo consiglio ... evita di usare DataBinding, Dataset e ammennicoli vari offerti da VB.NET per "facilitare" la gestione dei DB perché in realtà la COMPLICANO risultando poco flessibili. Quindi utilizza soltanto QUERY e ISTRUZIONI SQL da inviare al DBMS controllando i risultati con i Recordset.
Detto questo, ti avviso che NON OTTERRAI risultati in tempi decenti se non studierai tutti questi argomenti PRIMA di metterci le mani. In programmazione non ci si inventa in 10 minuti.
Per finire, anche se il lotto sarà per te un passatempo, ti posso garantire che è una perdita di soldi. Ma de gustibus ...
Ultima modifica effettuata da nessuno il 30/10/2021 alle 10:19
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
Allora ... ti rispondo e poi mi taccio dato che la questione mi interessa relativamente.
SQL è un linguaggio di interrogazione standard, non è un prodotto. Quindi SQL non si installa ma semplicemente si usa scrivendo le query.
I GESTORI di DB, invece, (a vari livelli di potenza ed affidabilità) sono, ad esempio, "ACCESS" o "SQL SERVER" (nota ... SQL SERVER non solo SQL) e questi sono prodotti da installare.
ACCESS lavora con il linguaggio SQL e va benissimo per il DB che devi gestire tu, ti è stata detta una cosa falsa. Fra l'altro, installare e gestire SQL SERVER (anche nella versione Express) non è cosa semplice e avresti ulteriori difficoltà non indifferenti.
Per quanto riguarda l'inserimento dei dati del file txt nel DB (una volta che il DB è strutturato e normalizzato in tabelle e campi relazionati come ti è stato suggerito), è una cosa semplicissima, che potresti realizzare anche con un eseguibile separato (una sorta di tool) che prenda il txt in input e crei il DB in output (tanto tutte le estrazioni sono sempre disponibili); o anche che prelevi automaticamente da web il file e lo importi (anche questo può essere fatto abbastanza semplicemente).
Il fatto che tu abbia difficolta a leggere un file di testo, diviso in linee, ed utilizzare una Split per ogni linea in un ciclo per suddividere date, ruote e numeri, la dice lunga su quanto dovresti studiare in seguito per gestire il dialogo con il DB in SQL.
Tutto il resto, anche se adesso parli di criteri semplici, sappi che poi diventerà molto più complesso e vorrai fare ulteriori selezioni sempre più contorte e, senza un DB e il linguaggio SQL, NON lo potrai fare (se non impazzendo e scrivendo codice assurdo).
Ultimo consiglio ... evita di usare DataBinding, Dataset e ammennicoli vari offerti da VB.NET per "facilitare" la gestione dei DB perché in realtà la COMPLICANO risultando poco flessibili. Quindi utilizza soltanto QUERY e ISTRUZIONI SQL da inviare al DBMS controllando i risultati con i Recordset.
Detto questo, ti avviso che NON OTTERRAI risultati in tempi decenti se non studierai tutti questi argomenti PRIMA di metterci le mani. In programmazione non ci si inventa in 10 minuti.
Per finire, anche se il lotto sarà per te un passatempo, ti posso garantire che è una perdita di soldi. Ma de gustibus ...
No comunque parla pure sicuramente di SQL tu te intendi più di me.
Dim myCommand As SqlCommand =New SqlCommand(str, myConn)
Try
myConn.Open()
myCommand.ExecuteNonQuery()
MessageBox.Show("Database is created successfully", _
"MyProgram", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.ToString())
Finally
If(myConn.State= ConnectionState.Open)Then
myConn.Close()
EndIf
EndTry
EndSub
Ho cercato di seguire il punto 5 ma del link indicato ma nell'msgbox che mi compare mi da un bordello di errori, però se creo una cosa del genere nel designer di visual studio funziona, cioè mi crea il file .mdf e .ldf.
Guardando a quello fatto fatto nel designer di visual studio la striga di connesione che mi da è questa:
C:\Users\Gian luca\Documents\Visual Studio 2012\Projects\Lotto Rendita 1.0\Lotto Rendita 1.0\Estrazioni.sdf
Pero a quanto dovrei averlo questo benedetto SQL avendo installato VS2012(immagine in allegato):
C'è tutto il codice per creare un database da codice (che poi mi dovrei studiare) però dopo aver sistemato alcune cose, ad esempio facendo il debug:
Codice sorgente - presumibilmente Plain Text
com.ExecuteNonQuery()
'Questa riga mi dava errore saltando il close() emostrando l'msgbox
invece:
Codice sorgente - presumibilmente Plain Text
com.ExecuteNonQueryAsync()
' Questa no e apparentemente tutto ok
Pero andando a vedere in C: (percorso di creazione del DB) non c'era nulla.
Chiedo umilmente aiuto e mi aspetto molte critiche, che accetto molto volentieri per imparare!
EDIT: ho da poco acquistato questo Microsoft ADO.Net 4.0. Passo per passo - Tim Patrick che mi possa aiutare in una migliore comprensione di ADO e se può essere un buon punto di partenza!
Postato originariamente da Giacos71: Immagino che ci siano da mettere una baraonda di IF di controllo. Al momento utilizzo vs2012 ho visto che c'è qualcosa di sql mi sembra una versione express.
Dipende se è necessario sistemarlo, se bisogna accedere alle estrazioni rispettando uno schema ordinato e congruo, si.
Se invece bisogna fare delle ricerche che producono classifiche sui numeri, come ritardi frequenze ecc. sulle varie ruote, il file va bene così.
Se sapessi che tipo di ricerca vorresti fare e quali dati vorresti produrre....
Di seguito il codice che ho usato per controllare il contenuto del file storico.txt
E' sufficiente aprire un progetto nuovo e copiare il codice, non devi aggiungere nulla sul form:
Codice sorgente - presumibilmente VB.NET
PublicClass Form1
Dim RecordArchivioTXT AsNew List(Of String)' lista che conterrà tutte le righe
Dim Caselle(65)As TextBox
Dim lblData As Label
Dim FileName AsString="C:\storico.txt"
PrivateSub Form1_Load(sender AsObject, e As EventArgs)HandlesMyBase.Load
' Carica il file storico.txt della Lottomatica e legge tutte le righe
Try
' Se il file non esiste, verrà comunicato nell'eccezione.
Controls.Add(scrollBar1)' aggiungo la scrollbar sul form
EndSub
PrivateSub ScrollBar1_ValueChanged(sender AsObject, e As EventArgs)
' l'archivio non ha sempre le stesse righe per ogni estrazione
' bisogna fare una ricerca da dove iniziare e dove finire per leggere un'estrazione
' ho scelto la ruota di bari per separare le estrazioni, ma si potrebbe usare la data
Dim inizio AsInteger
Dim fine AsInteger
Dim pos AsInteger= sender.value' valore della scrollbar
' cancello le ultime tre righe delle textbox, che possono contenere vecchi dati
For i = 48 To65
Caselle(i).Text=""
Next
' cerco all'indietro la ruota di bari partendo da pos (valore della scrollbar)
Do
If RecordArchivioTXT(pos).Contains("BA")Then
inizio = pos ' ruota di bari trovata
ExitDo
EndIf
pos -= 1
Loop
' cerco in avanti la ruota di bari partendo dalla posizione già trovata
pos = inizio + 1
Do
If RecordArchivioTXT(pos).Contains("BA")Then
fine = pos -1' ruota di bari trovata
ExitDo
EndIf
pos +=1
' evito di andare a cercare fuori range
If pos > RecordArchivioTXT.Count()- 1 Then
fine = RecordArchivioTXT.Count()- 1
ExitDo
EndIf
Loop
' tra inizio e fine ci sono tutte le righe di un'estrazione
Dim ind = 0
For pos = inizio To fine
DimstrAsString= RecordArchivioTXT(pos)
Dim strArr()AsString=str.Split()
lblData.Text= strArr(0)' la data sulla label
' una riga sulle rispettive 6 textbox
For i = 0 To 5
Caselle(ind + i).Text= strArr(i + 1)
Next
ind +=6' incremento per scrivere sulle 6 textbox successive
Next
Me.Refresh()
EndSub
EndClass
Non è un esempio e si può ottimizzare alla grande, ma visto che lo avevo scritto, ti può servire per qualche spunto, è commentato ma chiedi pure.
Scusa se ho liqidato la questione SQL in modo superficiale, nessuno ti ha ragguagliato dettagliatamente.
Ultima modifica effettuata da Carlo il 30/10/2021 alle 16:47
Postato originariamente da Giacos71: Immagino che ci siano da mettere una baraonda di IF di controllo. Al momento utilizzo vs2012 ho visto che c'è qualcosa di sql mi sembra una versione express.
Dipende se è necessario sistemarlo, se bisogna accedere alle estrazioni rispettando uno schema ordinato e congruo, si.
Se invece bisogna fare delle ricerche che producono classifiche sui numeri, come ritardi frequenze ecc. sulle varie ruote, il file va bene così.
Se sapessi che tipo di ricerca vorresti fare e quali dati vorresti produrre....
Di seguito il codice che ho usato per controllare il contenuto del file storico.txt
E' sufficiente aprire un progetto nuovo e copiare il codice, non devi aggiungere nulla sul form:
Codice sorgente - presumibilmente VB.NET
PublicClass Form1
Dim RecordArchivioTXT AsNew List(Of String)' lista che conterrà tutte le righe
Dim Caselle(65)As TextBox
Dim lblData As Label
Dim FileName AsString="C:\storico.txt"
PrivateSub Form1_Load(sender AsObject, e As EventArgs)HandlesMyBase.Load
' Carica il file storico.txt della Lottomatica e legge tutte le righe
Try
' Se il file non esiste, verrà comunicato nell'eccezione.
Controls.Add(scrollBar1)' aggiungo la scrollbar sul form
EndSub
PrivateSub ScrollBar1_ValueChanged(sender AsObject, e As EventArgs)
' l'archivio non ha sempre le stesse righe per ogni estrazione
' bisogna fare una ricerca da dove iniziare e dove finire per leggere un'estrazione
' ho scelto la ruota di bari per separare le estrazioni, ma si potrebbe usare la data
Dim inizio AsInteger
Dim fine AsInteger
Dim pos AsInteger= sender.value' valore della scrollbar
' cancello le ultime tre righe delle textbox, che possono contenere vecchi dati
For i = 48 To65
Caselle(i).Text=""
Next
' cerco all'indietro la ruota di bari partendo da pos (valore della scrollbar)
Do
If RecordArchivioTXT(pos).Contains("BA")Then
inizio = pos ' ruota di bari trovata
ExitDo
EndIf
pos -= 1
Loop
' cerco in avanti la ruota di bari partendo dalla posizione già trovata
pos = inizio + 1
Do
If RecordArchivioTXT(pos).Contains("BA")Then
fine = pos -1' ruota di bari trovata
ExitDo
EndIf
pos +=1
' evito di andare a cercare fuori range
If pos > RecordArchivioTXT.Count()- 1 Then
fine = RecordArchivioTXT.Count()- 1
ExitDo
EndIf
Loop
' tra inizio e fine ci sono tutte le righe di un'estrazione
Dim ind = 0
For pos = inizio To fine
DimstrAsString= RecordArchivioTXT(pos)
Dim strArr()AsString=str.Split()
lblData.Text= strArr(0)' la data sulla label
' una riga sulle rispettive 6 textbox
For i = 0 To 5
Caselle(ind + i).Text= strArr(i + 1)
Next
ind +=6' incremento per scrivere sulle 6 textbox successive
Next
Me.Refresh()
EndSub
EndClass
Non è un esempio e si può ottimizzare alla grande, ma visto che lo avevo scritto, ti può servire per qualche spunto, è commentato ma chiedi pure.
Scusa se ho liqidato la questione SQL in modo superficiale, nessuno ti ha ragguagliato dettagliatamente.
Ho provato il tuo codice e funziona alla grande, stavo solo guardando se potevo adattarlo al mio form estenticamente migliore, ma questa non vuole essere una critica anzi e stato fatto di più di quello che mi aspettavo. Mi sa che qui ci va il cesto per Natale!
La logica del dodice funziona alla grande, però come dicevi tu prima ci sono un tot di ruote, poi aumenta, poi diminuisce (forse a causa della guerra), poi riaumenta, poi esce la Nazionale. A questo punto sia che utilizzi un Database o meno pensavo se creare uno schema come ci si trova attualmente con le 11 ruote lasciando scempre la ruota Nazionale per ultima e con un controllo dove la ruota che non c'è estrazione riempire con degli zeri, difatti stavo anche pensando se davanti ai numeri che vanno da 0 a 9 aggiungere uno zero per avere un campo sempre di 2, ma magari questo e un dettaglio non fondamentale.
Una volta l'archivio era così strutturato: num concorso(settimana),data, Tutti e i 50 estratti (BA1,BA2,VE4,VE)
Ora hanno deciso di strutturarlo così. Difatti da qualche parte devo avere un archivio stutturato come la prima ipotesi in formato Access (una volta lo davano anche così) , magari il formato txt gli occupa meno spazio sul server, che parte addirittua dal 1871 immagino che li le ruote siano ancora meno.
Almeno avessero messo lo schema con cui salvano i dati sti qua della lottomatica.
La logica su cui vorrei lavorare è questa:
1) Si osserva un qualsiasi numero (a) estratto nell'ultima settimana (la chiameremo BASE), in una qualsiasi ruota delle 10 a disposizione (Bari - Cagliari - Firenze - Genova - Milano - Napoli - Palermo - Roma - Torino e Venezia);
2) Il numero (a) fa parte, per forza di cose, di una tripla i cui altri due componenti (b, c) verranno ricercati risalendo INDIETRO per le 20 ultime settimane precedenti quella che abbiamo a BASE;
3) Se in dette settimane è uscito per primo il numero (b), si giocheranno i numeri (a, c), mentre se è uscito per primo il numero (c) si giocheranno i numeri (a, b): si scarta, cioè, il numero trovato per primo nelle 20 settimane prese in considerazione;
4) Se nelle stesse 20 settimane NESSUNO dei numeri (b, c) è uscito, li si giocherà entrambi, cioè si scarta il numero (a). Lo stesso avviene quando i due numeri (b, c) escono entrambi nella stessa settimana.
Dopo tutto questo tram-tram le giocate andranno effetuate con una tabella puntate ed una sualogica, quindri dovrei anche sapere quelle in corso e a che punto sono, forse un database a questo punto mi ci vorrà per forza.
Scusa volevo anche chiederti un cosiglio visto che un in un Access vecchio oltre al campo indice, c'era anche un campo concorso immagino sarebbe un casino avere un controllo su questo visto che una volta le estrazioni erano solo una volta alla settimana il sabato, ora sono 3 martedi-giovedi-sabato.
Volevo chiederti se puoi dare un'occhio dove ho risposto a nessuno anche per avere una tua opinione sempre che non se la prenda.
Per tutto quello fatto finora e anche i consigli dati da altri non so come ringraziarvi.
Ultima modifica effettuata da Giacos71 il 30/10/2021 alle 17:59
Se riuscirai ad inserire la creazione delle textbox del mio codice nel tuo progetto, significa che sei anche in grado di modificare le variabili per ottenere lo schema a tuo volere. Naturalmente le texbox o label che hai inserito per visualizzare i numeri e le ruote le devi cancellare dal form in progettazione, invece tutto il resto lo lasci e lo puoi popolare con i dati che ora hai a disposizione.
Per esempio, la label lblData che ho creato da codice non serve, va benissimo quella che hai messo tu in progettazione...
Testo quotato
Postato originariamente da Giacos71: La logica su cui vorrei lavorare è questa:
1) Si osserva un qualsiasi numero (a) estratto nell'ultima settimana (la chiameremo BASE), in una qualsiasi ruota delle 10 a disposizione (Bari - Cagliari - Firenze - Genova - Milano - Napoli - Palermo - Roma - Torino e Venezia);
2) Il numero (a) fa parte, per forza di cose, di una tripla i cui altri due componenti (b, c) verranno ricercati risalendo INDIETRO per le 20 ultime settimane precedenti quella che abbiamo a BASE;
3) Se in dette settimane è uscito per primo il numero (b), si giocheranno i numeri (a, c), mentre se è uscito per primo il numero (c) si giocheranno i numeri (a, b): si scarta, cioè, il numero trovato per primo nelle 20 settimane prese in considerazione;
4) Se nelle stesse 20 settimane NESSUNO dei numeri (b, c) è uscito, li si giocherà entrambi, cioè si scarta il numero (a). Lo stesso avviene quando i due numeri (b, c) escono entrambi nella stessa settimana.
Per capire mi serve un esempio.
prendiamo l'estrazione dell'ultima settimana:
2021/10/28 BA 52 70 51 42 87
2021/10/28 CA 84 48 87 23 78
2021/10/28 FI 78 88 24 50 21
2021/10/28 GE 84 32 23 21 2
2021/10/28 MI 2 11 53 45 79
2021/10/28 NA 77 83 12 2 67
2021/10/28 PA 87 54 57 66 83
2021/10/28 RM 5 6 88 40 30
2021/10/28 RN 88 48 61 43 51
2021/10/28 TO 57 64 79 69 21
2021/10/28 VE 51 2 77 33 64
1) Si osserva un qualsiasi numero (a) estratto nell'ultima settimana (la chiameremo BASE)
scelgo il 52
2) Il numero (52) fa parte, per forza di cose, di una tripla i cui altri due componenti (b, c)
quale tripla? quali sono i componenti b e c? due numeri a caso della stessa ruota?
Ultima modifica effettuata da Carlo il 30/10/2021 alle 19:43
Se riuscirai ad inserire la creazione delle textbox del mio codice nel tuo progetto, significa che sei anche in grado di modificare le variabili per ottenere lo schema a tuo volere. Naturalmente le texbox o label che hai inserito per visualizzare i numeri e le ruote le devi cancellare dal form in progettazione, invece tutto il resto lo lasci e lo puoi popolare con i dati che ora hai a disposizione.
Per esempio, la label lblData che ho creato da codice non serve, va benissimo quella che hai messo tu in progettazione...
Testo quotato
Postato originariamente da Giacos71: La logica su cui vorrei lavorare è questa:
1) Si osserva un qualsiasi numero (a) estratto nell'ultima settimana (la chiameremo BASE), in una qualsiasi ruota delle 10 a disposizione (Bari - Cagliari - Firenze - Genova - Milano - Napoli - Palermo - Roma - Torino e Venezia);
2) Il numero (a) fa parte, per forza di cose, di una tripla i cui altri due componenti (b, c) verranno ricercati risalendo INDIETRO per le 20 ultime settimane precedenti quella che abbiamo a BASE;
3) Se in dette settimane è uscito per primo il numero (b), si giocheranno i numeri (a, c), mentre se è uscito per primo il numero (c) si giocheranno i numeri (a, b): si scarta, cioè, il numero trovato per primo nelle 20 settimane prese in considerazione;
4) Se nelle stesse 20 settimane NESSUNO dei numeri (b, c) è uscito, li si giocherà entrambi, cioè si scarta il numero (a). Lo stesso avviene quando i due numeri (b, c) escono entrambi nella stessa settimana.
Per capire mi serve un esempio.
prendiamo l'estrazione dell'ultima settimana:
2021/10/28 BA 52 70 51 42 87
2021/10/28 CA 84 48 87 23 78
2021/10/28 FI 78 88 24 50 21
2021/10/28 GE 84 32 23 21 2
2021/10/28 MI 2 11 53 45 79
2021/10/28 NA 77 83 12 2 67
2021/10/28 PA 87 54 57 66 83
2021/10/28 RM 5 6 88 40 30
2021/10/28 RN 88 48 61 43 51
2021/10/28 TO 57 64 79 69 21
2021/10/28 VE 51 2 77 33 64
1) Si osserva un qualsiasi numero (a) estratto nell'ultima settimana (la chiameremo BASE)
scelgo il 52
2) Il numero (52) fa parte, per forza di cose, di una tripla i cui altri due componenti (b, c)
quale tripla? quali sono i componenti b e c? due numeri a caso della stessa ruota?
forse pensi che io sappia di cosa parli, ti ripeto che invece non ho idea di cosa parli.
che significa che se scelgo il numero 52, come già avevo deciso nella precedente risposta, la tripla è questa?: 22 52 82
bisogna cercare all'indietro il 22 e l'82, per 20 settimane? su tutte le ruote? o solo la ruota dove era il 52?
poi vuoi sapere se il 22 e l'82 sono usciti e se sono usciti vuoi sapere la prima data incontrata di entrambi?
Se ho capito bene, fare quello che chiedi è facile.
Un modo come un'altro per scegliere dei numeri a caso.
Ultima modifica effettuata da Carlo il 30/10/2021 alle 22:39
forse pensi che io sappia di cosa parli, ti ripeto che invece non ho idea di cosa parli.
che significa che se scelgo il numero 52, come già avevo deciso nella precedente risposta, la tripla è questa?: 22 52 82
bisogna cercare all'indietro il 22 e l'82, per 20 settimane? su tutte le ruote? o solo la ruota dove era il 52?
poi vuoi sapere se il 22 e l'82 sono usciti e se sono usciti vuoi sapere la prima data incontrata di entrambi?
Se ho capito bene, fare quello che chiedi è facile.
Un modo come un'altro per scegliere dei numeri a caso.
Si esatto essendo 52 si cercano 22 e 82 poi si seguono le regole e la ruota e fissa dove si fa la ricerca. Ovvio che che uno può scegliere di giocarli a caso oppure scegliere di fare la ricerca per tutti i 5 estratti per ogni singola ruota.
PS: magari si era anche capito ma le triple di cadenza hanno distanza 30 cioè 22 (+30) 52 (+30) 82 e così per tutte le altre.
Ultima modifica effettuata da Giacos71 il 30/10/2021 alle 23:04