Newsgroup: it.comp.appl.access
Titolo: Trasportare dati da due database identici (da Access ad Access)

Pensavo ingenuamente fosse la faccenda più semplice del mondo e invece
mi ritrovo impelagato... sniff :-)
Due database identici con le loro relazioni
Tutti e due pieni a metà
Come faccio ad unirli??
Importando i dati nelle tabelle avrei detto io.
E invece, no: il problema maggiore mi sembra risieda nelle varie
chiavi contatore che o mi si scombinano  (quelle di una tabella poi
non corrispondono con quelle di un altra) o non mi vengono accettate
in quanto doppie...
In verità per il momento solo uno è pieno, l'altro è vuoto per cui ho
provato a importare le intere tabelle, ma poi mi tocca buttare  via le
tabelle preesistenti e ricostruire tutti i collegamenti.
L'unica soluzione accettabile mi pare rifarlo (SNIFF e DOPPIO E TRIPLO
SNIFF) con delle chiavi primarie che non siano contatori!!
Possibile che non ci altra soluzione??
Mi rassegno?
Grazie anticipatamente a tutti!!!
Fede.


Una precisazione è fondamentale: SIGH!! no SNIFF!!!
Secondo se i contatori sono diversi, li puoi forzare
altrimenti devi fare una funzione che accoda i record e upgrada le chiavi esterne
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Segrate (MI), 7-8 giugno 2007

 altrimenti devi fare una funzione che accoda i record e upgrada le chiavi esterne
E' una roba che un povero umano che si diletta con Access quando da
stupido ingegnere non sa che cavolo altro fare, oppure da doppio e
triplo SIGH??!

 triplo SIGH??!
Dim db as dao.database
dim rsA as dao.recordset
dim rsB as dao.recordset
set db = currentdb
set rsA = db.Openrecordset("tabellaVecchia")
set rsB = db.Openrecordset("tabellaNuova")
with rsA
do
rsB.Addnew
rsb.Tuocampo = rsAtuocampo
db.execute "Update tabellaEstrerna set Rif_Id = " & !Tuocontatore
rsB.update
.movenxt
loop unitl .eof
end with 
rsA.close: set rsA = nothing
rsB.close: set rsB = nothing
db.close: set db = nothing
allora ti apri la tabellavecchia, quella che devi abbandonare
ti apri tabellanuova, quella da aggiornare
scorri la tabella vecchia e riversi i vari campi nella nuova
a questo punto scatta il contatore della tabella nuova e tu fai un update delle tabelle collegate che puntavano al''id della tabella vecchia
p.s. l'ho scritta di getto, se non va la debugiamo a volo


 cosa vuol dire contatori diversi??  e come si fa a forzarli??
[...]
Tra le varie soluzioni potresti operare in questo modo:
(se devi farlo una volta sola)
a) Copia di backup del tutto
b) Aggiungi un campo nelle tabelle destinazione che conterranno la
        chiave originale (IDContatore origine)
c) A colpi di query infili da sorgente a destinatario
d) Aggiusti le relazioni avendo nel campo nuovo aggiunto quelle vecchie
        (sempre con query di aggiornamento)
e) Quando e' tutto ok togli il campo aggiunto.
--
Lorenzo

cosa vuol dire contatori diversi??  e come si fa a forzarli??
Forzare in una tabella un autonumber a un valore specifico (non duplicato) è
impossibile manualmente nelle tabelle di Access, ma a codice Visual Basic
con Recordsets è consentito.
Saluti.


Intanto Grazie e Yuk Yuk a tutti!
Vediamo se ho capito quanto basta
1) importo nel Database "B" le tabelle del Database "A"
2) mi creo una function(?) con quel codice (come fare me lo studierò
nella guida in linea...)
3) poi come faccio ad eseguirlo? dalla finestra di VB?
P.S. Prometto che analizzerò con calma il codice per cercare di capire
cosa fa...
Fede.

 Segrate (MI), 7-8 giugno 2007
OVVIAMENTE IPERGRAZIE!
Approfitto per ringraziare anche tutti gli altri che mi hanno
risposto!! Yuk yuk
Fede.