Newsgroup: it.comp.appl.access
Titolo: Richiesta aiuto

Ho chiesto molte volte come fare per inserire in automatico, in un campo
numerico, un incremento di 1 senza utilizzare campo contatore. Ovviamente,
l'incremento riguarda il record aggiunto; vorrei una funzione che mi
inserisse in automatico, per ogni nuovo record, al campo interessato il
valore dell'ultimo + 1

 ha scritto nel messaggio
news:1BTQb.277837$vO5.11...@twister1.libero.it...

Poichè hai chiesto molte volte ti spiego il motivo per il quale forse
non hai avuto risposta......!
In questo NG ci sono alcune regole che teniamo vengano osservate
poichè questo è un luogo Pubblico di discussione.
Il Subject da te usato "Richiesta aiuto" non serve a nessuno nel caso
volesse effettuare ricerche nel NG per argmento.... convieni.....!
Ora per ottenere il massimo dai partecipanti del NG ti invito a leggere
il Regolamento che Roberto cortesemente pubblica con cadenza settimanale
intitolato "Come ci si dovrebbe comportare in un Newsgroup........".
Sono sicuro che non eri a conoscenza della cosa pertanto ti invito a
riemettere
il tuo Post utilizzando una descrizione in Oggetto più consona anche per
chi ha necessità di capire l'argomento......!
Ciao.
@Alex.

 ha scritto nel messaggio
news:1BTQb.277837$vO5.11...@twister1.libero.it...

Inserisci questo codice come sub nella maschera in cui vuoi implementare la
funzione
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim apri As New ADODB.Recordset
Dim ValoreAumentatoDi1 As Double
apri.Open "SELECT [ValoreDaLeggere] FROM Authors order by [ValoreDaLeggere]
DESC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    ValoreAumentatoDi1 = apri.Fields("ValoreDaLeggere").Value + 1
apri.Close
Me.NuovoValore.Value = ValoreAumentatoDi1
End Sub
Saluti Maurizio


Bravo Maurì così quando servirà a chiunque altro basterà che cerchi
"Richiesta aiuto"
invece che so di  "Incrementare automaticamente un campo numerico" per avere
la
tua valida soluzione.
SunRex

 ha scritto nel messaggio
news:bv12dm$iij$1...@lacerta.tiscalinet.it...

A parte la scelta di ADO invece che una riga sola di una funzione di
aggregazione sui domini,
che rimane solo una scelta tecnica.................! con Dmax(...) messo
nella proprietà
DefaultValue non ti pare più semplice.....!!!!
Il resto l'ha già detto Sunrex poi fai come credi....!
@Alex.

 ha scritto nel messaggio
news:bv12dm$iij$1...@lacerta.tiscalinet.it...

Questa potrebbe essere d'aiuto nel caso decidessi di dichiarare quel campo
come testo:
' io l'ho messa in un modulo, cosi' la uso per tutte le chiavi che ho
dichiarato come testo
Public Function NextMax(tbl As String, key As String, char_key As Integer)
As String
' tbl = nome della tabella
' key = nome del campo chiave da incrementare
' char_key = numero di caratteri che deve contenere la stringa restituita
' Questa funzione serve per incrementare un campo sebbene sia di tipo testo.
' Se in tbl la massima key fino ad ora era "00015"
' NextMax ("tbl","key",5) = "00016"
   Dim rst As ADODB.Recordset
   Dim I_Cod As Long
   Dim S_Cod As String
   Dim strSQL As String
   Dim i As Integer
   Set rst = New ADODB.Recordset
'sicuramente esiste un modo piu' elegante :)
   strSQL = "SELECT max(CLng([" & key & "])) AS massimo FROM " & tbl & ";"
   rst.Open strSQL,  CurrentProject.Connection
   S_Cod = ""
   If (IsNull(rst("massimo").Value)) Then
      I_Cod = 1
   Else
      I_Cod = rst("massimo").Value + 1
   End If
   If (I_Cod >= 10 ^ char_key) Then
            MsgBox "Raggiunto il limite consentito di " & tbl & "!",
vbCritical, "Attenzione"
            I_Cod = 0
   'se I_Cod torna 0 S_Cod torna "0" e eventualmente si puo' intervenire ad
esempio bloccando l'apertura della maschera
      Else
            For i = 1 To char_key - Len(CStr(I_Cod))
            S_Cod = "0" & S_Cod
            Next
   End If
         S_Cod = S_Cod + CStr(I_Cod)
         NextMax = S_Cod
End Function

 funzione
Complimenti!!!!
Antonio

 ha scritto nel messaggio
news:ii8Rb.279102$vO5.11...@twister1.libero.it...

DON CHISCIOTTE......!
@Alex.