Newsgroup: it.comp.appl.access
Titolo: Aggiornare dati identici in query diverse

Ciao a tutti.Avrei questa esigenza alla chiusura del form "Form1"
vorrei che i record identici tra le query "Query 1"
e "query2" si aggiornassero.Cerchero' di essere piu' chiaro.Se in
"query1" ho il record con ID = 10 e costo = € 20,00  in "query2" lo
stesso campo deve avere lo stesso valore.
Di seguito vi posto la stringa sql delle due query.La prima stringa
riguarda la query i cui dati dovrann oaggiornare la seconda query.
Stringa prima query:
SELECT Qr_totali_livelli1.SommaDiPeso_tot,
Qr_totali_livelli1.Arrotondamento_tot,
Qr_totali_livelli1.Arrotondamento,
Qr_totali_livelli1.Tipologia_listino, Qr_totali_livelli1.Artdistinta,
Qr_totali_livelli1.IDDistinta, Qr_totali_livelli1.Descrizione,
Qr_totali_livelli1.[Totale di Costo],
Sum(Qr_totali_livelli1.Totale_def) AS SommaDiTotale_def, Nz([Totale di
Costo])+Nz([SommaDiTotale_def]) AS Costo, Qr_totali_livelli1.[Margine
1in %], Qr_totali_livelli1.[Margine 2 In %]
FROM Qr_totali_livelli1
GROUP BY Qr_totali_livelli1.SommaDiPeso_tot,
Qr_totali_livelli1.Arrotondamento_tot,
Qr_totali_livelli1.Arrotondamento,
Qr_totali_livelli1.Tipologia_listino, Qr_totali_livelli1.Artdistinta,
Qr_totali_livelli1.IDDistinta, Qr_totali_livelli1.Descrizione,
Qr_totali_livelli1.[Totale di Costo], Qr_totali_livelli1.[Margine 1in
%], Qr_totali_livelli1.[Margine 2 In %]
ORDER BY Qr_totali_livelli1.IDDistinta;
Stringa sql seconda query (cioe' la query da aggiornare)
SELECT Sottolivelli.IDsottolivello, Sottolivelli.Codice,
Sottolivelli.Descrizione, Sottolivelli.Qta, Sottolivelli.IDistinta,
Sottolivelli.Totale, Nz([Totale])*Nz([Qta]) AS Totale_def,
Sottolivelli.Peso, Nz([Peso])*Nz([Qta]) AS Peso_def
FROM Sottolivelli;
In sostanza i campi che si aggiornano in continuazione sono il campo
"Peso" e il campo "Totale".
Ricordo che questo aggiornamento deve eseguirsi ogni volta che vado a
chiudere il form "form1"
Grazie in anticipo
Dino

 ha scritto nel messaggio 
news:accee853-d3fa-416c...@s5g2000yqm.googlegroups.com...
Ciao a tutti.Avrei questa esigenza alla chiusura del form "Form1"
vorrei che i record identici tra le query "Query 1"
e "query2" si aggiornassero.Cerchero' di essere piu' chiaro.Se in
"query1" ho il record con ID = 10 e costo = € 20,00  in "query2" lo
stesso campo deve avere lo stesso valore.
Perchè devi passare per forza dalle query?
Antonio 

 Antonio
Dammi un'altra soluzione!!!!Nell'immediato(si fa per dire non mi
viene).
In realta' quelle due query sono gestite da due form entrambe
tabulari.Mi piacerebbe mettere a confronto i record identici e poter
aggiornare i dati del form basato su query2.
Grazie in anticipo
Dino

 ha scritto nel messaggio 
news:550d3efc-45ec-44e8...@k22g2000yqh.googlegroups.com...


tu devi spiegare la struttura dati e il tuo problema, non fornire già una 
soluzione che non va e che vuoi che sia corretta

 ha scritto nel messaggionews:550d3efc-45ec-44e8...@k22g2000yqh.googlegroups.com...

Saggia risposta.....Vediamo se riesco ad essere preciso e sopratt.
sintetico.La query che deve essee aggiornata in realta' e una query
dove io vado ha copiare dei dati.
Questi dati vengono copiati da un'altra query,la quale e' in costante
aggiornamento.Di seguito ti riporto il passaggio con il quale effetuo
la copia.:
Forms!Gestione_distinta!Fr_sottolivelli!Codice = Me.Cod_livello
Forms!Gestione_distinta!Fr_sottolivelli!Descrizione = Me.Descrizione
Forms!Gestione_distinta!Fr_sottolivelli!Totale = Me.Costo
Forms!Gestione_distinta!Fr_sottolivelli!Peso = Me.SommaDiPeso_tot
Ovviamente i dati nel subform Fr_sottolivelli sono in costante
aggiornamento,mentre i dati  che vengono copiati
rimangono(giustamente) tali e quali.
Cioe' tanto per entrare nel dettaglio io creo il prodotto "prodotto1"
che e' costiuito da diversi articoli.Questo "prodotto1" a sua volta
puo' essere un articolo di un altro prodotto.
Supponiamo che debba creare il prodotto "prodotto2" costituito da
alcuni articoli tra cui il "prodotto1".Io quindi creo il prodotto e
dalla form Fr_sottolivelli copio i dati del sottoprodotto
"prodotto1".E fino qua tutto Ok.Supponiamo pero' che il "prodotto1"
nei giorni seguenti subisca delle variazioni di prezzo;io queste
variazioni me le trovo nella query origine dati del subform
Fr_sottolivelli ma non nell'altra query (giustamente) dove ho
effettuato la copia.Ecco io vorei poter aggiornare questa query (scusa
se insisto).
Di seguito ti riporto i dati sql della query che si aggiorna in
automatico e quelli della query che vorrei si aggiornasse dopo
eventuali modifiche.
QUERY CHE SI AGGIORNA IN AUTOMATICO:
SELECT Qr_totali_livelli1.SommaDiPeso_tot,
Qr_totali_livelli1.Arrotondamento_tot,
Qr_totali_livelli1.Arrotondamento,
Qr_totali_livelli1.Tipologia_listino, Qr_totali_livelli1.Artdistinta,
Qr_totali_livelli1.IDDistinta, Qr_totali_livelli1.Descrizione,
Qr_totali_livelli1.[Totale di Costo],
Sum(Qr_totali_livelli1.Totale_def) AS SommaDiTotale_def, Nz([Totale di
Costo])+Nz([SommaDiTotale_def]) AS Costo, Qr_totali_livelli1.[Margine
1in %], Qr_totali_livelli1.[Margine 2 In %]
FROM Qr_totali_livelli1
GROUP BY Qr_totali_livelli1.SommaDiPeso_tot,
Qr_totali_livelli1.Arrotondamento_tot,
Qr_totali_livelli1.Arrotondamento,
Qr_totali_livelli1.Tipologia_listino, Qr_totali_livelli1.Artdistinta,
Qr_totali_livelli1.IDDistinta, Qr_totali_livelli1.Descrizione,
Qr_totali_livelli1.[Totale di Costo], Qr_totali_livelli1.[Margine 1in
%], Qr_totali_livelli1.[Margine 2 In %]
ORDER BY Qr_totali_livelli1.IDDistinta;
QUERY CHE VORREI SI AGGIORNASSE IN AUTOMATICO:
SELECT Sottolivelli.IDsottolivello, Sottolivelli.Codice,
Sottolivelli.Descrizione, Sottolivelli.Qta, Sottolivelli.IDistinta,
Sottolivelli.Totale, Nz([Totale])*Nz([Qta]) AS Totale_def,
Sottolivelli.Peso, Nz([Peso])*Nz([Qta]) AS Peso_def
FROM Sottolivelli;
Non so se sono stato chiaro .... e' difficile.Ad ogni modo vedro' ti
spiegartelo in un altro modo.
Grazie per la pazienza
Dino

 ha scritto nel messaggio 
news:33f80108-f089-4d94...@v28g2000prn.googlegroups.com...


Ti blocco subito, continuo a non capire perchè inizi proprio male
MA CHE VUOL DIRE AGGIORNARE UNA QUERY?????
ma perchè parli di query?
Tu aggiorni i dati di una tabella, non una query, che caso mai è quella che 
ti ritorna i dati o te li modifica proprio lei...
ma perchè devi passare da una query per lavorare sulla tabella????
mah
Antonio

 - Mostra testo citato -
In effetti pensavo il "peggio".Invece hai capito bene.La tua
spiegazione e' corretta,mentre la mia e' "corrotta".Certo che non si
aggiorna la query.In realta' io parlo di query perche' sono l'origine
dati dei form in esame.
E' vero si puo' dirtettamente intervenire sulla tab.Solitamente io
aggiorno i dati in una tabella in automatico lavorando negli eventi
dei form in esame.In questo caso mi piacerebbe farlo in un altro
modo.forse sto vaneggiando e forse ti confondo maggiormente.
Dino

 ha scritto nel messaggio 
news:ef152527-d494-44c3...@26g2000yqv.googlegroups.com...


Tu devi dire soltanto
io ho questa struttura dati, devo fare questo mentre sto facendo quest'altro
punto.
poi semmai te lo diciamo noi come si fa
Antonio 

 ha scritto nel messaggio 
news:accee853-d3fa-416c...@s5g2000yqm.googlegroups.com...
Ciao a tutti.Avrei questa esigenza alla chiusura del form "Form1"
cut
In sostanza i campi che si aggiornano in continuazione sono il campo
"Peso" e il campo "Totale".
Ricordo che questo aggiornamento deve eseguirsi ogni volta che vado a
chiudere il form "form1"
Grazie in anticipo
Dino
---------------------------
Che casino!
Ma per aggiornare una tabella esistono, come minimo, le query di 
aggiornamento e le query di accodamento.
Ovviamente si può fare tutto da codice.
Permettimi una nota: la proprietà di linguaggio nella programmazione è 
essenziale, fondamentale, ti aiuta a capire il problema e gia ti mette sulla 
strada per risolverlo.
Le query, anche se derivano da altre query, non si aggiornano. Sono la 
tabelle che si aggiornano. A te interessa modificare, aggiungere o 
cancellare i dati presenti in una tabella, non in una query.
Per esempio le query di accodamento potrebbero anche prendere i dati da una 
form e magari manipolarli e generare dei nuovi campi calcolati ma, alla fine 
andranno ad accodare i risultati in una tabella.
Così le query di aggiornamento.
Come detto dal Bisio, descrivi la struttura delle tabelle coinvolte, cita i 
campi chiave e i campi di join e, solo dopo si potrà tentare di dare una 
risposta. Anche le maschere mostrano o manipolano dei dati provenienti, alla 
fin fine, da una tabella, almeno nella stragrande maggioranza dei casi.
In ultimo, se le query attingono da una medesima tabella, ti basta fare un 
requery della query.
Ciao, Carlo

 ha scritto nel messaggionews:accee853-d3fa-416c...@s5g2000yqm.googlegroups.com...

Grazie Carlo e grazie Antonio per la risposta.
Nel leggere le vostre risposte molto precise e mirate mi sono reso
conto di aver esposto delle esigenze in maniera non
corretta,dimostrando forse della confusione tecnica.Non vi e' ombra di
dubbio che l'oggetto da aggiornare e' sempre la tabella.E giustamente
l'aggiornamento naturale di una tab. avviene attraverso le query di
comando "Aggiornamento " e "accodamento".Quindi e vero perche'
insistere sulle query???Antonio dice mahh.. e ha ragione.
Bene dopo questa doverosa premessa vediamo se riesco ad "essermi"
utile dandovi tutte le informazioni che mi avete chiesto.
Allora le tabelle in esame sono 4 : la Tab "Articoli", la Tab
"Distinta base", la tab "Articoli distinta base" e la tab
"Sottolivelli".
Prima di elencarvi in dettaglio la struttura delle tab.vorrei
spiegarvi come funziona il tutto.
il DB in esame deve creare dei prodotti chimati LIVELLI, questi
livelli (creati in distinta base) sono a loro volta creati da singoli
articoli.Facciamo un banale esempio:
Nella tab articoli inserisco 4 articoli : Ferro, alluminio,
plastica,legno ecc.
In distinta base devo andare ha creare il LIVELLO "Livello1" questo
livello e' costituito dagli articoli(Ferro, alluminio, plastica ).
Adesso invece supponiamo di creare il livello "Livello2",questo
livello e' costituito dall'articolo "legno" e dal livello
"Livello1".Come potete vede in questo caso il livello1 diventa un
sottolivello.
Come avete visto dall'esempio ogni livello puo' essere realizzato da
articoli e da sottolivelli che a loro volta sono formati da altri
articoli.
L'articolo "Legno" come l'articolo "plastica" ecc vengono acquistati
da diversi fornitori.Il programma deve sempre in tempo reale
aggiornare in distinta base la variazione di prezzo.Esempio.L'articolo
"Plastica" e' stato acquistato da un nuovo fornitore e rispetto al
primo acquisto il prodotto costa 1 euro in meno.
Questo articolo come sapete serve per realizzare il "livello1" che a
sua volta e' un sottolivello del "Livello2".Ovviamente questa
variazione di prezzo si deve aggiornare in distinta base.
Questo aggiornamento io l'ho risolto in parte.La tabella "Articoli" e
la tab "Articoli distinta base" sono correlate fra loro "integrita'
referenziale" aggiorna campi correlati a catena ecc.Cioe' ogni volta
che varia il prezzo nella tab articoli l'ho trovo variato in distinta
base.Quello che invece non varia e' il sottolivello "Livello1"
all'interno del livello "Livello2" e qua serve il vostro aiuto.I
sottolivelli che servono per realizzare un altro livello vengono
prelevati da un form tabulare e copiati nella tab "Sottolivelli" (la
tab da aggiornare).Questa tab e' relazionata "integrita' referenziale"
con la Tab. "Distinta base".
Mahh.. speriamo di essere stato suff.chiaro adesso vi lenco per ogni
tab campi ecc.
Tab Articoli
I campi sono
IDArticolo chiave primaria (Testo) - IDFornitore (campo testo che nel
form articoli e' un combo per associare il nome del fornit
all'articolo) - Descrizione - Data listino - Prezzo listino - Peso.
Tab Distinta base
IDDistinta chiave primaria (contatore) - Artdistinta (campo testo nome
del livello) - Descrizione - Num pezzi.
Tab Articolidistintabase
IDArticoloD chiave primaria (contatore) - IDDescrizione campo testo
per relazionare le tab- IDDistinta campo numerico utile per
relazionare la tab con altre tab.
Tab sottolivelli (LA TAB IN QUESTIONE)
IDSottolivello Contatore e chiave primaria - Codice - Quantita' - Peso
- Descrizione (tutti campi testo) IDDistinta campo numerico utile perl
a relazione con le altre tab.
In questa tabella vado a copiare i vari livelli scelti che a sual
volta diventano sottolivelli di una altro livello.Questa operazione
viene effettuata in una sub form all'interno del form Gestione
distinta
Forms!Gestione_distinta!Fr_sottolivelli!Codice = Me.Cod_livello
Forms!Gestione_distinta!Fr_sottolivelli!Descrizione = Me.Descrizione
Forms!Gestione_distinta!Fr_sottolivelli!Totale = Me.Costo
Forms!Gestione_distinta!Fr_sottolivelli!Peso = Me.SommaDiPeso_tot
Quindi come potete vedere da questi passaggi i dati nella tab
Sottolivelli non vengono aggiornati in tempo reale (PROBLEMA).
Per finire vi elenco le varie relazioni tra le tab. in questione:
La tab Articoli e' relazionata alla tab "articoli disitnta base" in
relazione "Uno a molti"  con il campo IDArticoli (tab articoli) e il
campo IDDescrizione(Tab articoli distinta base)
La tab "Distinta base" con la tab "articoli distinta base" in
relazione "Uno a molti" il campo IDDistinta(chiave primaria tab
distinta base) e il campo IDDistinta(tab articoli distinta base
numerico)
La tab "Distinta base" con la tab "Sottolivelli" in relazione "Uno a
molti"  il campo IDDistinta(chiave primaria tab distinta base) e il
campo IDDistinta(tab Sottolivelli numerico).
OK speriamo di avervi dato piu' o meno tutti i dati richiesti per
poter risolvermi il problema.
Aspetto vostre notizie
Grazie in anticipo
Dino

 wrote:
cut
OK speriamo di avervi dato piu' o meno tutti i dati richiesti per
poter risolvermi il problema.
Aspetto vostre notizie
Grazie in anticipo
Dino
Cos� ad occhio e croce mi sembra che alla tab "Sottolivelli" devi aggiungere 
il campo chiave, prima di accodare gli altri dati, del tipo:
Forms!Gestione_distinta!Fr_sottolivelli!IDDistinta = Me.IDDistinta
e poi
Forms!Gestione_distinta!Fr_sottolivelli!Codice = Me.Cod_livello
Forms!Gestione_distinta!Fr_sottolivelli!Descrizione = Me.Descrizione
Forms!Gestione_distinta!Fr_sottolivelli!Totale = Me.Costo
Forms!Gestione_distinta!Fr_sottolivelli!Peso = Me.SommaDiPeso_tot
Al termine fare un requery della sottomaschera.
Se ancora non riesci puoi mandare il db zippato che, appena possibile, gli 
do un'occhiata.
Ciao, Carlo

 ha scritto nel messaggio 
news:4a05c947-d6e5-44ae...@35g2000prt.googlegroups.com...






Tab Articolidistintabase











_________________________
Va leggermente meglio.
A parte una cosa che mi è saltata agli occhi, gli ID in alcune tabelle che 
si riferiscono agli ID contatori delle altre (per il join) li hai 
specificati come testo invece che come interi lunghi.
Poi quando parli della form di inserimento distinta, metti il costo dentro 
un campo della sottoform sottolivelli chiamato totale, che non vedo come 
campo della tabella.
E manco ci dovrebbe stare se c'è.
Con un join tra sottolivelli codice articolo e la tabella articoli recuperi 
sempre il prezzo aggiornato, senza doverlo salvare nella tabella 
sottolivelli.
Devi gestire opportunamente l'inserimento di un nuovo prezzo e io lo farei a 
parte, con una gestione anagrafica degli articoli, in modo da svincolare la 
preparazione di una distinta base dall'inserimento del prezzo: lo recuperi 
dalla tabella articoli una volta selezionato l'articolo e il prezzo è stato 
modificato con una transazione di modifica prezzo prima di fare la distinta.
Ma se anche il prezzo fosse nella tabella sottolivelli, non vedo che 
difficoltà ci sarebbe stata a effettuare una query di aggiornamento della 
tabella campo prezzo solo sull'articolo di cui stai modificando il prezzo. 
(ma non mi piace come soluzione)
Infine ritorno sul discorso magazzino:
mi lascia perplesso che si utilizzi come prezzo quello dell'ultimo 
riacquisto (a proposito ma cambi anche con prezzo maggiorato o solo a 
ribasso?)
Se uno ha comprato 100 plastiche a 100 e poi arriva il fornitore che ti 
vende le plastiche a 5, che fai, metti che le plastiche costano 5?
così perdi 9500 delle plastiche che hai comprato a prezzo più alto e che 
rivendi sottocosto.
ma contento il padrone...
Antonio