Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rinominare tabelle

275 views
Skip to first unread message

dan

unread,
Mar 18, 2003, 5:04:28 PM3/18/03
to
E' possibile rinominare una tabella con un comando SQL eseguito da codice?
(VBA in Access XP).
Non posso usare i soliti comandi di Access perchè mi connetto ad un database
esterno.

Grazie a tutti,
Daniele.


Andrea Benedetti

unread,
Mar 19, 2003, 2:27:30 AM3/19/03
to

"dan" <arm...@libero.it> ha scritto nel messaggio
news:MJMda.26601$Lr4.8...@twister2.libero.it...
Ciao Dan,

> E' possibile rinominare una tabella con un comando SQL eseguito da codice?
> (VBA in Access XP).
> Non posso usare i soliti comandi di Access perchè mi connetto ad un
database
> esterno.

Se il tuo database è SQL Server non puoi rinominare una tabella esistente.
Comunque, in tutti i casi, che sia access o sia sql server, puoi eseguire
una:
SELECT INTO
nella [nuova tabella], e poi fare una
DROP TABLE
della tua [vecchia tabella]

> Grazie a tutti,
> Daniele.
>
Prego,
Andrea


Lorenzo Benaglia

unread,
Mar 19, 2003, 3:46:48 AM3/19/03
to
"Andrea Benedetti" <andrea.b...@studiofarma.it> wrote in message
news:utMPqle7...@TK2MSFTNGP12.phx.gbl...

Ciao Andrea,

> Se il tuo database è SQL Server non puoi rinominare una tabella esistente.
> Comunque, in tutti i casi, che sia access o sia sql server, puoi eseguire
> una:
> SELECT INTO
> nella [nuova tabella], e poi fare una
> DROP TABLE
> della tua [vecchia tabella]
>

La tua soluzione è corretta, ma se lanci una sessione di Profiler e da
Enterprise Manager provi a modificare il nome di una tabella, noterai che
verrà eseguita la stored procedure di sistema sp_rename.
Questa procedura dopo tutta una serie di controlli va ad aggiornare la
sysobject.
Maggiori info sui Books Online (URL:tsqlref.chm::/ts_sp_ra-rz_3ns5.htm).

Purtroppo, però il nostro amico Dan vorrebbe modificare il nome della
tabella in VBA, possibilimente con un comando SQL.
Non sono a conoscenza di un comando SQL che effettui la rename di un
oggetto, e credo che l'unico modo "standard" sia quello suggerito da Andrea.
Dan, se con Access XP ti connetti ad un database .mdb, potresti modificare
la proprietà Name dell'oggetto TableDef nel seguente modo:

objDatabaseEsterno.TableDefs("NomeTabellaDaModificare").Name = "NuovoNome"

Eventualmente prova a fornirci ulteriori informazioni (per es. la natura del
db al quale ti connetti (.mdb, SQL Server, altro??)).

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server

UGIdotNET - http://www.ugidotnet.org
UGISS - http://www.ugiss.org

dan

unread,
Mar 19, 2003, 7:35:35 PM3/19/03
to

"Lorenzo Benaglia" <lbenagl...@tin.it> ha scritto nel messaggio
news:b59apq$27i98c$1...@ID-154627.news.dfncis.de...


Il mio problema è un po’ complicato. Ho un pc collegato ad un database
AS400. Da questo pc, con un programma fatto in VBA (in Access XP), importo
delle tabelle dall’AS400 in un altro database Access presente sullo stesso
pc. Quest’ultimo database viene poi copiato interamente (proprio l’intero
file) da programmi, sempre in VBA, che girano su dei portatili che hanno
bisogno di questi dati.

Quando lancio la sincronizzazione che importa i dati aggiornati dall’AS400
voglio rinominare le tabelle presenti con il suffisso _old per poterle
ripristinare in caso l’importazione non vada a buon fine. Il problema nasce
dal fatto che queste tabelle sono grosse e se ne faccio la copia per
rinominarle perdo molto tempo. Se queste tabelle fossero all’interno del
database Access da cui eseguo il codice non avrei problemi a rinominarle, ma
essendo in un altro db a cui mi connetto dinamicamente (con un oggetto
connection, perché non faccio altro che eseguire delle query che creano una
tabella nel db esterno) non so come fare.

Proverò con la soluzione proposta da Lorenzo.

Altrimenti integrerò le tabelle da esportare sui portatili nel file con il
codice che fa l’importazione da AS400, evitando magari di copiare l’intero
file sui portatili.

Grazie ancora e ciao!

Daniele.

0 new messages