Buongiorno, avrei bisogno di un aiuto per scrivere qualche riga di codice VBA.
Ho una tabella denominata
tblNominativi. All'interno i seguenti campi:
IdNominativo(num. automatica),
NumeroTessera(numerico),
Cognome(testo breve),
Nome(testo breve)
In una maschera denominata
frmInserisciNominativi, vado ad inserire nella
tblNominativi i nuovi
record.
Il mio problema è che devo riuscire a far comparire nella TextBox (non associata)
txtNumeroTessera (presente all'interno della
frmInserisciNominativi) il primo numero disponibile, interrogando il campo
NumeroTessera della
tblNominativi.
Immagino che bisognerebbe aprire un
RecordSet, ordinarlo in base all'ordine crescente, assegnare ad una variabile
X il valore del campo
NumeroTessera del primo Record (attualmente ordinato) e confrontare, attraverso un ciclo, il record attuale con quello successivo (o precedente). Se
successivo è maggiore di più di 1 rispetto a quello
attuale allora assegna alla variabile
Y il valore
attuale + 1. Infine valorizza la
txtNumeroTessera con la variabile
Y.
Credo che a grandi linee sia questo il ragionamento. Ora io ho provato a scrivere qualche linea di codice:
Private Sub Form_Open(Cancel As Integer)
Dim X As Integer, Y As Integer, W As Integer
Set rs = CurrentDb.OpenRecordset("SELECT NumeroTessera FROM tblNominativi")
OrderByOn = False
OrderBy = rs(0)
OrderByOn = True
X = rs(0)
rs.MoveFirst
Do Until rs.EOF
'QUI DOVREI FARE UNA COMPARAZIONE TRA IL CAMPO NumeroTessera DEL RECORD ATTUALE E QUELLO SUCCESSIVO (o precedente)
'SE VALORE DEL CAMPO NumeroTessera DEL RECORD SUCCESSIVO RISULTA MAGGIORE DI 2 NUMERI RISPETTO A QUELLO ATTUALE ALLORA
'VARIABILE W RISULTA = A VALORE CAMPO NumeroTessera ATTUALE + 1
txtNumeroTessera.Value = W
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
Facendo un esempio descrittivo:
Id -------
NumeroTessera---------
Cognome-------------
Nome
1--------------
1----------------------
AAAAA---------------
AAAAAA
2--------------
7----------------------
BBBBB---------------
BBBBBBB
3--------------
6----------------------
CCCCC--------------
CCCCCCC
4--------------
5----------------------
DDDDD--------------
DDDDDDD
ORDINAMENTO:
Id -------
NumeroTessera---------
Cognome-------------
Nome
1--------------
1----------------------
AAAAA---------------
AAAAAA
4--------------
5----------------------
DDDDD--------------
DDDDDDD
3--------------
6----------------------
CCCCC--------------
CCCCCCC
2--------------
7----------------------
BBBBB---------------
BBBBBBB
RISULTATO:
Primo numero che deve comparire nella
txtNumeroTessera deve essere il
2 visto che dopo il numero 1 c'è subito il numero 5.
Immagino che il mio codice sia pieno di errori e confusione e che la strada non sia quella giusta. A tal proposito qualcuno mi può suggerire il codice corretto o almeno qualche riga?
Grazie a tutti