Newsgroup: it.comp.appl.access
Titolo: Contatore

Ho una funzione  su prima di inserire di una maschera che cerca l'ultimo 
record inserito nel campo della tabella e lo incrementa di 1
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim rst1 As Recordset
Dim valore As String
Dim record As String
Set rst1 = CurrentDb.OpenRecordset("tuatabella")
If rst1.EOF Then  ' se il record č nullo
valore = 1
record = valore
Else
rst1.MoveLast    'vai allultimo record
valore = rst1!Campotuatabella    'valore recorset campoTuaTabella
record = valore + 1
End If
rst1.MoveLast
valore = rst1! Campotuatabella
record = valore + 1
Me.Contatore = record
Set rst1 = Nothing
'MsgBox record
End Sub
Solo che se qualcuno seleziona piů di un record nella maschera li copia e li 
incolla nella maschera la funzione assegna lo stesso numero a tutti i record 
incollati e questo non va bene.
Dove sbaglio?
Avete qualche suggerimento per risolvere il problema senza usare il 
contatore di access?
Ciao

 wrote in message 
news:fc0dst$dmm$1...@nnrp-beta.newsland.it...

Č Fantozzi
che scrive
e programma
a questa maniera.
Le persone normali scrivono cosě:
Non sarebbe piů semplice creare un campo AutoNumber?
Ovvero - non potendosi - occorrerebbe qualche riga VBA
da eseguire (in modo interattivo) dopo la copiatura multipla
(avvenuta anch'essa in modo interattivo) per effettuare
la numerazione progressiva.
Bruno

 contatore di access?
Ma che t'ha fatto il contatore di Access?
Saluti.

 ha scritto nel messaggio 
news:46e3ea0f$0$10621$4faf...@reader2.news.tin.it...

Caro Bruno vorrei precisare due cose:
1)Chie scrive non č Fantozzi e nemmeno chi programma in quanto la funzione 
la trovi sul sito comune creata da persone che da anni danno aiuto e 
consigli ai frequentatori di questo NG.
2) Chi č Bruno Campanini non lo so ma forse un complessato o con dei 
problemi d'esistenza in quanto nessuno lo obbliga a rispondere ai messaggi, 
e sicuramente la risposta che ha dato non da persona normale come forse 
crede di essere
Debora 

 come forse crede di essere
Potevi anche omettere il "Caro"; con tutta quell'aciditŕ
che ti trovi in corpo č un'ipocrisia del tutto gratuita.
Certamente ognuno ha i propri problemi di realizzazione
e di esistenza, alcuni addirittura di sopravvivenza.
Sta di fatto che - ti piaccia o meno - lo scrivere una riga sě e
tre no se non č da Fantozzi č quantomeno da bambini che
frequentano la scuola elementare.
Non occorre mica essere psicoanalisti per interderlo.
Che poi alcuni componenti di questo NG scrivano alla tua
maniera, beh ciň non nobilita affatto tale manifestazione
di infantilismo.
Ma ognuno č libero di esprimersi come vuole e puň.
E ognuno, per contro, č libero di manifestare il proprio
giudizio critico.
Secondo lo stile comunicativo al quale č stato educato.
Bruno 

 Caro Bruno vorrei precisare due cose:
(cut)
Polemiche personali a parte, è lecito chiederti per quale motivo non vuoi
utilizzare gli autonumber di sistema.
La funzione che trovi sul sito comune nasce da un malinteso: il fastidio per
"i vuoti" nel timore che il contatore possa "esaurirsi".
Ma è una paura non razionale considerando il range disponibile per un intero
lungo (2.147.000.000 e rotti).
La funzione in oggetto andrebbe tolta dal Sito Comune: genera malintesi e
problemi come il tuo (il copia/incolla).
Oltretutto non sono sicuro che gestisca i conflitti in multiutenza
nell'assegnazione del numero.
Saluti.


Ciao Debora,
credo che un gruppo non mederato sia migliore di uno moderato, peccato che 
ogni tanto interviene qualcuno che, invece di spavaldeggiare su Access, 
farebbe meglio a seguire un corso di educazione, galateo e comportamento con 
gli altri. Porta pazienza. Mia figlia canta "conosco un tipo grosso grosso e 
tondo, che parla tanto... e a furia di parlare si gonfia da scoppiare" forse 
alla fine questi saccenti scoppieranno, che ne pensi ? io lo spero 
segretamente...
Preferisco tornare al tuo argomento primario.
Ultimamente mi è successo un problema con i contatori che si 
autoincrementano.
A seguito di una improvvisa interruzione di corrente, in una tabella 
contenente 5000 records, il contatore portava il valore 4900 e, ad ogni 
tentativo ti inserire un nuovo record, il programma faceva errore. Forse 
avrei potuto cercare una soluzione più "informatica", ma visto che mancavano 
pochi incrementi all'ultimo record inserito, per questione di urgenza ho 
preferito fare andare in crasch il programma fino ad avere nel contatore il 
valore 5001, dopo di che è tornato tutto a dovere.
Questo per dire che l'autonumber mi piace, ma mi dà qualche preoccupazione.
Se non hai problemi di velocità nel tuo applicativo, forse ti converrebbe 
creare una funzione che, ad ogni nuovo record, provveda ad assegnare al 
campo della tabella il primo valore disponibile più uno.
Se questa funzione la chiami "Assegnaprimovaloreutile", dovresti mettere 
nella proprietà "Valore predefinito" del campo della tabella il richiamo 
della tua funzione... così: Assegnaprimovaloreutile().
Questa tecnica non l'ho provata, ma credo che dovrebbe funzionare.
Ciao
Antonio

 tentativo ti inserire un nuovo record, il programma faceva errore.
(cut)
A seguito di un'improvvisa interruzione di corrente possono capitare una
lunga serie di problemi su un .mdb.
Utilizzare chiavi incrementate a codice NON aumenta l'affidabilità
dell'applicazione, ma ti espone a un mare di problemi che non avrai usando
gli autonumber gestiti dal motore.
Se il discorso è  "chiave primaria multicampo tradizionale"  VS  "Chiave
contatore" possiamo filosofeggiarne a piacimento.
Ma se vogliamo discorrere dell'opportunità di sostituire un contatore con un
intero lungo incrementato a codice, proprio no.
In vari casi quelli che chiami "saccenti" hanno alla base di quello che
scrivono centinaia di utenti che usano i loro applicativi ogni giorno.
E vedrai che dopo un lustri d'esperienza sul campo sapranno bene quel che
dicono...
Saluti.

 ha scritto nel messaggio 
news:46e4f525$0$17944$4faf...@reader1.news.tin.it...

Ciao Simone,
ti assicuro che il mio intervento non era riferito a te... a meno che Simone 
e Bruno non siano la stessa persona.
La soluzione che ho suggerito a Debora forse non l'avrei neppure pensata se 
non avessi avuto quel problema che ho detto. La mia ignoranza su come faccia 
Access ad incrementare il valore mi porta a non sottovalutare l'opportunità 
di gestire il campo in un modo alternativo.
Quel problema di cui ho parlato non sparì nè con la compattazione e 
ripristino, nè con la copia effettiva in un altro db. Se il numero 
propostomi da Access non fosse stato solo di 100 inferiore al valore 
massimo, beh, forse starei ancora lì a cercare di sistemare l'inconveniente.
Ciao
Antonio

 Questa tecnica non l'ho provata, ma credo che dovrebbe funzionare.
Saggio suggerimento!
Quello di proporre soluzioni non verificate... i NG sono la sede ideale.
Bruno

 e Bruno non siano la stessa persona.
La stessa persona?
NO!
Del resto tu hai usato il plurale nella risposta...
Saluti.

 Secondo lo stile comunicativo al quale è stato educato.
Uhmmm.... Se mi esprimessi sempre come vorrei ci sarebbe da ridere/piangere
Ho radici "borgatare"
-- 
ac
y-1=x