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 !
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
La domanda è: si può fare un solo cnn.execute ? Qualcosa del genere :
codice:
cnn.execute "DELETE FROM TabPa WHERE (SELECT ...........)
Grazie per l'attenzione.