gianfranco.79

Numerazione Progressiva

9 messaggi in questa discussione

salve a tutti..ho un piccolo problemino. ho creato un web che faccio girare in un server della mia azienda con il quale gestisco la posta in entrata. la posta deve avere un numero di protocolllo (un numero progressivo che con il cambio dell'anno si riazzeri e riparta da 1). il tutto è stato creato con dreamweaver mx con pagine asp e db access 2000. per adesso il numero di protocollo viene assegnato manualmente (nella pagina inserisci posta, vi è un recordset filtrato per ultimo numero di protocollo e data). questo però causa problemi se qualcuno inserisce un numero diverso (perdo la progressione). vorrei che questo numero potesse essere automatizzato ogni qual volta vado nella pagina inserisci posta. i campi che utilizzo sono: nrcontrollo (numerico, indicizzato si e duplicati ammessi), dataentrata (data dd/mm/aaaa per la quale ho gia una funzione che mi restituisce la data odierna) ed altri campi relativi alla posta in entrata....

a questo punto mi servirebbe il codice (ed il punto dove inserirlo) che mi genera il numero progressivo e cioè: se la data dell'ultimo nrcontrollo è uguale all'anno in corso allora nrcontrollo + 1, se la dataentrata dell'ultimo nrcontrollo è dell'anno prima allora nrcontrollo=1.

la dataentrata (data di registrazione della posta) è già automatica nella pagina inserisci posta con questo script:

<script>

function den(){

var now = new Date();

var giorno = now.getDate();

var mese = now.getMonth() + 1;

var anno = now.getFullYear();

if(giorno<10) giorno = "0"+giorno; //aggiunge lo 0 ai giorni che possono essere scritti con un solo numero

if(mese<10) mese = "0"+mese; //aggiunge lo 0 ai mesi che possono essere scritti con un solo numero

document.form1.dataentrata.value=giorno + "/" + mese + "/" + anno + " ";

}

onload=den

</script>

mi chiedo se sia compatibile questo codice con quello per la numerazione progressiva o se sia integrabile.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Benvenuto/a!
:) Ciao e Benvenuto/a nel forum, ginfranco.79.

Perché non personalizzi la tua presenza in WinInizio aggiungendo una firma e un'immagine al tuo profilo personale ? se non sai come fare, clicca qui.

Se sei una ragazza e vuoi essere aggiunta al gruppo delle WinGirls non dovrai fare altro che presentarti in questo thread o contattare un membro dello staff; se invece hai meno di 18 anni potresti far parte degli Juniores, per farlo presentati qui o contatta un membro dello staff.

Il gruppo WinGirls e Juniores offrono alcuni vantaggi speciali, scoprili nell'apposito thread di presentazione!

Ricordati, infine, che un titolo appropriato per dare visibilità alle tue nuove discussioni è essenziale: chiamare una discussione "Aiuto" o "Consiglio" non permette di capire subito la tua richiesta e rende più difficili le ricerche per gli altri utenti.

Link utili:

- Regolamento
- Netiquette
- Glossario
- Thread di Benvenuto
- Guida all'uso di WinInizio

Con che programma gestisci la posta elettronica?

La posta passa tramite il sito in ASP?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Benvenuto/a!
:) Ciao e Benvenuto/a nel forum, ginfranco.79.

Perché non personalizzi la tua presenza in WinInizio aggiungendo una firma e un'immagine al tuo profilo personale ? se non sai come fare, clicca qui.

Se sei una ragazza e vuoi essere aggiunta al gruppo delle WinGirls non dovrai fare altro che presentarti in questo thread o contattare un membro dello staff; se invece hai meno di 18 anni potresti far parte degli Juniores, per farlo presentati qui o contatta un membro dello staff.

Il gruppo WinGirls e Juniores offrono alcuni vantaggi speciali, scoprili nell'apposito thread di presentazione!

Ricordati, infine, che un titolo appropriato per dare visibilità alle tue nuove discussioni è essenziale: chiamare una discussione "Aiuto" o "Consiglio" non permette di capire subito la tua richiesta e rende più difficili le ricerche per gli altri utenti.

Link utili:

- Regolamento
- Netiquette
- Glossario
- Thread di Benvenuto
- Guida all'uso di WinInizio

Con che programma gestisci la posta elettronica?

La posta passa tramite il sito in ASP?

nulla di cio. la posta che protocollo mi arriva in cartaceo. con il web che ho creato praticamente la registro, visualizzo l'elenco di cio che ho ricevuto, l'assegno ad un utente e stampo un registro di riscontro.(molto semplice).

l'unica cosa che vorrei fare è quella di protocollare (il nuovo recor inserito), cioè assegnargli un numero progressivo che ad ogni inizio anno riparta dal nr 1. come detto prima nella tabella access ho fra i vari campi nei quali raccolgo le info sull'atto, ho anche un campo formato data in cui metto la data di arrivo ed un campo numerico indicizzato e dupplicati ammessi in cui dovrebbe stare il protocollo (che attualmente inserisco manualmente mediante il form di inserimento record). la data entrata dell'atto invece è automatica mediante uno script che mi legge la data di sistema e la scrive nel textarea.

la funzione dovrebbe essere del tipo:

se la data entrata dell'ultimo record inserito (ovviamente ordinato per data) è uguale all'anno corrente (che lo leggerà dalla data di sistema), allora il numero di protocollo=numero di protocollo+1;

se non si verifica allora numero di protocollo =1

(purtroppo attualmente l'unica cosa che ho fatto, invece di filtrare i record, nella pagina inserisci record ho un recordset con la select max nrcontrollo as lastinside per ricavarmi l'ultimo numero inserito e lo visualizzo nella medesima pagina cosi da incrementarlo manualmente nel campo di testo)

help help

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non ti basta sfruttare direttamente l'id che assegni ad ogni record? e che viene incrementato in automatico dal DBMS quale Access?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Non ti basta sfruttare direttamente l'id che assegni ad ogni record? e che viene incrementato in automatico dal DBMS quale Access?

1 non è un buon sistema perchè se elimino un record quel numero non lo recupero piu (senza agire direttamente sulla tab access..

2 on è versatile ovvero con il variare degli anni questi rimane sempre progressivo e non riparte (cme voglio io) da 1!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se usi un programma ASP puoi crearti di volta in volta un campo che ti serve come identificativo del valore che vai ad inserire nel database.

potresti usare un campo semplificato che non tiene conto dei vari doppioni per giornata.

Potresti usare ad esempio un contatore progressivo generale (che non fa differenza tra i giorni, quindi il giorno 18/01 puoi registrare solo il codice 003, mentre il giorno 19/01 puoi registrare i valori da 004 a 010)

potresti prendere spunto da questo codice:

<%
Response.Expires = 0
Set fs = CreateObject("Scripting.FileSystemObject")
Path = server.mappath("codice.txt")
Set a = fs.OpenTextFile(path)
codice = a.ReadLine
'Controllo gli aggiornamenti di pagina
If Session("codice") = "" then
 Session("codice") = codice
 'Incremento di 1 il valore presente nel file di testo
 codice = codice + 1
 a.close
 'Scrivo sul file di testo il nuovo valore
 Set a = fs.CreateTextFile(path, True)
 a.WriteLine(codice)
End If
a.Close
%>

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Se usi un programma ASP puoi crearti di volta in volta un campo che ti serve come identificativo del valore che vai ad inserire nel database.

potresti usare un campo semplificato che non tiene conto dei vari doppioni per giornata.

Potresti usare ad esempio un contatore progressivo generale (che non fa differenza tra i giorni, quindi il giorno 18/01 puoi registrare solo il codice 003, mentre il giorno 19/01 puoi registrare i valori da 004 a 010)

potresti prendere spunto da questo codice:

<%
Response.Expires = 0
Set fs = CreateObject("Scripting.FileSystemObject")
Path = server.mappath("codice.txt")
Set a = fs.OpenTextFile(path)
codice = a.ReadLine
'Controllo gli aggiornamenti di pagina
If Session("codice") = "" then
 Session("codice") = codice
 'Incremento di 1 il valore presente nel file di testo
 codice = codice + 1
 a.close
 'Scrivo sul file di testo il nuovo valore
 Set a = fs.CreateTextFile(path, True)
 a.WriteLine(codice)
End If
a.Close
%>

ma in questo modo avrò un file .txt in piu ma non un incremento nel mio database...mi spiego: ho un database chiamato Posta.mdb. in questo vi è in particolare la tabella regposta composta dai campi nrcontrollo (che sarebbe il campo dedicato al protocollo, è numerico, è indicizzato con duplicati ammessi), un campo dataentrata (formato data in cui inserisco la data di registrazione della posta tramite uno script che mi da la data odierna)....ed altri campi liberi che mi servono per la registrazione degli atti...quello che io vorrei fare è automatizzare sto benedetto campo nrcontrollo che durante l'anno mi incrementi il numero di una unità ogni volta che inserisco un nuovo record ed al variare dell'anno riparta da 1. il tuo script è al dirpoco ottimo ma è un progressivo normale che potrei sostituire cambiando le proprietà del campo nrcontrollo...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Perdonami.. ma non riesco a capire....

l'idea del file esterno era per poter avere un ausilio che ti indicasse sempre qual era l'ultimo dato utilizzato. In tal modo ad inizio anno, andavi a modificare il codice di start, modificando direttamente quel file txt o xml, che sia e il contatore produrrà una numerazione progressiva n+1 a partire da quel codice

l'alternativa è utilizzare un campo dedicato del database. Non mi è chiara la struttura del codice, però potresti usare un codice molto semplice composto (e lo si può comporre direttamente tramite ASP) nel seguente modo:

(anno)(mese)(giorno)(idprogressivo a 4 cifre)

Impostata la struttura del codice puoi memorizzarti nel database una colonna con l'id progressivo (cosi ti è piu facile ogni volta sapere qual è il successivo) e in un altra colonna il codice completo.

Potresti anche andare a crearti un codice che sia unico, non tenga conto delle date, e abbia una parte fissa (ex. 2009001 - 2009002 -...) che puoi andare a memorizzare nel database e la volta successiva lo fai incrementare di un valore XXX.

Inoltre potresti impostare che il programma, in fase di inserimento dati ti faccia vedere la sua proposta di codice, e ti dia la possibilità di memorizzarlo cosi com è, o modificarlo (ex ad anno nuovo).

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Inviato (modificato)

Perdonami.. ma non riesco a capire....

l'idea del file esterno era per poter avere un ausilio che ti indicasse sempre qual era l'ultimo dato utilizzato. In tal modo ad inizio anno, andavi a modificare il codice di start, modificando direttamente quel file txt o xml, che sia e il contatore produrrà una numerazione progressiva n+1 a partire da quel codice

l'alternativa è utilizzare un campo dedicato del database. Non mi è chiara la struttura del codice, però potresti usare un codice molto semplice composto (e lo si può comporre direttamente tramite ASP) nel seguente modo:

(anno)(mese)(giorno)(idprogressivo a 4 cifre)

Impostata la struttura del codice puoi memorizzarti nel database una colonna con l'id progressivo (cosi ti è piu facile ogni volta sapere qual è il successivo) e in un altra colonna il codice completo.

Potresti anche andare a crearti un codice che sia unico, non tenga conto delle date, e abbia una parte fissa (ex. 2009001 - 2009002 -...) che puoi andare a memorizzare nel database e la volta successiva lo fai incrementare di un valore XXX.

Inoltre potresti impostare che il programma, in fase di inserimento dati ti faccia vedere la sua proposta di codice, e ti dia la possibilità di memorizzarlo cosi com è, o modificarlo (ex ad anno nuovo).

:)

ma scusa, xke complicarsi la vita. nel mio database ho un campo numerico ed un campo data (gg/mm/aaaa). non basterebbe un codice che, quando accedo nella pagina inserimento record, mi legga la data dell'ultimo mumero inserito e:

- se la data dell'ultimo record inserito corrisponde all'anno in corso, allora nel modulo inserimento record, nel campo numerico, mi dia l'ultimo numero inserito già incrementato di 1;

- se la data dell'ultimo record inserito corrisponde all'anno passato, allora nel modulo inserimento record, nel campo numerico, mi dia il numero 1.

credo che sia la cosa piu semplice.....magari del tipo....

var olddataentrata = (lettura dell'ultima data inserita ovvero la legge dall'ultimo record inserito)
var oldnrcontrollo= (lettura dell'ultimo nrcontrollo inserito corrispondente allo stesso record della olddataentrata)
var oggi = (legge la data di sistema)
If ("olddataentrata") = oggi
 oldnrcontrollo = oldnrcontrollo + 1
else oldnrcontrollo = 1
document.form1.nrcontrollo.value= (mi scrive il nuvo numero di controllo incrementato di 1 o = a 1)
onload=den
End If

veramente non so da dove iniziare!!!!

Modificato da ginfranco.79

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora