Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Gestione archivio Lottomatica
Forum - C# / VB.NET - Gestione archivio Lottomatica

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
Giacos71 (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 22:49
Mercoledì, 27/10/2021
Questo topic è stato chiuso dal moderatore

Salve sto cercando di venirne a capo da solo ma ci sto sbattendo la testa, dovrei  scaricare l'archivio estrazioni del lotto e caricarlo in un DataSet cosa penso di aver fatto, poi elaborare riga per riga, e ogni riga splittarla con la funzione Split() cosa che ho fatto e riempire i vari campi.
La struttura è cosi composta Data,Ruota,Estratto1, Estratto2, ecc: "2021/09/18 BA 19 82 17 54 76" e così per tutte le righe per tutto il file.

Riesco a leggere il file e ha splittare una singola riga (come di esempio nella variabile str) ma probabilmente qualcosa manca, visto che dovrei passargli l'intero archivio. Qui di seguito il codice finora buttato giù, sicuramente qualcosa manca, tutte righe commentate le ho messe così per capire dove stavo sbagliando.

Ho messo anche un datagridview per avere un riscontro visivo come stavo procedendo. Da tenere conto che non metto mani al codice da almeno 10 anni, qualsiasi consiglio/suggerimento è ben accetto!

Codice sorgente - presumibilmente VB.NET

  1. 'Nuovo DataTable Estrazioni
  2.         Dim Archivio As DataTable = New DataTable("Estrazioni")
  3.         'Crea la Chiave Primaria ID
  4.         Dim ID_PK As DataColumn = Archivio.Columns.Add("ID", GetType(Int32))
  5.         ID_PK.AllowDBNull = False
  6.         ID_PK.Unique = True
  7.         'Crea le colonne appropriate
  8.         Archivio.Columns.Add("Data", GetType(Date))
  9.         Archivio.Columns.Add("Ruota", GetType(String))
  10.         Archivio.Columns.Add("Estratto1", GetType(Double))
  11.         Archivio.Columns.Add("Estratto2", GetType(Double))
  12.         Archivio.Columns.Add("Estratto3", GetType(Double))
  13.         Archivio.Columns.Add("Estratto4", GetType(Double))
  14.         Archivio.Columns.Add("Estratto5", GetType(Double))
  15.  
  16.         ' Carica il file storico.txt della Lottomatica e legge tutte le righe
  17.         Try
  18.             ' La variabile RecordArchivioTXT conterrà tutte le
  19.             ' righe lette dal file C:\MyFile.Txt file.
  20.             Dim RecordArchivioTXT As String = ""
  21.             ' Il file da leggere è C:\storico71-00_B.txt
  22.             Dim FileName As String = "C:\storico71-00_B.txt"
  23.             ' Controllo se il file esiste.
  24.             If System.IO.File.Exists(FileName) = True Then
  25.                 ' Carico il file nell'oggetto StreamReader.
  26.                 Dim StreamReader As New System.IO.StreamReader(FileName)
  27.                 ' Metto tutte le righe del file
  28.                 ' nella variabile RecordArchivioTXT.
  29.                 RecordArchivioTXT = StreamReader.ReadToEnd
  30.                 ' Mostro le righe del file.
  31.                 MessageBox.Show("" & RecordArchivioTXT)
  32.                 ' Chiudo l'oggetto StreamReader.
  33.                 StreamReader.Close()
  34.             End If
  35.         Catch ex As Exception
  36.             ' Mostro l'errore se la sub genera un errore.
  37.             MessageBox.Show("Error message: " & ex.Message)
  38.         End Try
  39.  
  40.         'Crea un nuova riga nella variabile Archivio DataTable
  41.         Dim RecordArchivio As DataRow = Archivio.NewRow()
  42.  
  43.         ''Routine divisione Riga Archivio in parti
  44.         'Dim str As String
  45.         'Dim strArr() As String
  46.         'Dim count As Integer
  47.         'str = "1971/01/02      NA      41      34      62      47      71"
  48.         'strArr = str.Split()
  49.         'For count = 0 To strArr.Length - 1
  50.         '    MessageBox.Show(strArr(count))
  51.         'Next
  52.  
  53.         'Routine divisione Riga Archivio in parti
  54.         Dim str As String
  55.         Dim strArr() As String
  56.         Dim count As Integer
  57.         str = "1971/01/02       NA      41      34      62      47      71"
  58.         strArr = str.Split()
  59.         For count = 0 To strArr.Length - 1
  60.             MessageBox.Show(strArr(count))
  61.         Next
  62.  
  63.         'Ciclo inserimento valori dati fittizzi
  64.         For i As Integer = 1 To 5
  65.             'RecordArchivio = Archivio.NewRow()
  66.             'RecordArchivio(0) = i
  67.             'RecordArchivio(1) = Date.Today
  68.             'RecordArchivio(2) = strArr(2).ToString '"BA " & i.ToString()
  69.             'RecordArchivio(3) = strArr(3).ToString '19 '& i '.ToString()
  70.             'RecordArchivio(4) = strArr(4).ToString '82 '& i '.ToString()
  71.             'RecordArchivio(5) = strArr(5).ToString '17 '& i '.ToString()
  72.             'RecordArchivio(6) = strArr(6).ToString '54 '& i '.ToString()
  73.             'RecordArchivio(7) = strArr(7).ToString '76 '& i '.ToString()
  74.             Archivio.Rows.Add(RecordArchivio)
  75.         Next
  76.  
  77.         'Mostra i dati del DataTable in DataGridView1
  78.         DataGridView1.DataSource = Archivio



La seconda questione e se tenere il dataset e lavorare da li o creare un database per l'elaborazione modifica dei dati, ma questa è un'altra questione.

Ultima modifica effettuata da Giacos71 il 27/10/2021 alle 22:51
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6196
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:56
Giovedì, 28/10/2021
Ho letto che ti hanno spiegato tutto in

https://masterdrive.it/visual-basic-net-18/creazione-gestio ...

a parte il codice da scrivere, ovviamente

Comunque, se hai il file di testo con i dati e il DB, non servono a nulla DataTable o altra roba, direttamente leggi il testo, separi i dati con la Split e inserisci nel DB con le INSERT corrette secondo lo schema di tabelle e relazioni che hai fatto (te le hanno suggerite mi pare)

Ultima modifica effettuata da nessuno il 28/10/2021 alle 10:17


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à.
PM
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2125
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:50
Giovedì, 28/10/2021
Scusa se te lo dico, ma se manca qualcosa non tocca a noi saperlo essendo un programma che stai costruendo tu.

A mio parere, direi che è completamente tutto sbagliato.
L'intero modo di approccio al concetto stesso.

Leggi un file e lo aggiungi per intero in una stringa.

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim FileName As String = "C:\storico71-00_B.txt"
  2.  
  3. ...
  4.  
  5.  RecordArchivioTXT = StreamReader.ReadToEnd



Metti il file per intero nella variabile RecordArchivioTXT.
In seguito non vedo altre istruzioni che fanno riferimento a questa variabile che contiene il testo.
Ma solamente un ciclo per inserire valori nel Dataset o nel DataGrid.
E la domanda è:  Da dove prendi i valori da inserire nel DataGrid se il testo è contenuto in RecordArchivioTXT ?


Fossi in te,
Andrei a leggere il file linea per linea e splittandone una per volta.
ed al tempo stesso aggiungendola direttamente al DataGridView evitando di fare ulteriori cicli inutilmente.
Ma non sapendo com'è stutturato il file, per intero più di questo non posso dirti.

sicuramente questa linea è formata così ed'è ok,

"2021/09/18 BA 19 82 17 54 76"

Ma le altre?
sono cooncatenate?
sono separate in altre linee?
c'è qualche simbolo per indentificare una nuova linea?


PM
Avatar
Giacos71 (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 12:35
Giovedì, 28/10/2021
Testo quotato

Postato originariamente da nessuno:

Ho letto che ti hanno spiegato tutto in

https://masterdrive.it/visual-basic-net-18/creazione-gestio ...

a parte il codice da scrivere, ovviamente

Comunque, se hai il file di testo con i dati e il DB, non servono a nulla DataTable o altra roba, direttamente leggi il testo, separi i dati con la Split e inserisci nel DB con le INSERT corrette secondo lo schema di tabelle e relazioni che hai fatto (te le hanno suggerite mi pare)



Si non lo nego che ho postato un post simile in tale forum, ma a me sembra che prima di dare aiuto trmite non so quale metodo viene fatta una ricerca se l'utente a messo lo stesso post in altro forum!
Tengo a precisare che non me la sono presa per  l'osservazione, ma volevo solo sapere se è un reato chiedere aiuto in più punti oppure no. Se lo chiedo è perchè ne ho bisogno e ritengo il forum (o anche più di uno) un punto di riferimento.


Difatti ci si era fermati tanto sulla teoria poi finalmente ho buttato giù del codice però con l'unica riga di esempio funziona, ma passandogli il file di testo da errore mi pare che dica che non può fare la conversione di tipo qualcosa perchè presente un PK e parte scrivendo da li.

Si vorrei mettere poi tutto in un db anche se forse c'è qualcosa di dell'estensione .mdb, cmq ho sempre visto consigliato di utilizzare un dataset per lavorare con i dati in memoria e poi ne fa l'uso che più ne aggrada.

Probabilmente il mio errore e nel ciclo for perchè splitto la riga, ma poi per splittare la riga mi perdo, questo step andrebbe fatto riga x riga fino alla fine del file, ammetto le mie deficenze in materia.

Personalmente anche pseudo codice andrebbe più che tanto per capire la lgica, nel frattempo mi sto studiando qua la guida di Totem sul VB per migliorare.

Ultima modifica effettuata da Giacos71 il 28/10/2021 alle 12:38
PM
Avatar
Giacos71 (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 13:16
Giovedì, 28/10/2021
Testo quotato


Scusa se te lo dico, ma se manca qualcosa non tocca a noi saperlo essendo un programma che stai costruendo tu.



Si intendevo che così non funziona come dovrebbe!

Testo quotato


A mio parere, direi che è completamente tutto sbagliato.
L'intero modo di approccio al concetto stesso.



Hai perfettamente ragione il codice fa un pò pena, sicuramente potrebbe migliorare.

Leggi un file e lo aggiungi per intero in una stringa.

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim FileName As String = "C:\storico71-00_B.txt"
  2.  
  3. ...
  4.  
  5.  RecordArchivioTXT = StreamReader.ReadToEnd



Testo quotato


Metti il file per intero nella variabile RecordArchivioTXT.
In seguito non vedo altre istruzioni che fanno riferimento a questa variabile che contiene il testo.
Ma solamente un ciclo per inserire valori nel Dataset o nel DataGrid.
E la domanda è:  Da dove prendi i valori da inserire nel DataGrid se il testo è contenuto in RecordArchivioTXT ?



In teoria i valori dovrei prenderli proprio da li caricati dal file di testo storico.txt salvato su disco scaricato dal sito della lottomatica(se serve il link lo metto).

Per ora avevo creato una copia modificata del file con solo venti righe per testare che funzionasse prima di utlizzare il file con l'archivio completo.

Testo quotato


Fossi in te,
Andrei a leggere il file linea per linea e splittandone una per volta.
ed al tempo stesso aggiungendola direttamente al DataGridView evitando di fare ulteriori cicli inutilmente.
Ma non sapendo com'è stutturato il file, per intero più di questo non posso dirti.



E quello che sto cercando di fare: ad esempio se il file contiene 20 righe, prendere la prima riga, splittarla con la funzione Split(), e inserire i vari valori nel DataSet (la DatGridview è per avere un riscontro visivo. Il file e cosi strutturato:

1939/01/07    BA    58    22    47    49    69
1939/01/07    FI    27    57    81    43    61
1939/01/07    MI    40    38    57    67    7
1939/01/07    NA    85    44    48    88    55
1939/01/07    PA    73    80    39    38    57
1939/01/07    RM    73    24    4    39    22
1939/01/07    TO    19    43    10    31    27
1939/01/07    VE    9    43    61    14    75
1939/01/14    BA    18    77    33    62    19
1939/01/14    FI    31    47    12    7    80

fino a fine archivio... (credo che i campi siano spazi o tabulazioni, diciamo che cosi Split(" ") mi mostrava l'intera riga mentre così Split(), controllando con il debug mi riempiva correttamente il vettore con 7 campi (Data, Ruota, Estratto1, Estratto2, Estratto3, Estratto4, Estratto5). Solo che DataSet va aggiunta una Chiave Primaria(PK) quindi i campi diventano 8, forse anche per quello che mi da errore perchè tenta di salvare la Data nel PK e non trovando il campo adatto mi da errore di conversione del tipo di dato (spero di avere scritto giusto).

Testo quotato


Ma le altre?
sono cooncatenate?
sono separate in altre linee?
c'è qualche simbolo per indentificare una nuova linea?



Spiegato piu sopra, grazie anche se piccolo un aiuto e sempre un aiuto e sono qui per imparare acettando anche che il mio codice faccia completamente schifo, un imput in più per andare avanti a fare di meglio.

Ultima modifica effettuata da Giacos71 il 28/10/2021 alle 13:30
PM
Avatar
Carlo (Member)
Guru


Messaggi: 1023
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:45
Giovedì, 28/10/2021
Vedo che ti mancano le basi, se perseveri però riuscirai.
Condivido le perplessità di nessuno e Thejuster

Il tuo codice funzionante ma migliorabile:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         'Nuovo DataTable Estrazioni
  3.         Dim Archivio As DataTable = New DataTable("Estrazioni")
  4.         'Crea la Chiave Primaria ID
  5.         Dim ID_PK As DataColumn = Archivio.Columns.Add("ID", GetType(Int32))
  6.         ID_PK.AllowDBNull = False
  7.         ID_PK.Unique = True
  8.         'Crea le colonne appropriate
  9.         Archivio.Columns.Add("Data", GetType(Date))
  10.         Archivio.Columns.Add("Ruota", GetType(String))
  11.         Archivio.Columns.Add("Estratto1", GetType(Double))
  12.         Archivio.Columns.Add("Estratto2", GetType(Double))
  13.         Archivio.Columns.Add("Estratto3", GetType(Double))
  14.         Archivio.Columns.Add("Estratto4", GetType(Double))
  15.         Archivio.Columns.Add("Estratto5", GetType(Double))
  16.  
  17.         ' Carica il file storico.txt della Lottomatica e legge tutte le righe
  18.         Dim RecordArchivioTXT As New List(Of String) ' lista che conterrà tutte le righe
  19.         Try
  20.             ' Il file da leggere è C:\storico71-00_B.txt
  21.             ' Se il file non esiste, verrà comunicato nell'eccezione.
  22.             Dim FileName As String = "C:\storico71-00_B.txt"
  23.             ' tutto il file nella lista riga per riga
  24.             RecordArchivioTXT = System.IO.File.ReadAllLines(FileName).ToList
  25.  
  26.         Catch ex As Exception
  27.             ' Mostro l'errore se la sub genera un errore.
  28.             MessageBox.Show("Error message: " & ex.Message)
  29.         End Try
  30.  
  31.         ' leggo riga per riga la lista e inserisco i valori divisi in Archivio
  32.         For riga = 0 To RecordArchivioTXT.Count() - 1
  33.             Dim str As String = RecordArchivioTXT(riga) ' in str una riga della lista caricata
  34.             str = str.Replace("    ", " ") ' sostituisco i 4 spazi con uno solo, se invece hai le tabulazioni non serve
  35.             Dim strArr() As String = str.Split() ' in strArr i valori divisi dallo spazio, o dalla tabulazione
  36.             'Crea un nuova riga nella variabile Archivio DataTable
  37.             Dim RecordArchivio As DataRow = Archivio.NewRow()
  38.             RecordArchivio(0) = riga ' ID
  39.             RecordArchivio(1) = Convert.ToDateTime(strArr(0)) ' data nell'archivio txt
  40.             RecordArchivio(2) = Convert.ToString(strArr(1)) ' ruota
  41.             RecordArchivio(3) = Convert.ToDouble(strArr(2)) ' 1° estratto
  42.             RecordArchivio(4) = Convert.ToDouble(strArr(3)) ' 2° estratto
  43.             RecordArchivio(5) = Convert.ToDouble(strArr(4)) ' 3° estratto
  44.             RecordArchivio(6) = Convert.ToDouble(strArr(5)) ' 4° estratto
  45.             RecordArchivio(7) = Convert.ToDouble(strArr(6)) ' 5° estratto
  46.             Archivio.Rows.Add(RecordArchivio)
  47.         Next
  48.  
  49.         DataGridView1.DataSource = Archivio
  50.     End Sub



leggi bene i commenti.

1939/01/07    BA    58    22    47    49    69
1939/01/07    FI    27    57    81    43    61
1939/01/07    MI    40    38    57    67    7
1939/01/07    NA    85    44    48    88    55
1939/01/07    PA    73    80    39    38    57
1939/01/07    RM    73    24    4    39    22
1939/01/07    TO    19    43    10    31    27
1939/01/07    VE    9    43    61    14    75
1939/01/14    BA    18    77    33    62    19
1939/01/14    FI    31    47    12    7    80

con 4 spazi tra i campi...
non ci sono controlli se il file contiene righe vuote, anche alla fine, o dati incongrui avrai un errore

Ultima modifica effettuata da Carlo il 28/10/2021 alle 14:19


in programmazione tutto è permesso
PM
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2125
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:15
Giovedì, 28/10/2021
Rispondo a Giacos71

Testo quotato


Si non lo nego che ho postato un post simile in tale forum, ma a me sembra che prima di dare aiuto trmite non so quale metodo viene fatta una ricerca se l'utente a messo lo stesso post in altro forum!
Tengo a precisare che non me la sono presa per  l'osservazione, ma volevo solo sapere se è un reato chiedere aiuto in più punti oppure no. Se lo chiedo è perchè ne ho bisogno e ritengo il forum (o anche più di uno) un punto di riferimento.



Questo è una violazione del regolamento del forum.

Non è un reato frequentare più forum. Ma il problema nasce in se per il Cross-Posting.

Ovvero postare lo stesso problema in più forum.
Avere più punti di riferimento e bene. Ma che non trattano dello stesso argomento anche perché non ha senso chiedere
su più forum la soluzione di un problema.

Regolamento Generale ( Punto 8° )
http://www.pierotofy.it/pages/extras/forum/9/3839-regolame ...


Testo quotato


Si vorrei mettere poi tutto in un db anche se forse c'è qualcosa di dell'estensione .mdb, cmq ho sempre visto consigliato di utilizzare un dataset per lavorare con i dati in memoria e poi ne fa l'uso che più ne aggrada.



Anche se forse c'è qualcosa dell'estensione .mdb?
Che intendi per mdb?  MDB per me non significa nulla. e solo un estensione che posso crearla anche io.
Se intendi qualcosa tipo access...Credo che sia assurdo anche pensare di fare un cosa del genere.
Anche perché i file di access sono facilmente modificabili e non sicuri da fonti esterne.
Meglio creare un proprio database o usare Sqlite se proprio vuoi risparmiare del tempo.



Testo quotato


Probabilmente il mio errore e nel ciclo for perchè splitto la riga, ma poi per splittare la riga mi perdo, questo step andrebbe fatto riga x riga fino alla fine del file, ammetto le mie deficenze in materia.



Dunque sei hai capito l'errore dove sta.
Leggi la guida di totem sui cicli e sulla lettura dei file.
Magari basta cercare anche su google e semplicissimo.

https://www.hwupgrade.it/forum/showthread.php?t=1700391





PM
Avatar
Giacos71 (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 15:06
Giovedì, 28/10/2021
Testo quotato

Postato originariamente da Carlo:

Vedo che ti mancano le basi, se perseveri però riuscirai.
Condivido le perplessità di nessuno e Thejuster

Il tuo codice funzionante ma migliorabile:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         'Nuovo DataTable Estrazioni
  3.         Dim Archivio As DataTable = New DataTable("Estrazioni")
  4.         'Crea la Chiave Primaria ID
  5.         Dim ID_PK As DataColumn = Archivio.Columns.Add("ID", GetType(Int32))
  6.         ID_PK.AllowDBNull = False
  7.         ID_PK.Unique = True
  8.         'Crea le colonne appropriate
  9.         Archivio.Columns.Add("Data", GetType(Date))
  10.         Archivio.Columns.Add("Ruota", GetType(String))
  11.         Archivio.Columns.Add("Estratto1", GetType(Double))
  12.         Archivio.Columns.Add("Estratto2", GetType(Double))
  13.         Archivio.Columns.Add("Estratto3", GetType(Double))
  14.         Archivio.Columns.Add("Estratto4", GetType(Double))
  15.         Archivio.Columns.Add("Estratto5", GetType(Double))
  16.  
  17.         ' Carica il file storico.txt della Lottomatica e legge tutte le righe
  18.         Dim RecordArchivioTXT As New List(Of String) ' lista che conterrà tutte le righe
  19.         Try
  20.             ' Il file da leggere è C:\storico71-00_B.txt
  21.             ' Se il file non esiste, verrà comunicato nell'eccezione.
  22.             Dim FileName As String = "C:\storico71-00_B.txt"
  23.             ' tutto il file nella lista riga per riga
  24.             RecordArchivioTXT = System.IO.File.ReadAllLines(FileName).ToList
  25.  
  26.         Catch ex As Exception
  27.             ' Mostro l'errore se la sub genera un errore.
  28.             MessageBox.Show("Error message: " & ex.Message)
  29.         End Try
  30.  
  31.         ' leggo riga per riga la lista e inserisco i valori divisi in Archivio
  32.         For riga = 0 To RecordArchivioTXT.Count() - 1
  33.             Dim str As String = RecordArchivioTXT(riga) ' in str una riga della lista caricata
  34.             str = str.Replace("    ", " ") ' sostituisco i 4 spazi con uno solo
  35.             Dim strArr() As String = str.Split() ' in strArr i valori divisi dallo spazio
  36.             'Crea un nuova riga nella variabile Archivio DataTable
  37.             Dim RecordArchivio As DataRow = Archivio.NewRow()
  38.             RecordArchivio(0) = riga ' ID
  39.             RecordArchivio(1) = Convert.ToDateTime(strArr(0)) ' data nell'archivio txt
  40.             RecordArchivio(2) = Convert.ToString(strArr(1)) ' ruota
  41.             RecordArchivio(3) = Convert.ToDouble(strArr(2)) ' 1° estratto
  42.             RecordArchivio(4) = Convert.ToDouble(strArr(3)) ' 2° estratto
  43.             RecordArchivio(5) = Convert.ToDouble(strArr(4)) ' 3° estratto
  44.             RecordArchivio(6) = Convert.ToDouble(strArr(5)) ' 4° estratto
  45.             RecordArchivio(7) = Convert.ToDouble(strArr(6)) ' 5° estratto
  46.             Archivio.Rows.Add(RecordArchivio)
  47.         Next
  48.  
  49.         DataGridView1.DataSource = Archivio
  50.     End Sub



leggi bene i commenti.

1939/01/07    BA    58    22    47    49    69
1939/01/07    FI    27    57    81    43    61
1939/01/07    MI    40    38    57    67    7
1939/01/07    NA    85    44    48    88    55
1939/01/07    PA    73    80    39    38    57
1939/01/07    RM    73    24    4    39    22
1939/01/07    TO    19    43    10    31    27
1939/01/07    VE    9    43    61    14    75
1939/01/14    BA    18    77    33    62    19
1939/01/14    FI    31    47    12    7    80

con 4 spazi tra i campi...
non ci sono controlli se il file contiene righe vuote, anche alla fine, o dati incongrui avrai un errore



Innanzi tutto grazie ho provato il codice e funziona alla perfezione, però non è nemmeno giusto avere la pappa pronta, volevo anche capire cosa avevo fatto giusto e cosa di sbagliato.

Due cosè che ho notato che hai utlilzzato una lista per memorizzare le righe e poi con codice ben commentato hai ridotto lo spazio per renderlo uguale e probabilmente per la questione dei possibili errori di cui mi parlavi giusto?

Altra cosa vedo che sei riuscito ad ad inserire la chiave ID senza che si intrecciasero i dati e senza dare errore invece io ci stavo sbattendo la testa.

Ho alcune cose da chiedere: mi si consiglia di creare delle routine riutilizzabili da inserire in un modulo e richiamarle successivamente piuttosto che mettere tutto il codice in un button?

Quale consigli mi puoi dare per migliorare il mio codice?

Successivamente pensavo di memorizzare i dati in un database ma dovrei scegliere quale meglio (ho sempre utilizzato un .mdb). In un vecchio DB avevo tutti i record su unica riga Data, Num concorso, 50 estratti qui invece le date sono ripetute x11, quindi penso ci dovrà essere un lavoro di normalizzazione con relative relazioni e cambio struttura codice (spero di non essere andato OFF TOPIC).

Ultima modifica effettuata da Giacos71 il 28/10/2021 alle 15:07
PM
Avatar
Giacos71 (Normal User)
Newbie


Messaggi: 20
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 15:21
Giovedì, 28/10/2021
Testo quotato

Postato originariamente da Thejuster:

Rispondo a Giacos71

Testo quotato


Si non lo nego che ho postato un post simile in tale forum, ma a me sembra che prima di dare aiuto trmite non so quale metodo viene fatta una ricerca se l'utente a messo lo stesso post in altro forum!
Tengo a precisare che non me la sono presa per  l'osservazione, ma volevo solo sapere se è un reato chiedere aiuto in più punti oppure no. Se lo chiedo è perchè ne ho bisogno e ritengo il forum (o anche più di uno) un punto di riferimento.



Questo è una violazione del regolamento del forum.

Non è un reato frequentare più forum. Ma il problema nasce in se per il Cross-Posting.

Ovvero postare lo stesso problema in più forum.
Avere più punti di riferimento e bene. Ma che non trattano dello stesso argomento anche perché non ha senso chiedere
su più forum la soluzione di un problema.

Regolamento Generale ( Punto 8° )
http://www.pierotofy.it/pages/extras/forum/9/3839-regolame ...


Testo quotato


Si vorrei mettere poi tutto in un db anche se forse c'è qualcosa di dell'estensione .mdb, cmq ho sempre visto consigliato di utilizzare un dataset per lavorare con i dati in memoria e poi ne fa l'uso che più ne aggrada.



Anche se forse c'è qualcosa dell'estensione .mdb?
Che intendi per mdb?  MDB per me non significa nulla. e solo un estensione che posso crearla anche io.
Se intendi qualcosa tipo access...Credo che sia assurdo anche pensare di fare un cosa del genere.
Anche perché i file di access sono facilmente modificabili e non sicuri da fonti esterne.
Meglio creare un proprio database o usare Sqlite se proprio vuoi risparmiare del tempo.



Testo quotato


Probabilmente il mio errore e nel ciclo for perchè splitto la riga, ma poi per splittare la riga mi perdo, questo step andrebbe fatto riga x riga fino alla fine del file, ammetto le mie deficenze in materia.



Dunque sei hai capito l'errore dove sta.
Leggi la guida di totem sui cicli e sulla lettura dei file.
Magari basta cercare anche su google e semplicissimo.

https://www.hwupgrade.it/forum/showthread.php?t=1700391






Ho letto tutto il post e mi scuso per la violazione, ascolto tutti i suggerimenti. Si per MDB intendevo access. Quel link al post mi ricordo se lo avevo visto o meno ma il mio superato il problema di leggere riga x riga, era prendere la singola riga dividerla e popolare i campi che mi faceva impazzire.

Il fatto è che di la gli aiuti che nell'altro forum erano finiti ed era 15 giorni che cercavo di trovare una soluzione, ad goni modo mi riscuso per la violazione e per chi grande o piccolo mi ha dato un aiuto anche a capire i miei errori.

PM
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo