Ciao,
premetto che sono stato recentemente su queste questioni e ci ho pestato parecchio la testa ...
1 ) Con una select scrivi il numeratore dentro esempio una text box, successivamente lo leggi e incrementi di uno, facendo l' update nel database e scrivendo il valore aggiornato al interno di un altra text box.
Guarda come ho fatto , ovviamente ci sono altri metodi, ma questo mi è venuto a logica , sembra la via più facile.
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'----------------------------------------------------------------------------------------------------------------
' Bottone incrementa contatore - T E S T
Dim con2 As SqlConnection
Dim cmd2 As SqlCommand
con2 = New SqlConnection("***")
con2.Open()
' Query per la gestione del incremento - contatore
'cmd2 = New SqlCommand("UPDATE NumeroOrdine1", con2)
' Query per la stampa della tabella
cmd2 = New SqlCommand("SELECT NumeroOrdine FROM NumeroOrdine1", con2)
Dim dr As SqlDataReader
dr = cmd2.ExecuteReader()
dr.Read()
TextBox1.Text = dr(0).ToString
con2.Close()
TextBox2.Text = ((TextBox1.Text) + 1)
' ----------------------------------------------------------------------------------------------------------------
End Sub
Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim con3 As SqlConnection
Dim cmd3 As SqlCommand
con3 = New SqlConnection("***")
con3.Open()
cmd3 = New SqlCommand("UPDATE NumeroOrdine1 SET NumeroOrdine=" + TextBox2.Text + "WHERE NumeroOrdine='" + TextBox1.Text + "'", con3)
cmd3.ExecuteNonQuery()
con3.Close()
' ----------------------------------------------------------------------------------------------------------------
Dim con4 As SqlConnection
Dim cmd4 As SqlCommand
con4 = New SqlConnection("***")
con4.Open()
cmd4 = New SqlCommand("SELECT NumeroOrdine FROM NumeroOrdine1", con4)
Dim dr As SqlDataReader
dr = cmd4.ExecuteReader()
dr.Read()
TextBox3.Text = dr(0).ToString
con4.Close()
End Sub
2 ) Questa è la questione più complessa, si tratta di accesso concorrente e tutte queste storie .
La soluzione potrebbe essere , ti faccio sempre l' esempio mio, sito di e commerce, devo assegnare il numnero ordine, lo assegno subito appena inizia l' ordine, poi se non lo conclude, l' utente dopo tanto prende un altro numero , o se non lo paga comunque nel db ci sarù una colonna Status.
Dunque cerca di assegnare subito e fare subito l' update al utente , senza pensare a bloccare ecc, fai subito i passaggi, poi pensa bene a come ragionare / strutturare il database.
3 ) Non ho usato commit
Comunque ti ripeto, pensaci bene che sono questioni complesse , ci arriverai con un po di ragionamento.
Spero di esserti stato utile.