Newsgroup: it.comp.appl.access
Titolo: Query complessa

Un saluto a tutti
Uso A2000, ho un db per la movimentazione delgli ordini e del magazzino
composto da una tabella articoli, una tabella carico con la relativa
dettagli carico e una tabella scarico con la relativa dettagli scarico.
Ora il mio grande capo non si accontanta più di un report (era troppo
facile!!) vuole una query che mostri tutti i vari movimenti di carico e
scarico e una colonna dove venga mostrato la giacenza dei vari articoli.
Sono riuscita creando una  query per i movimenti di carico, una query per i
movimenti di scarico e una query union con una  funzione Dlookup che prende
i dati da un altra query per la giacenza.
Il tutto funziona solo che per mostrare i 1600 record impiega esattamente 6
minuti.
A vostro dire è l'unica strada o c'è un rimedio?
Ciao e grazie


Ho una notizia buona e una cattiva.
La buona è che 6 minuti sono troppi dovrebbe darti tutto in tempo reale,
quindi c'è un probelma nella struttura del progetto.
La cattiva è che c'è un problema nella struttura del progetto.
somma i carichi e gli scarichi di ciascun articolo e trovane la differenza.
stai attenta a mostrare tutti i record del carico e tutti quei record di
scarico che sono uguali.
E' una query semplice
Poi puoi complicartic la vita come vuoi.
Posta la struttura delle tabelle.
ciao MAssimiliano

"Marina F." <1@l1> ha scritto nel messaggio
news:VVd29.27083$lu5.7...@twister1.libero.it...

Secondo il mio modesto parere le tabelle di magazzino sono strutturate male.
Converrebbe fondere le tabelle carico e scarico in una sola tabella per i
movimenti di magazzino distinguendone la tipologia con le varie causali di
carico scarico ecc. (le giacenze iniziali adesso dove le metti?  come fai a
calcolare il valore di magazzino lifo/fifo?) e generare una nuova tabella
dove vai a  memorizzare i totali di carico scarico e iniziale, cosa che
normalmente non si dovrebbe fare ma conviene quando ti risparmia delle
elaborazioni così pesanti, ottimizzando così la velocità del report.
Il rovescio della medaglia è che quando vai a registrare un nuovo movimento
per mantenere aggiornati i totali devi ricalcolare la giacenza dell'articolo
con una sub o come ti pare, ma questo risulta meno pesante dell'elaborazione
globale in quanto lavori sui movimenti di un solo articolo in una sola
tabella, sicuramente più fluido di una query con incroci magici :)
Ciao.
Arnaldo.

"Marina F." <1@l1> ha scritto nel messaggio news:VVd29.27083$lu5.7...@twister1.libero.it...

prova a non utilizzare DlookUp (passa magari tramite una query intermedia)
Matteo


Io farei cosě:
crea una tabella di appoggio con i campi che ti servono per il carico e i
campi per lo scarico.
Con una query di accodamento "accoda" i carichi e poi con un'altra query gli
scarichi.
Tempo per l'operazione: 2 o 3 secondi
Otterrai una tabella che potrai manipolare come vuoi e presentarla,
attraverso un report, al tuo capo.
Per la giacenza potrai fare una semplice operazione di somma/sottrazione
direttamente nel report.
Ricorda di svuotare la tabella di appoggio con una query di eliminazione,
prima di riempirla con i nuovi dati .
In pratica la strada č simile a quella da te provata con la differenza di
aver accodato tutti i dati in una nuova tabella.
Ciao, Carlo

 ha scritto nel messaggio
news:e8q29.171835$vm5.5...@news2.tin.it...

ciao Carlo,
di solito io opero in maniera diversa. Uso sempre una tabella di carico e
una di scarico e me ne ricavo la differenza.
La differenza sta nel fatto che se io ho 50000 operazioni di carico e 50000
di scarico posso avere 2 tabelle da 50000 record e non una da 100000.
In un progetto ho l'acquisto e vendita organizzato su due tabelle e il
riscontro su una e trovo una grande differenza. Nulla di preoccupante, per
fortuna, ma alla lunga?
fammi sapere che ne pensi, tengo ai tuoi rilievi.
ciao MAssimiliano

 dove vai a  memorizzare i totali di carico scarico e iniziale
        Come detto prima
Ora faccio un semplice esempio di quello che vuole:
CodArt            Des            Data           NBolla    QtCarico
QtScarico        Giacenza
AA1                pippo          01/01/02         1            100
0                    85
AA1                pippo          02/01/02         2
10                  85
AA1                pippo           03/01/02        3
5                  85
Ciao grazie per la risposta e spero di essermi spiegata.

=tabella2.num) AS quantità
FROM venditaq3 AS tabella2
ORDER BY tabella2.num DESC;
dove la qry di partenza era venditaq3 e tu tti devi creare due tabelle
temporanee che si calcolano su se stesse.
Spero che stavolta abbia capito
ciao
MAssimiliano