query eliminazione campi duplicati in base ad un valore

Anonimo
2013-12-06T03:15:16+00:00

Salve a tutti come sempre chiedo il vostro indispensabile supporto.

Ho una tabella/query in cui ho una serie di campi tra cui:

-nome prodotto

-ean(codice a barre)

-prezzo

devo eliminare i duplicati nome prodotto lasciando il prodotto con il prezzo più basso

in seguito dal risultato ottenuto, devo eliminare i duplicati ean lasciando il prodotto con il prezzo più basso

chiaramente dutti quelli non duplicati devo visualizzarli.

Sempre in microsoft comunity avevo avuto un ottimo consiglio,ovvero l'utilizzo di raggruppamento in base ai campi su cui effettuare la ricerca di duplicati quindi prima nome prodotto e prezzo (rispettivamente nome prodotot raggruppamento e prezzo min)

e poi ean e prezzo (rispettivamente ean raggruppamento e prezzo min)

a quel punto avrei dovuto effettuare una selezione di corrispondenza diretta di tipo join di tipo1 con la tabella di orgine per trovare tutti i campi corrispondenti, un'altra query di ricerca campi non corrispondenti.

Unendole avrei dovuto ottenere il risultato sperato.

Il problema è che per ean non ci sono problemi ma con il campo nome prodotto riporta più valori quando faccio il join di corrispondenza.

Non posso inserire anche id perchè aumenta il numero di risultati.

quale altra soluzione devo utilizzare.

Grazie a tutti

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-12-10T08:28:47+00:00

Non esiste il problema perchè tu non richiami il Modulo ma una specifica Sub (o funzione) al suo interno con uno specifico nome.

Se ritieni risolto il tuo problema contrassegnalo come risposta, così agevoliamo il lavoro dei moderatori.

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-12-06T19:51:37+00:00

Ciao Gianfranco,

un consiglio, fai una copia del file ACCDB e quindi effettua un compatta e ripristina, così facendo le dimensioni del file si riducono ad meno di 1/4.

la query è la seguente:

SELECT [RAGGR MANUFACURE REFERENCE].[Manufacturer Reference], [RAGGR MANUFACURE REFERENCE].[MinDiPrezzo Vendita], DFirst("ID","[PIX PRO ORIGINE]","[Manufacturer Reference] = '" & [Manufacturer Reference] & "' And val([Prezzo Vendita]) = " & Val([MinDiPrezzo Vendita])) AS Espr1

FROM [RAGGR MANUFACURE REFERENCE];

Il problema è che i tempi di esecuzione sono un po' lunghi.

Se nel tuo applicativo queste query devono essere eseguite spesso penso sia opportuno cambiare approccio ad es. con una routine (codice) VBA .

Fammi sapere

Mimmo

La risposta è stata utile?

0 commenti Nessun commento

38 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-12-10T13:50:01+00:00

    grazie Mimmo 57, come funziona posso spuntare ogni rispsota che mi dai o non si può fare?

    Scusami se approfitto, ma sto facendo una doppia analisi, prima per nome prodotto e poi per ean.

    Nel caso degli ean devo fare una distinzione tra

    -tutti quelli non nulli e validi (<>"0" And <>"000000000000" And <>"0000000000000" And Is Not Null And <>"" And <>"ohne" And Not Like "*+12" And not Like "*+13")

    -e quelli non validi ("0" Or "000000000000" Or "0000000000000" Or "" Or Is Null Or "" Or "ohne" Or Like "*+12" Or Like "*+13")

    Quindi dopo avere eliminao i duplicati titolo effettuo una sintesi con il tuo amatissimo codice anche per ean validi.

    Infine creo una tabella con nome prodotto non duplicati e ean validi non duplicati, e accodo una query con nome prodotto non duplicati e ean non validi(in questo caso non ho eliminato i duplicati di ean in quanto se il campo è nullo o .... li avrebbe uniti anche se sono due prodotti diversi)

    Invece di effettuare questi passaggi e quindi creaione di tabella e accodamento, per cui dovrei creare due pulsanti, esiste un modo per accodare a query o la creaione di questi passaggi in un unico passaggio?

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-12-10T12:13:10+00:00

    La presenza di Rtrim non crea problemi anche se non ci sono spazi di troppo in coda.

    Quindi le puoi mantenere comunque.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-12-10T11:42:29+00:00

    Se non ho capito male:

    • Dim wProd As String [rimane così]

    -wProd = Nz(myRs_In("[Nome/Italiano]"), "") [diventa wProd = RTrim(Nz(myRs_In("[Nome/Italiano]"), "")]

    -If wProd = Nz(myRs_In("[Nome/Italiano]"), "") Then [diventa If wProd = RTrim(Nz(myRs_In("[Nome/Italiano]"), "") then]

    -wProd = Nz(myRs_In("[Nome/Italiano]"), "") [diventa wProd = RTrim(Nz(myRs_In("[Nome/Italiano]"), "")]

    -myRs_Out("[Nome/Italiano]") = wProd **[rimane così]**Sembra tutto ok, dimmi se ho sbagliato qualcosa.

    Inoltre anche se sull'atro fornitore sembrano non esserci problemi conviene cmq applicare questo codice o lascio come stà?

    La risposta è stata utile?

    0 commenti Nessun commento