Newsgroup: it.comp.appl.access
Titolo: Utilizzo Rollback - commit

Salve a tutto il NG
Ho un problema che forse si può risolvere con il rollback, ma non sò se
ACCESS lo permette.
Mi Spiego:
Ho una Maschera di fatturazione con sottomaschera (Dettaglio fatture) dove
metto tutti i dettagli della fattura(articolo Descrizione,Giacenza ECC.).
Nel codice, dopo aver salvato una fattura, faccio un ciclo che aggiorna le
giacenze in magazzino dei prodotti inseriti nella fattura stessa, lanciando
un Update ad ogni "giro" del ciclo.
Il problema è che se ad un certo punto per qualsivoglia motivo la maschera
va in errore, l'Error GoTo mi blocca il codice, ed io mi ritrovo con le
giacenze aggiornate (fino a quando è andato il ciclo), mentre altre no.
La soluzione che ho pensato potrebbe essere un rollback, solo che non sò
come fare e se si può fare.
Comunque se qualcuno  mi sa indicare una soluzione, anche diversa, che mi
permetta di riportare le tabelle allo stato originario(apertura maschera di
fatturazione) gliene sarei molto grato
Antonio


Non ti conviene registrare le giacenze: ti conviene calcolartele di volta in
volta per differenza.
Così non lanci nessun ciclo e stai a posto.
Se invece vuoi continuare così salvati in una variabile a che punto sei
arrivato e poi analizzi il tutto.
ciao MAssimiliano
 
--------------------------------
Inviato via 
http://usenet.libero.it


Grazie innanzitutto per la veloce risposta
Ma purtroppo non ho capito il primo punto(sono poco piů di un principiante),
in quanto il programma deve gestire un deposito dove la merce entra ed esce
tutti i giorni ,come faccio a calcolarla di volta in volta quando carico la
merce , quando emetto un ddt o quando fatturo??? ( se il tuo č il metodo piů
giusto sono pronto ad ascoltarti)
Per il secondo punto non sň in che modo poter salvare nella variabile,
illuminami se vuoi ti sarň riconoscente a vita
Antonio


 ha scritto nel messaggio
news:mwjIa.112855$pR3.2...@news1.tin.it...

Il problema sta nel fatto che vuoi contravvenire ad una delle regole
fondamentali in un database relazionale, quella che stabilisce che un campo
calcolato non va MAI registrato nel campo di una tabella, pena
fastidiosissimi mal di pancia di cui tu stai avvertendo i sintomi.
I campi calcolati sono pri di una query; oppure usa controlli calcolati di
una maschera o di un report.
Calcolati "on the fly" la giacenza quando ti serve, con una query o con
l'ausilio delle funzioni di aggregazione sui domini ed elimina dalla tua
tabella articoli il campo giacenza. Se farai come ti suggerisco,
automaticamente verranno risolti i tuoi problemi.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Antonio
Tabella Articolo Id_articolo, descrizione, prezzo
Tabella Acquisti Id_acq, ricerca_id_acquisto, qta_acq
Tabella ddt id_vendita_ddt, ric_ddt_id_acquisto, qta_ddt
etc
Giacenza articolo.id_articolo, Giacenza:Acquisti.qta_acq - nz(ddt.qta_ddt)
Fatto
2°
On error goto Max
.... tutto il tuo ciclo
Max_exit
Max:
dim Mifermoqui as integer
mifermoqui = id_vendita
'In sostanza registri nella variabile mifermoqui l'id in cui ti sei fermato
Msgbox "Sto coso s'è incagliato qui", vbbestemmia, "Porc!!!"
resume max_exit
Continuo a caldeggiare la prima soluzione
ciao MAssimiliano



Provo intanto con il secondo, in quanto mi sembra non molto efficace , nel
mio caso il primo, e mi spieo(secondo il mio modestissimo punto di vista)
Io ho una tabella magazzino con  quasi mille prodotti, una Tabella
ddt_Vendite, Una tabella Fatture_Vendita( Fatture - ddt), Una Tabella ddt
Acquisti, Una Tabella Fatture_Acquisti ( anche questa per le Fatture_ddt),
poi io acquisto lo stesso prodotto diverse volte al mese,e lo vendo diverse
volte al giorno.
Quindi dopo qualche mese avrň un'infinita di operazioni in entrata e uscita
per lo stesso prodotto.
in piů a volte faccio cambi, resi , perdite Ecc.
Forse č progettato male tutto il programma oppure non ho interpretato bene
il tuo pensiero ????
Antonio


 > Tabella Articolo Id_articolo, descrizione, prezzo

Guarda non credo proprio. Questa gestone č bazzecola spiecie se in locale.
MAssimiliano



Scusami MA,
a cosa servono
ricerca_id_acquisto della tabella Acquisti
e
ric_ddt_id_acquisto della tabella DDT ?
potresti spiegarmene l'utilizzo?
grazie!

 grazie!
Dunque tu devi porre in relazione uno a molti le due tabelle. In sostanza
devi dire: guarda di quest'articolo che è unico per una serie di
caratteristiche io voglio vedere i passaggi che fa. Immagina Un maglione,
viene acquistato, venduto, acquistato di nuovo e venduto di nuovo: tu avrai
un solo articolo e due movimenti nella tabella acquisti e due in quella
vendita. Ti crei la relazione uno a molti e applichi l'integrità
referenziale con aggiornamenti (e se vuoi elimanzioni) a catena. Con il
controllo ricerca_id_articolo (l'ho scritto per esteso per fartelo
comprendere) posto nella maschera e trasformato in una casellacombinata tu
gli dici che l'ordine controllo (non dati) è proprio Id_articolo e così
leghi i movimenti all'articolo corrispondente.
Spero di essere stato chiaro a dispetto della fretta.
In ogni caso, fammi sapere se hai problemi.



tu avevi fretta...
io sono molto ignorante in materia...
Insomma ho capito ben poco! :)
Vedi se è il caso di rispiegare come si gestisce la giacenza di un magazzino
in modo ancora più semplice ... sempre che sia possibile
Ciao e grazie!

Magri perchè mi sà che anche io mi stò pedendo
Antonio

 > > ciao MAssimiliano
fatto questo, ti crei la tue belle query. Ti consiglio di farlo in diversi
passaggi. Il primo, ti prendi la tabella Acquisti, la raggruppi con la
funzione simboleggiata dal sigma nella struttura query e gli dici di operare
la somma per il campo qtà. Stesso discorso per la vendita. Creatoti queste
due query ne crei una terza in cui ci metti la tabella Articoli, la query
Tot_acq e quella Tot_ven. Ti crei una relazione tra Articoli e Tot_acq e
Articoli e Tot_ven: andando nelle specifiche gli chiedi di darti tutti i
record della tabella Articoli e solo quelli esistenti nella query ToT_acq.
Stesso discorso per Tot_ven. In pratica avrai l'articolo 1-2-3-4-5-6-etc
cioè tutti e magari solo la qtà 10 dell'articolo 2 come acquisto e magari 1
della tabella vendita.
A questo punto abbiamo finito: ci basterà crearci un altro campo Giacenza
che sara formato da (Tot_acq.sommadiqtà)-nz(Tot_ven.sommadiqtà).
E il gioco è fatto.
FAmm sapere se è + chiaro, altrimenti specifica meglio il passaggio nebuloso
e se completamente nebuloso affrontimao un passo alla volta.
Ciao MAssimiliano
