Tables

1.2 Come si possono modificare via codice le proprietà dei campi di tabella? (1)
  Stefano Bettini
(D)
Come si possono modificare via codice le proprietà (Nome, Dimensioni, Tipo di Dati, ecc.) dei campi di tabella?

(R)
Purtroppo la gestione diretta delle proprietà DAO dei campi di tabella non è possibile, poichè tali proprietà diventano di sola lettura una volta che l' oggetto (field) risulta acodato (salvato) all'insieme cui appartiene.
L' escamotage per uscire dall' impiccio è utilizzare un campo temporaneo di appoggio; è sufficiente accodarlo alla tabella, copiarci il contenuto del vecchio campo, eliminare il vecchio campo, rinomimare il nuovo ed accodarlo all' insieme.
Di seguito una semplice funzione che tramite istruzioni DDL permette di modificare il tipo di dati di un campo di tabella; adattare la funzione in modo da poter modificare altre proprietà DAO dovrebbe essere piuttosto semplice per chiunque.

Function AlterFieldType(Tbl As String, Fld As String, NewType As String) As Boolean

Dim db     As DAO.Database
Dim qdf    As DAO.QueryDef
Dim ris    As Boolean
       
On Error GoTo AlterFieldType_ERR
       
    ris = True
    Set db = CurrentDb()

    ' Creazione QueryDef temporaneo
    Set qdf = db.CreateQueryDef("", "Select * from MSysObjects")

    ' Aggiunta campo temporaneo a tabella
    qdf.SQL = "ALTER TABLE " & Tbl & " ADD COLUMN tmpCampo " & NewType
    qdf.Execute

    ' Copia il contenuto del vecchio campo sul nuovo
    qdf.SQL = "UPDATE DISTINCTROW " & Tbl & " SET tmpCampo = " & Fld
    qdf.Execute

    ' Elimina il vecchio campo
    qdf.SQL = "ALTER TABLE " & Tbl & " DROP COLUMN " & Fld
    qdf.Execute

    ' Rinomina il campo temporaneo come il vecchio campo
    db.TableDefs(Tbl).Fields("tmpCampo").Name = Fld
          
    GoTo FineFunc

AlterFieldType_ERR:
ris = False

FineFunc:
AlterFieldType = ris
      
End Function

NOTA
La funzione di cui sopra fa riferimento alla libreria Microsoft DAO quindi, se si usa una versione di Access successiva ad Access 97, è necessario aggiungere al database i riferimenti a Microsoft DAO 3.6 Object Library.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.