Newsgroup: it.comp.appl.access
Titolo: Creazione query parametrica complessa per ottimizzazione report riepilogo magazzino

Ho già postato questo problema ma non sono arrivato ad una soluzione, vi
espongo il mio problema:
possiedo una tabella articoli con campi codice, descrizione
possiedo una tabella movimenti con campi idmovimento,idriga,codice,
movimento (che può valere carico, scarico,ricarico,reso,scarto), infine il
campo quantita
queste 2 tabelle sono in relazione 1 a molti con integrità referenziale per
la modifica
ho la necessità di ottenere un report riepilogo movimenti di magazzino cosi
strutturato
dovranno essere elencati in ordine alfabetico tutti i prodotti anche senza
movimenti
il report avrà i seguenti campi
codice descrizione, iniziale, carichi, scarichi, resi,
ricarichi,scarti,finale
l'utente prima di aprire il report imposta 2 date e se non le imposta le
imposto io automaticamente
la data iniziale pari alla minima presente in tabella movimenti e
la data finale pari alla massimo presente in tabella movimenti
ora se data iniziale è pari a data minima il campo INIZIALE del report varrà
zero mentre se è maggiore INIZIALE varrà la somma algebrica dei vari
movimenti fino al giorno prima della data INIZIALE
gli altri campi sono la somma del relativo movimento per ogni singolo
prodotto e il campo
FINALE è dato da inziale+carichi-scarichi+resi-scarti
l'unico modo che ho trovato è il seguente:
(modo molto lento quasi 10 secondi ma con molti piu record potrebbe 
peggiorare drasticamente)
le query con suffisso PRE filtrano i record per tipo movimento e data < data
iniziale le query con suffisso POST filtrano i record per tipo movimento e
data >=data iniziale and data<= data finale
Giustamente in un mio post precedente mi hanno indicato che
dovrei riuscire ad ottenere un risultato piu accettabile a livello di codice
SQL oppure lavorando con le somme parziali/totali sulle caselle di testo
ma sinceramente non sono riuscito ad ottenere una query come quella
desiderata.
qualcuno di voi sa aiutarmi? Grazie in anticipo
---- CODE REPORT
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    If Forms![MOVIMENTI]![dal] = DMin("data", "movimenti") Then
        'se data DAL coincide con data minima allora iniziale è zero
        Me.iniziale = 0
    ElseIf Forms![MOVIMENTI]![dal] > DMin("data", "movimenti") Then
        'altrimenti per ogni articoli l'iniziale và calcolata
        caricop = Nz(DSum("quantita", "caricopre", "codice='" & Me.Codice &
"'"), 0)
        scaricop = Nz(DSum("quantita", "scaricopre", "codice='" & Me.Codice
& "'"), 0)
        resop = Nz(DSum("quantita", "resopre", "codice='" & Me.Codice &
"'"), 0)
        scartop = Nz(DSum("quantita", "scartopre", "codice='" & Me.Codice &
"'"), 0)
        ricaricop = Nz(DSum("quantita", "ricaricopre", "codice='" &
Me.Codice & "'"), 0)
        Me.iniziale = caricop - scaricop + resop - scartop + ricaricop
    End If
    Me.carichi = Nz(DSum("quantita", "caricopost", "codice='" & Me.Codice &
"'"), 0)
    Me.scarichi = Nz(DSum("quantita", "scaricopost", "codice='" & Me.Codice
& "'"), 0)
    Me.resi = Nz(DSum("quantita", "resopost", "codice='" & Me.Codice & "'"),
0)
    Me.scarti = Nz(DSum("quantita", "scartopost", "codice='" & Me.Codice &
"'"), 0)
    Me.ricarichi = Nz(DSum("quantita", "ricaricopost", "codice='" &
Me.Codice & "'"), 0)
    Me.finale = Me.iniziale + Me.carichi - Me.scarichi + Me.resi - Me.scarti
+ Me.ricarichi
End Sub

 ha scritto nel messaggio 
news:43d0d3d0$0$1077$4faf...@reader1.news.tin.it...

---omissis---
Ti posso suggerire un'altra via per arrivare al traguardo:
- crei una tabella di appoggio (chiamiamola tbAppoggio) che conterrà i campi 
del report con in più l'id dell'articolo;
- riempi la tabella tbAppoggio (query di accodamento) con tutti gli id, 
codice, descrizione;
- crei una query di aggiornamento che mette in relazione la tabella 
movimenti con la tbAppoggio filtrandola per il tipo di movimento es. carico; 
l'unico campo da aggiornare sarà "carichi" con la somma della "quantita";
ripeti questo passo per ogni tipo di movimento e avrai la tbAppoggio 
riempita e pronta per il report.
L'esecuzione delle query dovrebbe essere molto più veloce di una 
query+disegno del report...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
ti ringrazio molto per l'idea, la provo e ti faccio sapere l'esito al più 
presto.
grazie mille.