Buongiorno a tutti.
Ho un programma che deve aggiungere un record ad una tabella di un dBase access.
Questo programma gira in una piccola rete domestica su diversi computer. In questo record c'è un numero che deve essere sequenziale. Ora accade che se due postazioni cercano di scrivere il proprio record nel database contemporaneamente, il numero non "aumenta" ma scrive lo stesso numero.
Il codice è quello sotto: leggo il numero dell'ultimo record, lo aumento di uno, e poi scrivo l'intero record.
Ecco a volte se l'operazione è "in contemporanea da due postazioni" mi ritrovo lo stesso numero. Ho provato anche ad usare le transazioni (se interessa posto anche quel codice), ma non cambia nulla se non il rallentamento dell'esecuzione.
Quindi chiedevo se qualcuno volesse dire la sua. Vi prego solo di non rilevare che il metodo è sbagliato, oppure che è al posto di quello devo usare quell'altro, se poi non è utile alla soluzione finale.
Orfano di Masterdrive.it ho visto che fra gli utenti di questo forum ci sono nomi che "conosco"... confido molto in buon consiglio.
Una Serena giornata a tutti!
Rem ----- Leggo in db l'ultimo ordine ---------------------------------------------
sSql = "select numero from " & sTabella & " order by numero"
rs.Open sSql, CN, adOpenStatic, adLockReadOnly, adCmdText
If Not rs.EOF Then
rs.MoveLast
iOrd = rs!numero + 1
Else
iOrd = 1
End If
rs.Close
Rem --------------------------------------------------------------------------------
sSql = "select * from " & sTabella & " order by numero"
rs.Open sSql, CN, 3, 3
rs.Find "numero = '" & iOrd & "'"
If rs.EOF Then
Rem ------------------------------------------------------------
Rem INSERT
Rem ------------------------------------------------------------
rs.AddNew
rs!ordine = iPagina
rs!layout = "Landscape"
rs!numero = iOrd
rs!datacc = Date
rs.Update
rs.Close
Else
Rem codice per UPDATE
End If