gur89 ha scritto:
Pardon non avevo letto questo post! Innanzitutto mile grazie per la risposta!
Scusami sono un po ignorante, mi riesci spiegare in dettaglio come faccio aggiornare il campo attivo della tabella clienti?
Grazie ancora!:)
Dal punto di vista logico funzionale io ti posso dare dei concetti... poi tu devi sviluppare il processo attorno se condividi i concetti magari provando a buttare giù un po di codice.
Quando si lavora con Excel il problema principale è che la fonte non ha dati compatibili con la Relazionalità di un Database, non ha Chiavi Primarie nè Indici.
Ovvio è che se importi una Tabella di Excel in Access il contenuto è consistente ma NON è detto sia confrontabile.
Ne consegue che le Tabelle temporanee di Importazione da Excel vanno pensate e va pensato l'utilizzo che ne viene fatto.
Nel tuo caso a mio avviso NON DEVI ASSOLUTAMENTE usarle per fare query o JOIN, andresti a penalizzare fortemente le prestazioni delle Query, sempre dando per scontato che esista un campo UNIVOCO che trova corrispondenza nelle Colonne di Excel e nella Tabella di Access.
Detto ciò, ribadisco che la Soluzione al tuo caso specifico è quella che ti ho esposto, aggiungi un campo ATTIVO nella tabella di Access.
Quindi una volta importata la tabella da Excel via Codice(si usa la Funzione TransfertSpreadSheet) prima RESETTI tutti i campi attivi con 1 QueryAction di tipo UPDATE
UPDATE Clienti SET Attivo=False
Poi esegui un'altra Query UPDATE per Forzare a TRUE quei Clienti che sono presenti in Tabella TEMP
UPDATE Clienti, ClientiAttivi
SET Attivi= True
WHERE Clienti.PKCliente = ClientiAttivi.PKCliente
Oppure dovrebbe funzionare anche così
UPDATE Clienti
SET Attivi= True
WHERE PKCliente IN (SELECT PKCliente FROM ClientiAttivi)
Finito...!
Da li poi è tutto semplice...