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. |