Newsgroup: it.comp.appl.access
Titolo: Progressivo... e periamo bene!

Chiedo scusa, ma proprio non riesco ad arrivarci!
Potreste farmi un esempio di progressivo da salvare in un nuovo record
prelevandolo da una tabella PROGRESSIVI e mettendoci accanto anche l'anno?
vorrei usare una tebella "progressivi" per inserire un nuovo record nella
tabella Interventi usando anche l'anno:
0001/2002 o 02
0002/2002
0003/2002
....
0001/2003
0002/2003
ecc
potreste farmi un esempio di codice per piacere?
ho cercato 
sitocomune.com
 ma mi sembrano troppo complicati...
Grazie!

 ha scritto nel messaggio
news:lCrCa.52409$lK4.1...@twister1.libero.it...

Manca una esse nell'oggetto ma si capisce ugualmente... :)
scusate!

 0002/2002
Personalmente, dato che di sicuro avrai un campo con 'data intervento', non
aggiungerei l'anno al progressivo, infatti diverrebbe una ripetizione (che è
una cosa contraria ai principi di creazione di un database) e sprecheresti
byte (anche se oggi non è più una cosa importante).
In ogni caso per far funzionare bene gli ordinamenti crescenti o
decrescenti, occorre anteporre l'anno al progressivo, in questo modo:
20020001
20020002
20030001
20030002
Solamente in visualizzazione, puoi invertire l'ordine visualizzando
0001/2002.
La funzione che ti permette di incrementare il progressivo è:
Dim Prog As Long
Prog = Nz(DMax("[Progressivo]", "NomeTabella")) + 1
Ora, o ogni volta dividi il campo in parte sinistra con l'anno e parte
destra con il progressivo da incrementare, o più semplicemente, crei due
campi, uno integer con l'anno e l'altro integer o long con il progressivo.
Poi li metti insieme nella chiave primaria e li gestisci sempre
separatamente.
Spero di essere stato chiaro.
Ciao.

 ha scritto nel messaggio
news:8LtCa.41525$g92.9...@news2.tin.it...

Scusami ancora..
quindi la procedura potrebbe essere (correggimi se sbaglio)
Apro la maschera inserimento dati
salvo i dati
nell'evento Prima di aggiornare inserisco un msgbox che mi chiede se voglio
salvare i dati ed eseguo la tua funzione per inserire il risultato nel campo
prog..
mmm No! mi sa che non mi è molto chiaro
come gestisco i 2 campi separati?

 ha scritto nel messaggio
news:G9uCa.52485$Ny5.1...@twister2.libero.it...

Direi che puoi fare come hai detto, io di solito, se non si è in
multiutenza, o se non è di vitale importanza che il progressivo abbia una
reale corrispondenza con l'istante di creazione di un documento (vedi
scontrini o altri documenti fiscali), il progressivo lo prelevo durante
l'evento
'Prima di inserire', lasciando la possibilità di modificarlo (controllando
che già non esista).
Poi nel momento della memorizzazione se comunque qualcuno avesse già ripreso
lo stesso progressivo, il motore di Access restituisce l'errore di chiave
duplicata e si può nuovamente variare il progressivo o proporlo da codice.
Per quanto riguarda i campi:
Nella struttura della tua tabella crei un campo PROG_ANNO ed un campo
PROG_NUM, poi li selezioni entrambi e fai click col mouse sul simbolo della
chiave sulla barra delle icone.
In questo modo hai creato una chiave primaria formata da 2 campi.
Se vuoi mettere la funzione nell'evento 'prima di aggiornare' metti le
istruzioni:
Me!PROG_ANNO = Year(Date()) ' restituisce l'anno della data odierna
Me!PROG_NUM = Nz(DMax("[PROG_NUM]", "NomeTabella", "[PROG_ANNO]=" &
Year(Date))) + 1 'Legge il N° progr. all'interno dell'anno in corso
Adesso non l'ho provato ma dovrebbe andare...
Ciao.

 ha scritto nel messaggio
news:EgvCa.43017$g92.9...@news2.tin.it...

Grazie Francesco, sei stato gentilissimo oltre che molto utile! non ho
provato il funzionamento ma adesso ho le idee più chiare
Grazie
Ciao

 wrote in message
lCrCa.52409$lK4.1...@twister1.libero.it...

Vai sul Sito Comune (link qui sotto) e nella Sezione General leggi la FAQ di
Davide La Mantia (Sib) intitolata "Numerazione crescente per fatture ed
altro". Penso faccia al caso tuo.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:lCrCa.52409$lK4.1...@twister1.libero.it...

Scusate se insisto...
ma non c'è un modo per prendere il progressivo e l'anno da una tabella
diversa?
i procedimenti visti finore potrebbero andare bene e vi ringrazio ma sorge
un problema:
inserisco 10 record
cancello gli ultimi 3 (8,9,10)
il succ progressivo mi viene fuori come 8, sbaglio?
io invece vorrei fosse 11
credo che la soluzione migliore sia quella di avere una tebella separata in
cui registro l'anno e il progressivo e dalla quale vado a prendere di volta
in volta questi dati.
Ho notato che molti programmi di contabilità usano questo metodo ed io
vorrei capire come si procede ( a parte il mio programmino che ho intenzione
di fare...)
praticamente inserisco un record e nel momento di salavarlo vado a prendere
l'anno corrente ed il progressivo + 1 dalla tabella SISTEMA e lo metto nel
campo progressivo del record corrente; poi logicamente devo aggiornare il
progressivo della tabella sistema...
ma mannaggia la miseria perchè è così complicato?
20 anni fa programmavo in clipper ed era una fesseria fare una procedura del
genere!
1) creavo delle variabili in memoria per inserire i dati (
2) finestra di dialogo : Confermi i dati?
3) se "SI"...
Apri tabella Sistema
progressivo++
progressivo_in_memoria = Sistema.progresssivo
chiudi tabella sistema
apri tabella Interventi
Goto.newrec (per aggiungere un nuovo record vuoto...)
(il puntatore adesso è sul nuovo record..)
replace Interventi.progressivo with progressivo_ in_memoria
replace Interventi.data with data_in_memoria
ecc ecc
Vabbè non ricordo più le istruzioni e i comandi ma il senso credo sia chiaro
come caspita si fa on Access?
cosa devo impare? cosa devo capire? si tratta di recordeset ecc eccc?
dove posso guardare per trovare qualche esempio o informazioni su quanto
detto ?
Dai  per favore un ultimo sforzo :)
Vi ringrazio cmq
Ciao

 ha scritto nel messaggio
news:lCrCa.52409$lK4.1...@twister1.libero.it...

Ahh dimenticavo!!!
.. c'è un altro problema che non ho mai capito come si risolve in access!
come si fa a inserire un nuovo record in una tabella solo quando l'utente ha
confermato i dati?
possibile che appena si digita un carattere in un campo della maschera il
record risulta già inserito nella tabella?
In questi casi qual'è il metodo più usato per inserire un record solo quando
l'utente conferma l'inserimento?
Si tratta si creare delle tabelle temporanee?
Non credo che i programmi di contabilità in Access inseriscano un record
appena l'utente digita un carattere in qualsiasi campo...
sicuramente si appoggiano a tabelle temporanee, ma qual'è il procedimento?
Vabbè va, adesso forse sto esagerando con tutte queste domande
:) scusatemi!
Ciaoo


Ciao.
--
Sergio MAZZA

 sicuramente si appoggiano a tabelle temporanee, ma qual'è il procedimento?
Innanzitutto è bene che se ti nasce un nuovo problema tu apra un altro
thread, altrimenti diventa un guazzabuglio nel quale forse tu ti ci ritrovi,
ma certamente non è utile a chi ha problemi simili ai tuoi: o forse degli
altri non te ne importa niente?
Ci sono diverse tecniche per risolvere il tuo problema.
La più semplice è quella di pigiare il tasto Esc.
Poi c'è quella di cui tu accennavi basata su tabelle temporanea.
C'è poi quella di usare le transazioni; se vuoi saperne di più di questa
tecnica vai sul Sito Comune (link qui sotto) e nella Sezione General leggi
la FAQ di Sib intitolata "Cosa sono e come funzionano le transazioni?".
Poi c'è quella di usare maschere non associate e quindi registrare il recodo
pigiando un pulsante di comando usando query di accodamento e di
aggiornamento (o se preferisci aprendo un recordset sulla tabella da
aggiornare).
Oppure vai sul Sito Comune e nella Sezione Forms dai una letta alla FAQ di
Federico Luciani intitolata "Confermare il salvataggio dei dati".
E visto che stai nella Sezione Forms del Sito Comune dai una occhiata anche
alla FAQ di Alessandro Baraldi intitolata "Semplice esempio della Gestione
Automatizzata dei Records in una Form".
Infine, sempre nella Sezione Forms del Sito Comune leggi la FAQ di Luca
Dall'Olio intitolata "Annullare le modifiche apportate ai dati in una form
con subform".
Come vedi hai solo l'imbarazzo della scelta. ;-)
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


 ha scritto nel messaggio
news:b9LCa.54698$Ny5.1...@twister2.libero.it...

Anche in Access non è per niente difficile: per leggere il campo di una
tabella non associata puoi usare una funzione DLookup oppure DMax (vedi
help).
Per aggiornare il valore di un campo di una tabella non associata basta
usare una query di aggiornamento o aprire un recordset su quella tabella.
Non vedo dove sia il problema: basta studiare un po' Access e vedrai che ci
riuscirai a fare molte più cose che facevi con clipper: certo che se vuoi
usare Access senza studiarlo e basandoti solo sulle reminescenze di 20 anni
fa di clipper è veramente dura! ;-)
