SOMME NELL'INTESTAZIONE DELLA MASCHERA

di il
14 risposte

SOMME NELL'INTESTAZIONE DELLA MASCHERA

Buongiorno a tutti,

ho una query che mi fa circa 20 calcoli prendendo i dati da 4 tabelle.
Questa query la uso in una maschera non considerando un campo e quindi posso raggruppare i risultati e ridurre i record da analizzare.
Nel corpo della maschera i 19 campi restanti vengono sommati in base a 3 campi principali.
Già nel corpo l'elaborazione per avere la schermata è piuttosto lenta.
Poi nell'intestazione ho messo delle caselle di testo che mi fanno la somma della somma del campo e qui il tempo di elaborazione mi sale alle stelle.
Mi sapreste dire qual'è il metodo più veloce per fare delle somme di campi nell'intestazione?

Esempio:
un campo della query è il seguente:
ORE TOT CANT: DSum("[Qta]";"[TBL_CI]";"[tbl_CI]![Tipo]='MAN' AND [idcantiereci] = " & [idcantiereci])
Nel corpo della maschera uso somma e quindi:
SommaDiORE TOT CANT
Nell'intestazione:
=Somma([SommaDiORE TOT CANT])
Cosa ne pensate?

Grazie

14 Risposte

  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Hai provato, invece di usare il DSUM con criteri, a vedere come risponde una Query Raggruppata su idcantiereci e filtrata per idcantiereci e tipo=MAN e con Campo Qta in Somma...?
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Fammi capire,
    la query la raggruppo per idcantieri, la filtro per MAN e poi faccio la somma x qtà?
    ok mi può andar bene raggruppare per idcantieri e filtrare x man ci siamo.
    il problema è che poi nella maschera i dati mi servono ordinati per Year([data])
    Comunque ci provo. ti faccio sapere.
    Ma il vba non aiuterebbe? soprattutto per le somme in intestazione. il ritardo nella compilazione del corpo è accettabile


    Grande Alex, se non ci fossi tu !!! grazie
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Ordinala per Year(Data)...
    Il VBA non ti servirerbbe... sempre abbia capito bene.
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Mah, ci ho lavorato un pò ma non trovo la via.
    Come dicevo ci sono 20 campi con calcoli e criteri che derivano da più tabelle, metto qualche altro esempio:
    
    ORE TOT CANT: DSum("[Qta]";"[TBL_CI]";"[tbl_CI]![Tipo]='MAN' AND [idcantiereci] = " & [idcantiereci])
    RXATGG: DSum("[RICAVO]";"[TBL_CI]";"[Tipo]='SER' and  [idcantiereci] = " & [idcantiereci])
    CXATGG: (DSum("[CTOT]";"[TBL_CI]";"[Tipo]='XAT' and  [idcantiereci] = " & [idcantiereci]))
    SALDATOGG: DSum("[NETTO_AVERE]";"[TBL_MOV]";"[id_SOTTOCONTO] = " & [idcantiereci])
    CFIXNETGG: Somma([tbl_CI]![Qta])*[fissoeuro]
    RTOTSEO: IIf([STAtO]="o";CCur(Nz(DSum("[RICAVO]";"[TBL_CI]";" [idcantiereci] = " & [idcantiereci])));0)
    ACCONTO: IIf([Stato]='O';CCur(Nz(DSum("[NETTO_AVERE]";"[TBL_MOV]";"[UB]=1 and [id_SOTTOCONTO] = " & [idcantiereci]))))
    La query funziona bene, la risposta è immediata, il problema viene quando la porto sulla maschera e comincio a fare le somme.
    Non è che hai un altro suggerimento?
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Perchè hai sempre dei DSUM su altri campi...? Il suggerimento non pensi possa valere su tutti quelli oggetto di DSUM.
    La somma la si può fare in altro modo, ma devi anche renderti conto di quello che fai... altrimenti funziona tutto molto a caso.
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Non li trattare male gli smanettoni che imparano leggendo i forum !!!
    Dsum è facile !!!! e ci ho messo un bel pò per imparare i criteri ora ti mi smonti tutto.
    pensi che per velocizzare dovrei eliminare i Dsum e reimpostare il la query? questo velocizzarebbe le somme nella maschera?
    mi dai qualche link/esempio da studiare?

    Grazie
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    MARCO70 ha scritto:


    Non li trattare male gli smanettoni che imparano leggendo i forum !!!
    Dsum è facile !!!! e ci ho messo un bel pò per imparare i criteri ora ti mi smonti tutto.
    Mah sai... serve sempre avere un minimo di basi altrimenti si fatica a comunicare.
    Io non smonto nulla... anzi ti ho fornito un elemento da studiare.

    MARCO70 ha scritto:


    pensi che per velocizzare dovrei eliminare i Dsum e reimpostare il la query? questo velocizzarebbe le somme nella maschera?
    Mi pare di averti suggerito questo dall'inizio... le funzioni di aggregazione sui domini come DSUM/DLOOKUP/DMAX ecc... non si usano MAI a maggior ragione nelle queries nel modo più assoluto... il motivo è proprio che, per come lavorano, affossato in modo esponenziale al numero dei Records la velocità di risoluzione.

    MARCO70 ha scritto:


    mi dai qualche link/esempio da studiare?
    Grazie
    Se vai alla sezione libri puoi trovare qualche ottimo spunto per capire concetti di teoria di base senza i quali è veramente impossibile capire il giusto approccio.
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Buongiorno,
    Ho letto e guardato tutorial, mi metto al lavoro per ottenere una query con filtri e aggregazioni senza dsum pero mi serve un aiutino perche non sono ancora riuscito a capire come si fa
    Io ho il campo CTOT che puo' avere un valore XAT MAN o SER, come faccio in una query ad avere 3 colonne in cui sommo CTOT solo se Man oppure xat oppure ser.
    Scusami ma mi sono letto qualche libro ( mike davis) ma questo proprio non l'ho trovato

    Grazie mille
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Salve,

    non è che l'unica soluzione per avere colonne distinte per XAT, SER e MAN è la query a campi incorciati?
    Ma cosi facendo ho una proliferazione di query

    Grazie per l'aiuto
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Ciao Alex,

    avevi ragione, reimpostando la query con somma e raggruppa sono sceso da 7 secondi a 0.5 sec.
    Però ho fatto 7 nuove query a cmapi incrociati e non.
    Ma è corretto?
    Grazie
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Non so cosa rispondere mi sembra tu sia partito per una direzione completamente diversa da quella illustrata nel tuo messaggio delle 16:32 del 20Dic e francamente non sono riuscito assolutamente a comprendere l'evoluzione...
    Fossi in te farei una pausa... ma non per il Natale... proverei a studiare perché ho la sensazione possano mancarti le basi e tu stia provando soluzioni con tanta volontà... ma a casaccio...
    RISULTATO..?
    Difficile da capire anche per chi ha qualche nozione in più.
    Purtroppo guardare tutorial credo non possano darti concetti tecnici... ma eventualmente operativi DOPO aver appreso il concetto... per aiutarti nel concreto ad applicarlo.
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Ciao Alex,
    permettimi spiegare il mio punto di vista.
    Il primo computer che ho avuto è stato il VIC20 ben 34 anni fa !!! da allora ho smpre smanettato ma sono un autodidatta. libri pochi e corsi anche meno. Mi piace provare e sperimentare.
    Ora ho una ditta e sto creando un db tagliato sulle mie esigenze. Non ho trovato niente di pronto che sia adatto a quanto voglio e poi ogni settimana mi invento un report o un nuovo calcolo da realizzare. Mi piace lavorarci sopra e non considero una perdita di tempo i tentativi che faccio. Sono tutta esperienza. D'altra parte non mi posso permettere di spendere migliaia di euro con un professionista che mi segua nel progetto con tutte le modifiche e aggiornamenti che faccio. E non ho voglia/tempo per fare dei corsi da professionista.
    Sicuramente mi mancano le basi e l'esperienza di un programmatore; quello che cerco è un aiutino di tanto in tanto per sbloccare qualche situazione, poi leggendo libri e forum step by step imparo.
    Ora veniamo al mio problema.
    Sulla base di quanto hai detto (raggruppamenti e filtri) ho rielaborato togliendo le dsum ma impostando 6 query a campi incrociati e semplici.
    Effettivamente il tempo di elaborazione è crollato ma ora si pongono problemi che avevo imparato a risolvere con le dsum.
    Ho una query che mi raggruppa i pagamenti per cantiere e per anno; poi ho un'altra query che raggruppa i costi per anno e cantiere.
    Creo una nuova query che mette in relazione le due query di cui sopra, ed estrapola alcuni campi da una e dall'altra. Ovviamente alcuni cantieri non hanno ancora un pagamento ma solo costi.
    Se la relazione è del tipo "metti solo se i dati sono uguali" mi filtra il cantiere e non vedo i costi.
    Se la relazione è del tipo "metti tutti i dati di costi" la casella combinata di filtro mi dice che non esistono record.
    scusa se la terminologia che uso non è corretta, hai informazioni sufficienti per capire il mio problema?
    Grazie comunque per l'attenzione
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Dopo un pomeriggio di tentativi ho risolto con una query union con anno e cantiere e poi collegando le costi e ricavi alla union con relazione mostra tutti su union.
    Sono stato bravo? Che dici?
  • Re: SOMME NELL'INTESTAZIONE DELLA MASCHERA

    Dico che c'è senza ombra di dubbio qualche cosa che non quadra nella struttura perché continui ad agire in modi non coerenti ne funzionali.
    Queries di Union per unire anni contabili..? Mmmmm boh....

    In ogni caso non posso esprimere alcun ulteriore pensiero non capendo nulla di come hai strutturato di conseguenza la prima cosa che mi verrebbe da dire è che hai una struttura relazionale anomala... ma magari non è così... certo quello che fai lo è molto.
Devi accedere o registrarti per scrivere nel forum
14 risposte