Newsgroup: it.comp.appl.access
Titolo: campi mancanti di nua tabella rispetto a un'altra

ho due db identici di cui 1 è una copia di sicurezza dell'anno scorso, ora
nella tabella dati dell'archivio attuale devo selezionare una lista di
record inseriti successivamente alla creazione della copia di sicurezza
dell'anno scorso e quindi tutti quelli inseriti o modificati
successivamente alla copia, ho importato la tabella dati della copia nel
db attuale cambiando il nome in dati2002 ma poi cosa fare?
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie
Devi avere nella tabella un campo chiave, univoco.
Poi fai una query in cui metti le due tabelle e le unisci in join sul campo
chiave.
Quindi trasformi il join in esterno mettendo la freccia dalla tabella nuova
alla vecchia.
Quindi selezioni tabellanuova.*.
Infine prendi il campo chiave della tabella vecchia e sotto, nella riga
criteri, ci scrivi is null.
Questo ti darà tutti i record che stanno nella nuova ma non nella vecchia.
Antonio

Antonio Biso ha scritto:


Se non hai un campo chiave univoco puoi fare il join su tutti i campi, uno
per uno, sempre cambiando il tipo di join (per tutti i campi) e usando il
criterio Is Null su uno dei campi della tabella vecchia. Però se alcuni
dei nuovi record sono identici a qualcuno dei vecchi, con questo sistema
non verranno estratti.
Namor


 ha scritto nel messaggio
news:blgkhu$u2h$1...@news.newsland.it...

Giusto.
Però a questo punto, se l'is null non viene messo su un campo chiave, che
quindi è sicuramente diverso da null se il record esiste, ti tira fuori
anche i record che sono da entrambe le parti ma con valore null su quel
campo...
Antonio

Antonio Biso ha scritto:




Eh, già. Bisognerebbe inserire in tutti i campi null dei valori non
presenti in tabella che poi puoi facilmente eliminare dopo aver fatto il
lavoro, tipo "#*[@çp(?" per i testi e 9999999,9999999 per i numeri.
Oppure si fa in automatico il grosso del lavoro con la query di
aggiornamento e si rivedono a mano i casi dubbi uno per uno, ma bisogna
sapere ESATTAMENTE in ogni momento cosa si sta facendo, per non perdere il
filo! (consiglio comunque una copia del db prima di qualunque tentativo)
Ma questa rimarrà solo teoria, perchè lui ce l'ha il campo univoco sui
record, vero bb1? (sennò sono c...i tuoi...)


namor ha scritto:






ho capito l'antifona! devo solo vedere se come campo univoco posso
utilizzare un campo tipo matricola o data di nascita,  comunque grazzie a
tutti per le dritte e eventualmente riposto se ci solo altri problemi.


 tutti per le dritte e eventualmente riposto se ci solo altri problemi.
Fai una query di ricerca valori duplicati tipo questa sul campo matricola
della tabella NUOVA, quella con tutti i record:
SELECT Matricola, Count(Matricola) AS Conteggio
FROM tabella
GROUP BY Matricola
HAVING Count(Matricola)>1;
Così vedi subito se ci sono matricole duplicate.
Se non ti restituisce niente puoi usare quel campo come riferimento nella
relazione della query di aggiornamento.
Questo per i record nuovi, inseriti successivamente alla copia.
Ma nel post parlavi anche di trovare i record modificati, che quindi
avranno conservato il valore originale nel campo chiave. In questo caso
devi usare l'altro metodo, quello con il join su tutti i campi, per
scovare le modifiche (stessa matricola, valori diversi nei campi...).
Namor


 tutti per le dritte e eventualmente riposto se ci solo altri problemi.
Grazie si scrive con una "Z" sola!  ;-)
Namor


 Namor
Ma era un rafforzativo perchč lui era molto soddisfatto e molto
riconoscente!!!
Antonio

 Namor
Cazzata. Resetta e cancella.
Per trovare i record modificati fai il join sempre sul campo chiave, solo
che come criterio userai
tabellavecchia.campo1<>tabellanuova.campo1 Or
tabellavecchia.campo2<>tabellanuova.campo2 Or .....
Namor

 Antonio
E allora grazzzie a tutto il ng, perchè spesso mi capita di imparare qualche
chicca che non sapevo!
Namor