Newsgroup: it.comp.appl.access
Titolo: numerazione annua di un campo

Ciao,
supponiamo di lavorare su una tabella "Ordini" che ha i seguenti
campi:
id_ordini, n_ordine, data_ordine, ecc.
Avrei la necessità di numerare il campo "n_ordine" in modo sequenziale
crescente a partire da 1 al primo gennaio per poi proseguire a
crescere fino alla fine dell'anno come nell'esempio:
1/01/2011
2/01/2011
...
35/02/2011
36/02/2011
...
158/07/2011
159/07/2011
...
2548/12/2011
2549/12/2011
ecc.
per poi ricominciare da 1 nell'anno successivo.
Mi dareste una mano?
Grazie davvero.
Remigio

 ha scritto nel messaggio 
news:8d37d877-7d38-4685...@m35g2000vbn.googlegroups.com...
Ciao,
supponiamo di lavorare su una tabella "Ordini" che ha i seguenti
campi:
id_ordini, n_ordine, data_ordine, ecc.
Avrei la necessit� di numerare il campo "n_ordine" in modo sequenziale
crescente a partire da 1 al primo gennaio per poi proseguire a
crescere fino alla fine dell'anno come nell'esempio:
1/01/2011
2/01/2011
...
35/02/2011
36/02/2011
...
158/07/2011
159/07/2011
...
2548/12/2011
2549/12/2011
ecc.
per poi ricominciare da 1 nell'anno successivo.
Mi dareste una mano?
Grazie davvero.
Remigio
dmax("cint(left([campo],instr([campo],"/")-1)")+1 & "/" & 
format(month(date),"00") & "/" & year(date)
buttata giu cosi
ma spezzare il campo in 3 e poi visualizzare in maschera o nei report 
l'unione dei 3 campi no eh?
Antonio 

 ha scritto nel messaggionews:8d37d877-7d38-4685...@m35g2000vbn.googlegroups.com...

Antonio,
ti ringrazio per la formula che hai cogitato e che non ho ancora
applicato per ragioni di tempo, ma mi piacerebbe capirci qualcosa. Ti
spiace se ti chiedo alcuni chiarimenti, così, giusto per imparare?
In particolare desidererei capire questa parte
"cint(left([campo],instr([campo],"/")-1)"
perchè comprende dei comandi che non conosco e quel "-1" che non
capisco.
Ancora grazie e buon anno di cuore.
Remigio

 Antonio
Antonio,
ti ringrazio per la formula che hai cogitato e che non ho ancora
applicato per ragioni di tempo, ma mi piacerebbe capirci qualcosa. Ti
spiace se ti chiedo alcuni chiarimenti, cos�, giusto per imparare?
In particolare desidererei capire questa parte
"cint(left([campo],instr([campo],"/")-1)"
perch� comprende dei comandi che non conosco e quel "-1" che non
capisco.
Ancora grazie e buon anno di cuore.
Remigio
ALT!!!!
Stesso discorso fatto recentemente a Rync
Help on line
Per ogni funzione c'� spiegazione ed esempi
Poi semmai ne riparliamo!
Antonio 

 ha scritto nel messaggionews:aee63adf-5131-4a38...@l8g2000yqh.googlegroups.com...

ok,
era solo per avere un'idea in parole povere di cosa fa quella parte di
istruzioni.
Ciao

 ha scritto nel messaggio 
news:009da787-6450-4ffd...@f8g2000yqd.googlegroups.com...

non ci sono parole povere. c'� sintassi e semantica della funzione, molto 
semplice nell'help
quando avrai visto per altri dubbi posta
Antonio 

 ha scritto nel messaggionews:009da787-6450-4ffd...@f8g2000yqd.googlegroups.com...


 >> > format(month(date),"00") & "/" & year(date)
Scrivi DOPO il quoting, magari sfoltendo come fatto da me
la instr ti da la posizione del primo carattere della stringa cercata, 
quindi in questo caso la posizione del primo /
col -1 hai la posizione del carattere precedente al primo /
la left fino a quel punto ti da la stringa fino al primo / escluso
in questo modo hai staccato la parte progressivo dalla stringa completa 
ottenendo cmq una stringa
con cint la trasformi in numero
con +1 prendi il progressivo successivo
cmq secondo me non c'hai perso tempo con l'help
Antonio 

 cmq secondo me non c'hai perso tempo con l'help
questo non è vero, ho fatto anche delle prove con una query per vedere
il funzionamento dei comandi.
Ti ringrazion infinitamente.
Remigio

 cmq secondo me non c'hai perso tempo con l'help
questo non � vero, ho fatto anche delle prove con una query per vedere
il funzionamento dei comandi.
Ti ringrazion infinitamente.
Remigio
Ok, per� ricorda, la mia esperienza che tu citi, � anche aver perso tanto 
tempo con l'help e con le prove!
Antonio 

...
Ciao Antonio,
in questi giorni ho provato ad usare la funzione che mi hai suggerito
dmax("cint(left([miatabella]![miocampo],instr([miatabella]!
[miocampo],"/")-1)")+1 & "/" &
format(month(date),"00") & "/" & year(date)
inserendola come origine controllo in una casella di testo ma vien
fuori un errore di sintassi e volevo chiedere:
- la funzione dmax prevede il dominio in cui deve essere applicata e
qui mi sembra che manca
- mi sembra manchi anche una parentesi prima del +1
sbaglio?
te lo chiedo solo a titolo didattico.
Ciao e grazie ancora.
Remigio

 ha scritto nel messaggio 
news:62570c07-52c9-4877...@i41g2000vbn.googlegroups.com...


[miocampo],"/")-1))","nomeTabella")+1
mancava il dominio
mancava la parentesi
se lo metti in un controllo, devi sostituire le virgole con i puntivirgola
Antonio 

 ha scritto nel messaggionews:62570c07-52c9-4877...@i41g2000vbn.googlegroups.com...

grazie ancora
Remigio

 Antonio
Questa istruzione però comincia a contare da uno nell'anno corrente e
prosegue all'infinito negli anni successivi.
Se invece volessi ricominciare da uno ogni inizio anno?
Ciao
Remigio


Cioè ogni 01/01 il ocntatore dovrebbe tornare a uno, per es.
1/01/2012
2/01/2012
798/12/2012
...
1/01/2013
2/01/2013
ecc.
Sarebbe possibile ottenere una funzione del genere?
Ciao

 Remigio
Cio� ogni 01/01 il ocntatore dovrebbe tornare a uno, per es.
1/01/2012
2/01/2012
798/12/2012
...
1/01/2013
2/01/2013
ecc.
Sarebbe possibile ottenere una funzione del genere?
Ciao
Rispondo un po' al volo
questa � la funzione che uso io con codice finale di tipo yyyy/nnnnn
    anno_max = DMax("left(COD_TRANS,4)", "ARCH_TRANSAZIONI")
    If IsNull(anno_max) Then
        new_cod = Year(Date) & "/" & "00001"
    ElseIf anno_max <> Trim(Year(Date)) Then
        msg = "Attenzione!@La numerazione in corso utilizza l'anno "
        msg = msg & anno_max & ", mentre l'anno corrente risulta essere "
        msg = msg & "il " & Trim(Year(Date)) & ".@Ricomincio "
        msg = msg & "a numerare le" & Trans & "con l'anno " & 
Trim(Year(Date)) & "?"
        risposta = MsgBox(msg, vbInformation + vbYesNo, "Conferma 
Operazione!")
        If risposta = vbYes Then
            new_cod = Year(Date) & "/" & "00001"
        Else
            crit = crit & " and left(COD_TRANS,4)=" & anno_max
            app = DMax("Right(COD_TRANS, 5)", "ARCH_TRANSAZIONI", crit)
            app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
            new_cod = anno_max & "/" & app
        End If
    Else
        crit = crit & " and left(COD_TRANS,4)=" & anno_max
        app = DMax("Right(COD_TRANS, 5)", "ARCH_TRANSAZIONI", crit)
        app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
        new_cod = anno_max & "/" & app
    End If

...

Ciao Antonio,
grazie per avermi suggerito questo codice.
Mi dici per favore a cosa si riferiscono nelle tue tabelle i campi
cod_trans e arch_transazioni?
Quasi tutto il codice serve a stabilire se si è iniziati un nuovo anno
o si è ancora nell'anno corrente, dico bene?
Mentre la riga
            app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
è quella che incrementa di uno il numero dopo l'anno.
Ho capito bene?
Grazie ancora per l'aiuto, non sai quanto sei prezioso.
Un saluto.
Remigio

?"remigio"  ha scritto nel messaggio 
news:0c95bec2-758e-4846...@k22g2000yqh.googlegroups.com...


Quasi tutto il codice serve a stabilire se si č iniziati un nuovo anno
o si č ancora nell'anno corrente, dico bene?
Mentre la riga
            app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
č quella che incrementa di uno il numero dopo l'anno.
Ho capito bene?
Grazie ancora per l'aiuto, non sai quanto sei prezioso.
Un saluto.
Remigio
__
Ciao Remigio, ha copia incollato del codice che usa per gestire i suoi 
appuntamenti in via Gradoli...
non farci caso
MA

 MA
Dai,
vi prego, sto cercando di imparare,
siate seri....

 ha scritto nel messaggio 
news:0c95bec2-758e-4846...@k22g2000yqh.googlegroups.com...


Quasi tutto il codice serve a stabilire se si č iniziati un nuovo anno
o si č ancora nell'anno corrente, dico bene?
Mentre la riga
            app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
č quella che incrementa di uno il numero dopo l'anno.
Ho capito bene?
Grazie ancora per l'aiuto, non sai quanto sei prezioso.
Un saluto.
Remigio
Lascialo perdere, č del Napoli...
transazioni č la tabella dove viene salvato il codice incrementale e cod 
trans č il nome di quel campo

 trans è il nome di quel campo
Ciao Antonio,
per provare il tuo codice ho creato una tabella ARCH_TRANSAZIONI in
cui ho inserito il campo cod_trans.
Poi in una maschera ho inserito il campo cod_trans e sull'evento open
della form ho messo il tuo codice.
Quando apro la maschera un messaggio mi avverte che c'è un errore di
sintassi in & "and left(COD_TRANS,4)=" & anno_max
om questa ultima porzione di codice
  Else
        crit = crit & "and left(COD_TRANS,4)=" & anno_max
        app = DMax("Right(COD_TRANS,5)", "ARCH_TRANSAZIONI", crit)
        app = Right("0000" & Trim(Str(Val(app) + 1)), 5)
        new_cod = anno_max & "/" & app
    End If
Mi daresti una mano a capire cosa non va bene per favore?
Grazie, è molto importante se mi aiuti.
Ciao


Mi è stato suggerita una soluzione presente sul sitocomune
http://www.sitocomune.com/general/general017.htm
e devo dire che con i dovuti aggiustamenti è proprio quello che
cercavo.
Ciao e grazie.
--
Remigio
www.ricoclaun.it
Clownterapia e volontariato di corsia

 Clownterapia e volontariato di corsia
Il codice di questa formula permette di ottenere un contatore del tipo
nnnnn/yyyy
="" &
Format(IIf(IsNull(DMax("[n_impegno_nuovo]";"[autorizzazioni]";"[n_impegno_nuovo]
 like '?????/" & Format(Date();"yyyy") & "'"));
1;Mid(DMax("[n_impegno_nuovo]";
"[autorizzazioni]";"[n_impegno_nuovo] like '?????/" &
Format(Date();"yyyy") & "'"
);1;5)+1);"00000") & "/" & Format(Date();"yyyy")
Volendo inserire anche il mese ho modificato il codice nel modo
seguente
="" &
Format(IIf(IsNull(DMax("[n_impegno_nuovo]";"[autorizzazioni]";"[n_impegno_nuovo]
 like '?????/" & Format(Date();"mm/yyyy") & "'"));
1;Mid(DMax("[n_impegno_nuovo]";
"[autorizzazioni]";"[n_impegno_nuovo] like '?????/" &
Format(Date();"mm/yyyy") & "'"
);1;5)+1);"00000") & "/" & Format(Date();"mm/yyyy")
solo che il contatore torna a "1" ad ogni inizio mese.
Come si potrebbe ottenere il conteggio annuo inserendo anche il mese?
Cioa e grazie.
Remigio


Mi rispondo da solo, forse a qualcuno potrà interessare:
="" & Format(IIf(IsNull(DMax("[n_
impegno]";"[autorizzazioni]";"[n_impegno] like '?????/??/" &
Format(Date();"yyyy") & "'"));
1;Mid(DMax("[n_impegno]";"[autorizzazioni]";"[n_impegno] like
'?????/??/" & Format(Date();"yyyy") & "'");1;5)+1);"00000") & "/" &
Format(Date();"mm/yyyy")
Con questa istruzione si ha un contatore del tipo
01234/02/2011
01235/02/2011
ecc.
Un saluto a tutti.
Remigio