Newsgroup: it.comp.appl.access
Titolo: Un quesito difficile

Ciao a tutti!
Ho scoperto da poco questo news trovandolo fantastico.
Colgo immediatamente l'occasione per esporvi un mio problema.
Nel mio database ho due tabelle- Tabella Listino, Tabella Carico - composte
rispettivamente da questi campi:
Tabella Listino
IdArticolo, contatore
Articolo,testo
Descrizione, testo
PrezzoAcquisto, numerico
ecc
Tabella Carico
IdCarico
Articolo collegato alla Tabella listio
Prezzo Acq, numerico
ecc.
La tabella carico riporta in ordine cronologico le entrate dei vari articoli
nel magazzino, con la possibilita che, nel corso del tempo, lo stesso
articolo possa essere caricato piu volte man mano che viene acquistato.
Per evitare di scrivere due volte il prezzo di acquisto, nella tabella
Listino e nella Tabella Carico, ho collegato il prezzo di Listino con quello
del Carico.
Mi spiego meglio nella Tabella listino al campo Prezzo di acquisto ho fatto
una ricerca guidata collegando i record con quelli del campo Prezzo di
Acquisto della tabella Carico.
Succede pero che quando carico un articolo che avevo gia inserito prima,
perché ho finito la scorta e devo ordinarlo di nuovo, nella tabella listino
viene aggiunto un altro record pari a  quello che ho inserito nel carico.
Come posso risolvere questo problema, ossia evitare che nella tabella
listino si aggiungano i record della tabella carico, facendo anche  in modo
che il prezzo di acquisto del listino sia l'ultimo che ho inserito nella
tabella carico?
Quesito di difficile soluzione!!
Vi ringrazio anticipatamente dell'aiuto che vorrete darmi

 ha scritto nel messaggio
news:n8wH8.2810$8x3....@twister1.libero.it...

A fronte dell'evento "Dopo inserimento" della maschera con cui inserisci i
record nella tabella Carico, apri un recordset sulla tabella Listino,
ricerca in quel recorset il record che ha lo stesso IdArticolo del nuovo
record carico appena inserito; fai un edit del recordset sostituendo il
prezzo di acquisto del record listino trovato con il prezzo di acquisto del
record carico appena inserito; fai un update del recordset e chiudilo.
Questo è un modo per fare ciò che hai chiesto, un altro modo potrebbe essere
quello di eseguire una query di aggiornamento.
Però a mio avviso tutto è logicamente sbagliato in quanto stai registrando
nella tabella Listino un campo calcolato: PrezzoAcquisto; se lo farai avrai
un sacco di mal di pancia. Oltre ad aggiornare il campo PrezzoAcquisto
quando inserisci un nuovo record nella tabella Carico, dovrai farlo anche
nel caso di cancellazione o la variazione di un un record.
Quello che ti suggerisco è di eliminare dalla tabella Listino il campo
PrezzoAcquisto; ogni volta che vorrai conoscere l'ultimo prezzo di acquisto
di un determinato prodotto, riuscirai ad ottenerlo semplicemente con una
funzione DLookup (vedi help) che abbia come dominio la tabella Carico e come
criteri chiederai l'uguaglianza su IdArticolo e maggiore data di carico
(DMax, vedi help).
Questo ti metterà al riparo da tutti i mal di pancia e ti permetterà anche
di risalire al prezzo di acquisto valido ad una determinata data.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------