Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Non ti preoccupare siamo qui per aiutarti.
Quello che devi creare è un codice (routine evento o anche detto modulo di classe).
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Salve a tutti, ho una tabella "Oggetti" che, tra i vari campi ne ha uno denominato "Cod/N", questo campo deve contenere una numerazione del tipo 0001/2018, ovvero una numerazione di 4 cifre, la barra / e l'anno attuale., vorrei che quando si apre la maschera, nel campo specifico venga caricato in automatico l'ultimo valore inserito incrementato di una unità, ovvero se l'ultimo valore inserito è 0020/2018 il nuovo dovrà essere 0021/2018 e così via.
Nel campo Cod/N della maschera ho inserito, come valore predefinito la seguente:
="" & Format(IIf(IsNull(DMax("[Cod/N]";"[Oggetti]";"[Cod/N] like '????/" & Format(Date();"aaaa") & "'"));1;Mid(DMax("[Cod/N";"[Oggetti]";"[Cod/N] like '????/" & Format(Date();"aaaa") & "'");1;4)+1);"0000") & "/" & Format(Date();"aaaa")
risultato: con la tabella vuota, all'apertura della maschera, nel campo indicato viene automaticamente riportato "0001/2018", quindi sembra funzionare tutto bene ma, nel momento in cui registro il record e apro nuovamente la maschera per passare al record succesivo, nel campo Cod/N viene riportato: #Errore.
Qualcuno sa dirmi dove commetto l'errore?
Grazie per la collaborazione
Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.
Non ti preoccupare siamo qui per aiutarti.
Quello che devi creare è un codice (routine evento o anche detto modulo di classe).
Ciao, scusa l'ignoranza ma, quello che per te rappresenta l'ovvio per me diventa insormontabile, come già ti ho detto sono un neofita di Access per cui alcune cose mi sono ancora incomprensibili.
Dunque ho creato un nuovo modulo (in VBA) e ci ho incollato il tuo codice, quello che ancora non riesco a capire è come, nell'evento "su caricamento" impostare il nome controllo = NuovoCod().
Se all''evento su caricamento clicco sui tre puntini, posso:
ma qui mi perdo e non so cosa fare, puoi per favore essere più chiaro?
ti ringrazio per l'aiuto
Ciao,
non devi creare una routine evento ma un nuovo modulo (con nome quello che preferisci) dove ci incolli il codice (che dobbiamo verificare) .
Nella maschera puoi, ad esempio, nell'evento su caricamento impostare il nomeControllo = NuovoCod().
Ciao Mimmo e grazie per la risposta
non sono molto pratico di VBA ma, se mi dai un aiutino forse riesco a inserire quanto mi hai suggerito, cioè dove devo inserire il codice, con quale evento? e come faccio a richiamare nella maschera con =NuovoCod()?
Ciao,
non sarebbe meglio semplificarti la vita utilizzando una funzione del tipo:
Option Compare Database
Option Explicit
Function NuovoCod()
Dim wCod As String
wCod = DMax("[Cod/N]", "[Oggetti]")
If Len(wCod & "") = 0 Then
NuovoCod = "0001/" & Year(Date)
Else
NuovoCod = Format(Val(Left(wCod, 4)) + 1, "0000") & "/" & Year(Date)
End If
End Function
Richiamandola nella maschera con :
=NuovoCod()
Ciao Mimmo
P.s. L'approccio migliore sarebbe stato avere due campi distinti in tabella Anno e Progressivo (numerico) da formattare in maschera o report.