Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Incremento valore di 1 errato
giovedì 08 novembre 2018 - 18.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
gio 8 nov 2018 - 18:21
Salve a tutto il forum avrei il seguente problema:
Ho due form.
Sulla form1 ho le text Numerotextbox, Serietextbox e Codicetextbox sulla form2 ho una datagrid e 2
text Codicetextbox e Numerotextbox.
Aggiungo altre 2 textbox per fare l' incremento + 1 e nell' evento Load della form2 scrivo:
Me.TddtTableAdapter.Fill(Me.AziendaleDataSet.Tddt)
Me.TddtBindingSource.MoveLast()
If CodiceTextBox.Text = "" Then
CodiceTextBox.Text = "0"
TextBox2.Text = CodiceTextBox.Text + 1
Else
TextBox2.Text = CodiceTextBox.Text + 1
End If
Adesso andando in esecuzione apro la form2 e il valore si incrementa correttamente, ma se chiudo la
form2 e passo a form1 e riapro la form2 nella textbox2 mi spunta 1.
Io ho 4 righe sulla tabella, nella textbox2 mi dovrebbe spuntare sempre 5 come il primo avvio ma
non funge.
Dove sta il problema?
Distinti Saluti
Fabio Messina
Davide1986
Profilo
| Junior Member
95
messaggi | Data Invio:
mer 8 gen 2025 - 10:37
Buongiorno e spero che abbia risolto.
Per risolvere il problema che hai descritto, dobbiamo analizzare il codice e apportare alcune modifiche. Ecco una probabile soluzione, provo ad essere dettagliato:
## Analisi del problema
Il problema principale sembra essere che il valore nella TextBox2 non viene incrementato correttamente quando si riapre la Form2. Questo accade perché ogni volta che si apre la Form2, il codice nell'evento Load viene eseguito da capo, resettando il valore.
## Soluzione proposta
Per risolvere questo problema, dobbiamo assicurarci che il valore massimo del codice venga sempre recuperato correttamente dal database. Ecco come modificare il codice nell'evento Load della Form2:
```vb.net
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Riempie il DataSet con i dati dalla tabella Tddt
Me.TddtTableAdapter.Fill(Me.AziendaleDataSet.Tddt)
' Trova il valore massimo del codice nel DataSet
Dim maxCodice As Integer = 0
For Each row As DataRow In Me.AziendaleDataSet.Tddt.Rows
Dim codice As Integer
If Integer.TryParse(row("Codice").ToString(), codice) Then
If codice > maxCodice Then
maxCodice = codice
End If
End If
Next
' Incrementa il valore massimo trovato
TextBox2.Text = (maxCodice + 1).ToString()
End Sub
```
Questo codice fa quanto segue:
1. Riempie il DataSet con i dati dalla tabella Tddt.
2. Itera attraverso tutte le righe del DataSet per trovare il valore massimo del codice.
3. Incrementa il valore massimo trovato di 1 e lo assegna a TextBox2.
## Considerazioni aggiuntive
- **Gestione degli errori**: Assicurati di implementare una gestione degli errori adeguata, ad esempio per gestire il caso in cui non ci siano righe nel DataSet o se ci fossero problemi nella conversione dei valori.
- **Ottimizzazione**: Se la tabella Tddt contiene molte righe, potresti considerare di utilizzare una query SQL per ottenere direttamente il valore massimo dal database, anziché iterare attraverso tutte le righe nel codice VB.NET.
- **Sincronizzazione**: Assicurati che il valore del codice sia sincronizzato correttamente tra Form1 e Form2, specialmente se l'utente può modificare o aggiungere nuovi codici in entrambe le form.
- **Validazione**: Implementa una validazione per assicurarti che il nuovo codice generato non sia già presente nel database.
Implementando queste modifiche, dovresti risolvere il problema dell'incremento del codice quando riapri la Form2. Il valore in TextBox2 dovrebbe ora mostrare sempre il prossimo codice disponibile, indipendentemente da quante volte chiudi e riapri la form.
Blog ImaginSystems
http://blogs.dotnethell.it/imaginsystems
http://www.imaginsystems.it
http://www.alpacasrl.it
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !