Newsgroup: it.comp.lang.visual-basic
Titolo: non riesco aveninne fuori

  sono alle primissime armi
e non riesco a venir a capo di un problema forse banale.
devo realizzare  una funzione che realizzi quanto segue:
ho 2 tabelle
devo trovare ed eliminare i record che nella tabella1 non trovano
corrispondenza con la tabella 2
i record sono idividuabili in quanto l'insieme di due campi (nome + cognome)
esiste in entrambe le tabelle
mi è stata proposta una soluzione SQL ma non riesco a farla funzionare.
chi mi aiuta?

 esiste in entrambe le tabelle
Procediamo per gradi.
Dovresti, prima di tutto, dirci con che tipo di database lavori (io, nel
seguito, supporro' che si tratti di Access, visto il ng che ci ospita) e se
vuoi effetturare l'operazione per mezzo di un programma VB o direttamente in
Access.
Poi farei una query di prova che, prima di cancellare, semplicemente mi
estragga i record con le caratteristiche che richiedi. (Ricordati di fare
copie del file...)
Potresti sperimentare l'autocomposizione di Access "Autocomposizione ricerca
dati non corrispondenti" che puoi trovare selezionando, nel menu'
"Inserisci", la voce "Query", che apre la finestra di dialogo "Nuova query"
in cui, appunto, la trovi.
Quando, invece, crei una nuova query "normale", quella che nella finestra di
cui sopra viene chiamata "Visualizzazione struttura", se selezioni il menu'
query trovi la voce "Query di eliminazione".
Una volta che avrai fatto pratica separatamente con queste due potrai fare
l'operazione in un colpo solo. Eventualmente non esitare a farti vivo
nuovamente.
--
Ciao.
Maurizio

ho provato come dici e sono riuscito ad ottenere una tabella aggiornata ma
 i file da cui parto sono in ecxel ed ho bisogno di una procedura che faccia
 tutto da sola.
 con access ho importato i file di ecxel e ho realizzato una query per la
 ricerca dei dati non corrispondenti.
 Ho quindi creato una query di eliminazione cllegandola con una relazione ad
 integrita referenziale.
 il problema mi si crea nella secona fase,
 svuoto le tabelle ecxel per ripetere l'operazione con altre due cartelle
che
 vorrei importare per mezzo di una macro che gestisca l'intero processo.
 Essendoci però la relazione fra le due tabelle non riesco a completare
 l'importazione per violazione della chiave.

 ha scritto

Scusami, mi sono perso e non ricordo piu' di cosa stiamo parlando: cosa
c'entra adesso Excel? Puoi specificare meglio il problema partendo
dall'inizio? Confermami se quello che ho capito a questo punto corrisponde
con quello che devi fare:
Usi Excel.
In una o forse due Cartelle di lavoro hai due Fogli contenenti elenchi di
dati ed in entrambi questi elenchi sono presenti le colonne (campi) Cognome
e Nome.
Vorresti trovare le righe (record) in cui entrambi i valori di questi campi
sono uguali per poterli eliminare (dal primo foglio? dal secondo? da
entrambi?: nell'esempio seguente faccio l'ipotesi che tu voglia eliminare
dal secondo foglio i dati in comune col primo).
Fossi in te opererei direttamente in Excel, senza una riga di codice, usando
le funzioni di ricerca. Poi, se tutto va bene, mi occuperei del codice.
Poniamo di avere Cartel1 col primo elenco in Foglio1 e Cartel2 col secondo
elenco in Foglio1 e che entrambi gli elenchi inizino da A1, abbiano i
Cognomi nella col. A ed i Nomi in quella B ed occupino le colonne fino a Z,
con le intestazioni dei campi (Cognome, Nome...) nella riga 1.
In entrambi i fogli, nella cella AA2, metterei la formula:
=A2&" "&B2
e la ricopierei in basso per quanti sono i "record". Questo ci permette di
avere un solo campo per la ricerca successiva. Ora, solo nel secondo foglio,
nella cella AB2:
=CONFRONTA(AA2;[Cartel1]Foglio1!$AA:$AA;0)
e anche questa la ricopiamo in basso come sopra. A questo punto i cognomi
NON presenti in Cartel1!Foglio1 hanno in questa colonna il valore #N/D,
mentre gli altri il numero di posizione.
Metti in ordine secondo questo campo per fare in modo che siano tutti vicini
ed in un colpo solo elimini le righe che vuoi, poi elimini le colonne di
servizio (AA
e AB).
--
Ciao.
Maurizio