Newsgroup: it.comp.appl.access
Titolo: Gestione Protocollo

Salve a tutti,
sto implementando la gestione protocollo in un db,quindi con un numero
incrementale che si deve incrementare di 1 rispetto al precedente e se
è il primo di un nuovo anno riparte da 1.
Nei vari post ho trovato questa soluzione:
-creo tabella con i campi id, num_prot, tipo_prot, data_prot, mittente,
destinatario, oggetto, stato
-query con i campi della tabella con l'aggiunta del campo calcolato
AnnoCorrente:year([data_prot])
-maschera su query
-sull'evento corrente della maschera:
[num_prot]=Nz(Dmax("Val(Nz([num_prot],'1'))", "[q_protocollo]",
"AnnoCorrente="" & Year(Date) & "") + 1, 1)
ma mi dà errore di compilazione,potete dirmi dov'è l'errore e se è
una soluzione corretta?
Grazie per l'aiuto

Ciao Fabrizio,
anche io inizialmente avevo trovato molte idee ma tutte sono fallite..
Senti io ho fatto cosě.. visto e considerato che ho tanti contatori, uno per 
ogni documento contabile (il mio č un database gestionale) ho creato una tbl 
che ho chiamato numerazioni contabili con i seguenti campi: ID, 
tipodocumento, esercizio ed ultimonumeroimpiegato.. a cosa mi serve tutto 
ciň.. a far in modo che ogni registrazione che utilizza un numero 
progressivo, venga inserita anche in questa tbl.
Poi.. ho creato una  query con gli stessi campi. Poi, su prima di inserire 
della tua form scrivi questo codice:
Dim strFiltro As String
strFiltro = "Esercizio = '" & Format(Date, "yyyy") & "'"
Forms!TuaForm.TuoCampo = IIf(IsNull(DMax("UltimoNumeroImpegnato", 
"TuaQuery", strFiltro & " And " & strFiltro2) = 1), 1, 
DMax("UltimoNumeroImpegnato", "TuaQuery", strFiltro & " And " & strFiltro2) 
+ 1)
Questa stringa, ti incrementa il contatore di uno (altrimenti puoi mettere 
il valore che vuoi tu.. ad. es. puoi incrementarlo x 2 o piů) e quando 
cambia anno, automaticamente legge la query con il filtro dell'anno.. e lo 
trova vuoto e ricomincia da 1... Ovviamente se ti serve il contatore solo su 
una tbl, fai leggere direttamente il DMAX alla tua tbl cosě ti risparmi la 
doppia registrazione anche su tblNumerazioni Contabili.. capito?
A me funge.. spero anche a te.. se hai problemi fammi sapere...
Ciao
UItra..

 UItra..
Intanto grazie per la risposta Ultra!
Non credo che nel mio caso sia necessario creare una nuova tbl,il mio
protocollo non è di quelli complicati:
classico campo numerico incrementale che parte da 1 e si riazzera per
ogni anno come dicevo!!
Come pensi possa adattare il tuo suggerimento?
Grazie ancora

Grazie ancora
Prego ci mancherebbe :)
se hai problemi scrivimi i nomi dei vari campi (esercizio, numero, e il nome 
della tbl) che te li scrivo io :)
Ciao...

 della tbl) che te li scrivo io :)
i campi sono quelli scritti nel post precedente:
in tabella --> id, num_prot, tipo_prot, data_prot, mittente,
destinatario, oggetto, stato
in query--> stessi campi + AnnoCorrente:year([data_prot])
maschera basata su query
Inutile dirti che mi sei di molto aiuto,attendo news...:-).
Grazie

Grazie
Prego e a buon rendere :)
Ciao
Ultra 

Grazie per l'aiuto
Prego
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

 Ultra

 Numerazione crescente per fatture ed altro."?
Ciao Roberto,sì avevo già provato a guardare quella soluzione e ho
guardato anche il db di esempio,ma nella spiegazione c'è scritto
questo:
..."L'effetto finale è quello di ottenere una numerazione del tipo:
 E99/0001
Dove:
 E = Riferimento arbitrario
 99 = Ultime due cifre dell'anno
 / = Separatore
 0001 = Contatore
La cosa interessante è che, senza intervenire in alcun modo,
l'espressione azzera il contatore ad ogni inizio d'anno, il primo
valore del 2000 sarà: E00/0001
Spero che riteniate la cosa interessante, soprattutto perché non
richiede alcuna conoscenza di VB."..
L'unica cosa che in questo esempio fa al caso mio è il fatto che ad
ogni inizio anno il contatore si azzera,ma il resto non saprei come
adattarlo alle mie esigenze.
il formato del mio protocollo è cosi:
num_prot      tipo_prot       data_prot           mittente
destinatario         oggetto        stato
      1             IN              31/12/2006         mario rossi
  verdi giuseppe     prova           in posta verdi
      2             OUT           31/12/2006             ""
            ""                   ""                  ""
      1             IN              01/01/2007              ""
               ""                   ""                   ""
Spero di essermi spiegato meglio
grazie ancora per gli eventuali aiuti

Ok prova questa stringa da copiare su prima d'inserire sulla tua maschera:
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim strFiltro As String
strFiltro = "AnnoCorrente ='" & Format(Date, "yyyy") & "'"
Me.Num_Prot = IIf(IsNull(DMax("Num_Prot", "query q_protocollo ", strFiltro)
= 1), 1, DMax("Num_Prot", "query q_protocollo ", strFiltro) + 1)
End Sub
e che Dio ce la mandi buona :)
A me funziona ho già provato.. prova anche tu a cambiare l'anno nel pc..
vedrai che inizia da 1.. ah dimenticavo.. dopo aver cambiato l'anno nel pc..
chiudi la maschera.. falla aggiornare.. altrimenti il campo Anno corrente..
rimane al 2007.. ok?
A preeeeeeeeeessssssssssstoooooooooooooooo :)
Ultra

 Ultra

Grande grazie mille
Ne sono veramente lieto :)
Ciao
Ultra