Condividi tramite

dlookup nella query

Anonimo
2011-07-04T11:06:52+00:00

Salve a tutti,

Sto modificando un db fatto da altri (e da cani), nel quale ci sono svariate query (circa 150), alle quali, spesso, bisogna modificare i criteri di ricerca.

Per raggirare il problema nel minor tempo possibile, ho inserito una tabella che contiene i valori da assegnare alle query.

es dei dati: Like "G?????B*" Or Like "G?????C*" Or Like "G?????D*".

nella query ho utilizzato la funzione dlookup("criterio";"criteri";"idcriterio=1"), ma purtroppo non funziona...

Mi sapreste indicare, per quale motivo?

Grazie della collaborazione

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
2011-07-04T12:59:26+00:00

Ciao Claudio,

e in Criterio per idCriterio = 1 cosa c'è?  Supponendo ci sia Like "G?????B*" Or (Quantità.VP) Like "G?????C*"

la query diventerebbe :

INSERT INTO [Riepilogo da Macro] ( Mese )

SELECT 2 AS mese

FROM Quantità LEFT JOIN [Data Validazione] ON Quantità.VP = [Data Validazione].VP

WHERE (((Quantità.VP)= Like "G?????B*" Or (Quantità.VP) Like "G?????C*" ) AND ((2-[Mese Riferimento])>0))

GROUP BY 2;   e quantomeno ci sarebbe un uguale di troppo.

Semplificando il tuo esempio se in Criterio metto G?????B*

e trasformo la query così:

INSERT INTO [Riepilogo da Macro] ( Mese )

SELECT 2 AS mese

FROM Quantità LEFT JOIN [Data Validazione] ON Quantità.VP = [Data Validazione].VP

WHERE (((Quantità.VP) like DLookUp("criterio","criteri","idcriterio=1")) AND ((2-[Mese Riferimento])>0))

GROUP BY 2;

dovrebbe funzionare.

Sostanzialmente dovresti separare ciascun criterio e la tua query originale diventerebbe

INSERT INTO [Riepilogo da Macro] ( Mese )

SELECT 2 AS mese

FROM Quantità LEFT JOIN [Data Validazione] ON Quantità.VP = [Data Validazione].VP

WHERE (((Quantità.VP) Like DLookUp("criterio","criteri","idcriterio=1") Or (Quantità.VP) Like DLookUp("criterio","criteri","idcriterio=2") Or (Quantità.VP) Like DLookUp("criterio","criteri","idcriterio=3")) AND ((2-[Mese Riferimento])>0))

GROUP BY 2;

avendo messo in

idCriterio = 1   **** G?????B*

idCriterio = 2 G?????C*

idCriterio = 3 G?????D* 

ma francamente non vedo il vantaggio di usare questo metodo rispetto all'originale   a meno che gli stessi criteri non siano usati in tante query diverse e poi,  per modificare i criteri di filtro basterà modificare i dati nella tabella Criteri senza dover modificare le query

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-07-05T04:51:50+00:00

    Ciao Cinzia, professionale come sempre, hai centrato in pieno il problema.

    (Purtroppo si tratta di un db creato da altri, mi hanno chiesto di sistemarlo senza rifarlo e sto cercando di risolvere questo inghippo nel modo più veloce possibile.)

    Infatti si tratta di modificare i criteri in tantissime query, circa 150 per tipo. 

    Per velocizzare il tutto ho pensato ai campi di una tabella dove inserire i vari filtri (usando una riga per criterio), mi è sembrata l'unica soluzione valida....

    Altro problema, non sempre ci sono 3 criteri, a volte 1, a volte 2, a volte anche 4 o 5

    es: tipologie di estrazione

    criterio 1 Like "G?????B*" Or Like "G?????C*" Or Like "G?????D*"

    criterio 2 Like "G?????A*" Or Like "P?????a*"

    criterio 3 Like "GC*" Or Like "GJ*"

    la tabella al momento contiene 52 campi coi criteri sopraciati.

    provo e ti faccio sapere.

    Per il momento ti ringrazio della consulenza.

    Ciao alla prossima

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-07-04T12:19:11+00:00

    Ciao Cinzia,

    la prima parte è il codice originale

    INSERT INTO [Riepilogo da Macro] ( Mese )

    SELECT 2 AS mese

    FROM Quantità LEFT JOIN [Data Validazione] ON Quantità.VP = [Data Validazione].VP

    WHERE (((Quantità.VP) Like "G?????B*" Or (Quantità.VP) Like "G?????C*" Or (Quantità.VP) Like "G?????D*") AND ((2-[Mese Riferimento])>0))

    GROUP BY 2;

    Parte modificata:

    INSERT INTO [Riepilogo da Macro] ( Mese )

    SELECT 2 AS mese

    FROM Quantità LEFT JOIN [Data Validazione] ON Quantità.VP = [Data Validazione].VP

    WHERE (((Quantità.VP)=DLookUp("criterio","criteri","idcriterio=1")) AND ((2-[Mese Riferimento])>0))

    GROUP BY 2;

    Grazie mille per la collaborazione offerta

    Ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-07-04T11:52:23+00:00

    Ciao Claudio,

    puoi fare un esempio di query in cui usi Dlookup così vediamo come viene usato?

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento