problema su funzione agggregazione

Anonimo
2013-04-30T07:54:43+00:00

salve ho la seguente query

SELECT tot_taglio_mp_fornitore.Stagione, ang_forn.tipologia, ang_forn.[ragione sociale], ang_mp.suf_parte, ang_mp.[Descrizione Parte], tot_taglio_mp_fornitore.Colore, tot_taglio_mp_fornitore.[Descrizione Colore], tot_taglio_mp_fornitore.Misura, erei_vs.tot_mp_erei, erei_vs.tot_€_mp_erei, epal_vs.tot_mp_epal, epal_vs.tot_€_mp_epal, IIf([erei_vs]![tot_mp_erei] Is Not Null,"si",IIf([epal_vs]![tot_mp_epal] Is Not Null,"si","no")) AS scelta, IIf([epal_vs]![tot_mp_epal] Is Null,IIf([erei_vs]![tot_mp_erei] Is Null,0,[erei_vs]![tot_mp_erei]),IIf([erei_vs]![tot_mp_erei] Is Null,[epal_vs]![tot_mp_epal],[epal_vs]![tot_mp_epal]+[tot_mp_erei])) AS totale, [totale]/[tot_taglio_mp_fornitore]![tot_mp] AS [%_dif], media_erei_epal.[%mp], media_erei_epal.ConteggioDiID_forn_fase

FROM ((((tot_taglio_mp_fornitore LEFT JOIN media_erei_epal ON (tot_taglio_mp_fornitore.Misura = media_erei_epal.Misura) AND (tot_taglio_mp_fornitore.Colore = media_erei_epal.Colore) AND (tot_taglio_mp_fornitore.id_prefparte = media_erei_epal.id_prefparte) AND (tot_taglio_mp_fornitore.Stagione = media_erei_epal.Stagione)) LEFT JOIN erei_vs ON (tot_taglio_mp_fornitore.Misura = erei_vs.misura) AND (tot_taglio_mp_fornitore.Colore = erei_vs.[Colore Materiale]) AND (tot_taglio_mp_fornitore.id_prefparte = erei_vs.id_prefparte) AND (tot_taglio_mp_fornitore.ID_forn_fase = erei_vs.id_fornitore) AND (tot_taglio_mp_fornitore.Stagione = erei_vs.Stagione)) LEFT JOIN epal_vs ON (tot_taglio_mp_fornitore.Misura = epal_vs.mis_mp) AND (tot_taglio_mp_fornitore.Colore = epal_vs.col_mp) AND (tot_taglio_mp_fornitore.id_prefparte = epal_vs.id_prefparte) AND (tot_taglio_mp_fornitore.ID_forn_fase = epal_vs.id_resp) AND (tot_taglio_mp_fornitore.Stagione = epal_vs.stag)) INNER JOIN ang_forn ON tot_taglio_mp_fornitore.ID_forn_fase = ang_forn.id_fornitore) INNER JOIN ang_mp ON tot_taglio_mp_fornitore.id_prefparte = ang_mp.id_prefparte

WHERE (((ang_forn.[da considerare])=-1))

GROUP BY tot_taglio_mp_fornitore.Stagione, ang_forn.tipologia, ang_forn.[ragione sociale], ang_mp.suf_parte, ang_mp.[Descrizione Parte], tot_taglio_mp_fornitore.Colore, tot_taglio_mp_fornitore.[Descrizione Colore], tot_taglio_mp_fornitore.Misura, erei_vs.tot_mp_erei, erei_vs.tot_€_mp_erei, epal_vs.tot_mp_epal, epal_vs.tot_€_mp_epal, IIf([erei_vs]![tot_mp_erei] Is Not Null,"si",IIf([epal_vs]![tot_mp_epal] Is Not Null,"si","no")), IIf([epal_vs]![tot_mp_epal] Is Null,IIf([erei_vs]![tot_mp_erei] Is Null,0,[erei_vs]![tot_mp_erei]),IIf([erei_vs]![tot_mp_erei] Is Null,[epal_vs]![tot_mp_epal],[epal_vs]![tot_mp_epal]+[tot_mp_erei])), [totale]/[tot_taglio_mp_fornitore]![tot_mp], media_erei_epal.[%mp], media_erei_epal.ConteggioDiID_forn_fase

HAVING (((tot_taglio_mp_fornitore.Stagione)=[Forms]![Menu iniziale]![stg_analisi]));

ma ho il seguente problema su il campo

[totale]

[%_dif]

quello che voglio ottenere è la seguente percentuale

([tot_mp_erei]+[tot_mp_epal]) / [tot_mp]

se inserisco nella query questa formula ([tot_mp_erei]+[tot_mp_epal]) / [tot_mp] la % viene calcolata sono dove tot_mp_erei e tot_mp_epal hanno un valore

alloro ho provato ad inserire

totale: (IIf([epal_vs]![tot_mp_epal] Is Null;IIf([erei_vs]![tot_mp_erei] Is Null;0;[erei_vs]![tot_mp_erei]);IIf([erei_vs]![tot_mp_erei] Is Null;[epal_vs]![tot_mp_epal];[epal_vs]![tot_mp_epal]+[tot_mp_erei])))/[tot_mp]

ma se lancio la query mi viene un messaggio di errore

espressione digitata non correttamente o troppo complessa per essere valutata..semplificare assegnando parti dell'espressione a variabili

allora ho creato la variabile [totale] come definita nella query

IIf([epal_vs]![tot_mp_epal] Is Null,IIf([erei_vs]![tot_mp_erei] Is Null,0,[erei_vs]![tot_mp_erei]),IIf([erei_vs]![tot_mp_erei] Is Null,[epal_vs]![tot_mp_epal],[epal_vs]![tot_mp_epal]+[tot_mp_erei])) AS totalee questa variabile viene calcolata correttamenteallora ho inserito la variabile [totale]/[tot_taglio_mp_fornitore]![tot_mp] AS [%_dif]

ma se lancio la query mi da il seguente erroreimpossibile eseguire uan query che non include l'espressione IIf([epal_vs]![tot_mp_epal] Is Null,IIf([erei_vs]![tot_mp_erei] Is Null,0,[erei_vs]![tot_mp_erei]),IIf([erei_vs]![tot_mp_erei] Is Null,[epal_vs]![tot_mp_epal],[epal_vs]![tot_mp_epal]+[tot_mp_erei])) **/[tot_taglio_mp_fornitore]![tot_mp]**specificata come parte di una funzione di aggregazione

e questo errore me lo da  sia che nelle due variabili metta nelal formula raggruppamento oppure espressione****

come posso risolvere il problema?

grazie****

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-04-30T08:16:34+00:00

Ciao daniele serrai,

perché usi una query con GROUP BY  quando non ci sono somme o conteggi o altre funzioni di aggregazione ?

per facilitare le cose togli la GROUP BY e se al limite vuoi valori univoci usa una SELECT DISTINCT.

Vedi: Impedire la visualizzazione di record duplicati in una query (MDB)

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-04-30T10:44:24+00:00

    grazie mille ora è tutto chiaro

    ok, grazie per il feedback.

    p.s. Contrassegnando il suggerimento come risposta faciliti il lavoro dei moderatori.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-04-30T09:07:21+00:00

    grazie mille ora è tutto chiaro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-04-30T08:51:31+00:00

    Ciao daniele serrai,

    La proprietà "Valori univoci" (SELECT DISTINCT) elimina i valori duplicati in base al valore delle colonne o campi della query.

    La proprietà " record univoci" (SELECT DISTINCTROW) elimina i duplicati generati da una o più tabelle poste in join ma che non hanno campi presenti nella select.

    Esempio:

    Poniamo di voler sapere quali provincie sono presenti nell'anagrafica clienti avendo la tabella Province e la tabella clienti collegate tramite il campo IdProvincia (numerico)

    SELECT DISTINCTROW Province.IdProvincia ,Province.Sigla

    FROM  Province INNER JOIN Clienti ON Province.IdProvincia = Clienti.IdProvincia

    per funzionare nessun campo di Clienti deve comparire nella Select.

    Ovviamente si può fare la stessa cosa con la SELECT DISTINCT.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-04-30T08:33:32+00:00

    ok grazie

    ho tolto la group by e funsioma

    ho lett poi il link ma non ho capito bene le proprietà valori unici e record univoci

    puoi in breve spiegarmele?

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento