Newsgroup: it.comp.appl.access
Titolo: OT Traduzione FAQ 3.5

**************************
3.5 Change the data type of a field by code
Problem
You want to change programmatically the data type or the size
of a field.
Solution
In versions prior A00 this is only possible by long-winded coding.
Here's an example that shows such a complicated way how to
change the type of a field into text or change the field size of a
text field:
'************ CODE START ************
Dim db As DAO.Database
'if the table is in the current db
Set db = CurrentDb
'if the table is in a different db e.g. in a Frontend/Backend situation
'Set db = DBEngine.Workspaces(0).OpenDatabase("c:\Path\Different.mdb")
'rename the original field
db.TableDefs("MyTable").Fields("MyField").Name = "OldField"
'create a new field with the desired settings
db.Execute "ALTER TABLE MyTable ADD COLUMN MyField VARCHAR(100)"
'take over old data
db.Execute "UPDATE MyTable SET MyField = OldField"
'delete old field
db.Execute "ALTER TABLE MyTable DROP COLUMN OldField"
'************ CODE END ************
With JET 4, i.e. in versions >=A00, this complicated procedure
isn't necessary any more.
The ALTER TABLE command of JET SQL has been extended by
ALTER COLUMN (see <F1>). So you only need a single line to
accomplish the task (using the above db variable):
db.Execute "ALTER TABLE MyTable ALTER COLUMN MyField VARCHAR(100)"
*********************
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
+info sulla prima Conferenza Italiana per Sviluppatori di Access (CISA1)

 *********************
3.5 Cambiare il tipo dati di un campo via codice
Problema
Vuoi modificare, da programma, il tipo dati o la dimensione di un campo.
Soluzione
Nelle versioni antecedenti A00 questo è solo possibile con codice verboso
(macchinoso). Qui vi è un esempio che mostra un tale modo complicato, per
modificare il tipo dati di un campo in testo, o modificare la dimensione
(del campo) di un campo testo.
'************ INIZIO CODICE ************
Dim db As DAO.Database
'se la tabella è nel database corrente
Set db = CurrentDb
'se la tabella è in un diverso database, p. e., in una situazione FE/BE
'Set db = DBEngine.Workspaces(0).OpenDatabase("c:\Percorso\Diverso.mdb")
'rinominare il campo originale
db.TableDefs("MiaTabella").Fields("MioCampo").Name = "VecchioCampo"
'creare un nuovo campo con le impostazioni desiderate
db.Execute "ALTER TABLE MiaTabella ADD COLUMN MioCampo VARCHAR(100)"
'prendere il controllo dei vecchi dati
db.Execute "UPDATE MiaTabella SET MioCampo = VecchioCampo"
'cancellare il vecchio campo
db.Execute "ALTER TABLE MiaTabella DROP COLUMN VecchioCampo"
'************ FINE CODICE ************
Con il Jet 4, cioè con le versioni >=A00, questa procedura complicata non
è più necessaria.
Il comando ALTER TABLE di JET SQL è stato ampliato da ALTER COLUMN (vedi
<F1> Help). Così hai soltanto bisogno di una singola linea di codice per
portare a termine il compito (utilizzando la variabile db sopra indicata):
db.Execute "ALTER TABLE MiaTabella ALTER COLUMN MioCampo VARCHAR(100)"
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 'cancellare
Cancelli il vecchio campo
Ciao MAssimialino 

 Ciao MAssimialino
--



Hai ragione sono stato io superficiale
MAssimiilano