Copiare una Tabella

venerdì 15 settembre 2006 - 17.15

Paolobellesia Profilo | Newbie

In Access vorrei poter copiare una tabella collegata in una tabella locale da codice.

Per spiegarmi meglio, se io faccio copia-incolla di una tabella dalla maschera di gestione database, Access mi chiede che tipo di tabella volgio creare: collegata, solo struttura, struttura e dati e accoda... La mia sceta è la terza, e lui istantaneamente mi crea la nuova tabella con tutti i dati.

Ho provato ad utilizzare sia una query di accodamento / aggiornamento, ma mi copia record per record e quindi per tabelle molto corpose o collegate risulta lento.

Ho provato ad utilizzare anche il metodo CopyObject, ma non mi permette di scegliere quale tipo di tabella creare e quindi la crea uguale alla madre, cioè collegata.

Qualcuno ha idea di come fare?

grazie

Brainkiller Profilo | Guru

>Ho provato ad utilizzare anche il metodo CopyObject, ma non mi
>permette di scegliere quale tipo di tabella creare e quindi la
>crea uguale alla madre, cioè collegata.

Hai provato ad utilizzare la SELECT...INTO ?
Non l'ho provata ma potrebbe funzionare.

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

marcovivio Profilo | Expert

In Access c'è la possibilità di effettuare "query di creazione" tabella, che altro non è che una
SELECT * FROM table1
INTO table2
MV

Paolobellesia Profilo | Newbie

Grazie per le risposte, le ho provate entrambe.

Quella con "Insert Into table2 Select Table1.* From Tabel1" funziona bene.

Invece quella con "SELECT Table1.* INTO Table2 FROM Table1;" mi da dei problemi durante l'apertura della maschera.

Entrambe pero' copiano record per record e quindi hanno un tempo elevato di esecuzione per tabelle molto grandi, ho circa 100.000 record collegati in rete.

Cercavo qualcosa di immediato, come appunto fare copia-incolla dall'oggetto Tabelle della maschera di gestione database. Probabilmente si dovrebbe utilizzare qualcosa a livello diverso rispetto la programmazione access, pero non so cosa...

Se avete qualche altra idea...

grazie
Paolo

marcovivio Profilo | Expert

Se le tabelle sono molto grandi bisogna prendere in considerazione che ci vorrà del tempo prima di eseguire una copia, il metodo è quello della INSERT, a meno che tu non voglia fare copia-incolla, che comunque richiede il suo tempo.
La lentezza non dipende dal comando, ma è proprio la complessità dell'operazione a rendere lenta l'esecuzione.
MV

Paolobellesia Profilo | Newbie

In effetti hai ragione, la copia dei dati, se questi sono molti, comporta sempre un certo tempo, infatti ho provato anche con il metodo TansferDatabase dell’oggetto Docmd:

Docmd.TransferDatabase(TipoTrasferimento, TipoDatabase, NomeDatabase, TipoOggetto, Origine, Destinazione, SoloStruttura, AccessoArchivio)

che è addirittura piu lento perche va a prendere i dati in rete...

Quello che pero non capisco è che se si fa copia/incolla dalla maschera princiaple del progetto, risulta essere immediata. Penso che un metodo per rifarlo in automatico ci deve essere, forse non con il codice Access, ma in VB o in altro modo.

Se ti viene in mente qualcos'altro?

ciao e grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5