Certo che lo prevede, ma mi sembra controproducente effettuare una lettura su una tabella per aggiornarla: non so se conosci i gestionali, ma quello che vuoi fare è lo stesso principio che si usa per la gestione delle numerazioni dei documenti. Avendo una tabella per gestire il numeratore è anche possibile operare per sistemare eventuali errori (caso che operando su un'unica tabella diventa più complesso).
Per come vuoi agire tu puoi operare nel seguente modo:
- Ti crearti il command per leggere il dato massimo della colonna
- Restituendo il Command un valore scalare puoi usare la funzione ExecuteScalar del Command (restituisce la prima colonna del primo record del resultset, ma tu avrai un record di una colonna)
- Memorizzi il valore in una variabile e lo utilizzi
In pseudocodice puoi gestirlo come di seguito riportato:
Dim cm As New Command("SELECT MAX(Colonna) WHERE Anno=@Anno")
Dim valore As Integer=cm.ExecuteScalar
TextBox.Text=(valore+1).ToString
I problemi li avrai se usi il programma in multiutenza: poni il caso che l'utenteA apra la maschera per inserire un record e gli viene restituito un numero. Mentre l'utenteA lavora l'utenteB apre la maschera per inserire un record e gli viene restituito il numero successivo. L'utenteB conferma l'inserimento e l'utenteA abbandona l'inserimento... Ti trovi un buco nella numerazione...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole