Query troppo complessa oltre i 1000 record

Anonimo
2019-12-12T08:37:42+00:00

Buongiorno,

ho creato in ACCESS 365 due query concatenate che funzionano perfettamente se le lancio su un ristretto numero di record ma oltre i 1000 record circa invece dice che è troppo complessa.

Ho già diviso le query per snellirle, la prima seleziona i record in base al range temporale inserito:

SELECT 

 [INSERIMENTO DATI].ID,

 [CODICI OPERAZIONI].[CODICE OPERAZIONE],

 [INSERIMENTO DATI].[totale produzione],

 [INSERIMENTO DATI].[pezzi rottamati],

 (((Round((([INSERIMENTO DATI].[ORA FINE]*24)-([INSERIMENTO DATI].[ORA INIZIO]*24)),1))*60)) AS [tempo di porduzione],

 ([INSERIMENTO DATI]![CAUS_C4]+[INSERIMENTO DATI]![CAUS_C5]+[INSERIMENTO DATI]![CAUS_C6]+[INSERIMENTO DATI]![CAUS_C7]+[INSERIMENTO DATI]![CAUS_C8]+

 [INSERIMENTO DATI]![CAUS_C9]+[INSERIMENTO DATI]![CAUS_C10]) AS [tempo fermo macchina],

 (Round([INSERIMENTO DATI]![totale produzione]/([TEMPI PROD NO PAUSE]![TEMPI]-(([INSERIMENTO DATI]![CAUS_C4]+[INSERIMENTO DATI]![CAUS_C5]+[INSERIMENTO DATI]![CAUS_C6]+

 [INSERIMENTO DATI]![CAUS_C7]+[INSERIMENTO DATI]![CAUS_C8]+[INSERIMENTO DATI]![CAUS_C9]+[INSERIMENTO DATI]![CAUS_C10])/60)),1)) AS [PEZZI X ORA SENZA FERMI MACCHINA MAX]

FROM ([INSERIMENTO DATI]

 LEFT JOIN [CODICI OPERAZIONI] ON [INSERIMENTO DATI].[CODICE OPERAZIONE] = [CODICI OPERAZIONI].ID) 

 LEFT JOIN [TEMPI PROD NO PAUSE] ON [INSERIMENTO DATI].ID = [TEMPI PROD NO PAUSE].ID

WHERE ((([INSERIMENTO DATI].[totale produzione])>0) 

AND (([INSERIMENTO DATI].DATA)>=[Forms]![REPORT 4]![data dal] 

And ([INSERIMENTO DATI].DATA)<=[Forms]![REPORT 4]![data al]));


La seconda (QUELLA IN ERRORE) effettua raggruppamenti:

SELECT 

Query1.[CODICE OPERAZIONE],

Sum(Query1.[tempo di porduzione]) AS [SommaDitempo di porduzione], 

Sum(Query1.[tempo fermo macchina]) AS [SommaDitempo fermo macchina], 

Max(Query1.[PEZZI X ORA SENZA FERMI MACCHINA MAX]) AS [MaxDiPEZZI X ORA SENZA FERMI MACCHINA MAX], 

Avg(Query1.[PEZZI X ORA SENZA FERMI MACCHINA MAX]) AS [MediaDiPEZZI X ORA SENZA FERMI MACCHINA AVG], 

Sum(Query1.[totale produzione]) AS [SommaDitotale produzione], 

Sum(Query1.[pezzi rottamati]) AS [SommaDipezzi rottamati]

FROM Query1

GROUP BY Query1.[CODICE OPERAZIONE];


C'è qualche modo per estendere le query a più di 1000 record?

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
2019-12-12T09:09:20+00:00

ciao,

con le date sempre meglio definire i parametri :

PARAMETERS [Forms]![REPORT 4]![data dal]  DateTime, [Forms]![REPORT 4]![data al] DateTime;

.....

modifica la clausola where come segue, nei ranges sempre meglio evitare >= and <= ma adottare la solzione mostrata sotto.

Ho inserito la restituzione del valore minimo e massimo qualora le textBoxes nella form non sia compilate.

Servirebbe anche  un'ulteriore step di validazione delle stesse, ma per ora mi fermo.

WHERE [INSERIMENTO DATI].DATA>=clng(nz([forms]![report 4]![data dal]),dmin("data","[inserimento dati]"))) And [INSERIMENTO DATI].DATA<clng(nz([forms]![report 4]![data al])+1,dmin("data","[inserimento dati]"))):

per il resto non mi pare di vadere nulla di trascendentale...ti consiglio di evitare gli spazi nei nomi dei controlli e campi.

L'errore credi sia dovuto a qualche incongruenza tra dati e predicato piu' che al predicato stesso.

Facci sapere.

Ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

0 risposte aggiuntive

Ordina per: Più utili