Il seguente codice svolge il suo lavoro ma è tremendamente lento. Esso ricava dapprima tutti i record in cui TabIm.ImpIDEn<>759 e poi cancellla tutti i record della tabella TabPa in cui il suo campo ID è il risultato della query.
In pratica se ci sono 10000 record devo fare 10000 cnn.execute !
La domanda è: si può fare un solo cnn.execute ? Qualcosa del genere :codice:Query = "SELECT TabPa.ID" Query = Query & " FROM TabPa INNER JOIN (TabIm INNER JOIN TabPaIm ON TabIm.ID = TabPaIm.ID) " Query = Query & " ON TabPa.ID = TabPaIm.ID WHERE TabIm.ImpIDEn<>759 rsQ.Open Query, cnn Do Until rsQ.EOF cnn.Execute "DELETE FROM TabPa WHERE ID=" & CStr(rsQ(0)) rsQ.MoveNext Loop
Grazie per l'attenzione.codice:cnn.execute "DELETE FROM TabPa WHERE (SELECT ...........)

Rispondi quotando