Creare tabelle con proprietà in VBA
[ Nouvelle discussion
| Répondre au groupe
|
it.comp.appl.access ]
Voglio creare una procedura in VBA per creare le tabelle e le relative
maschere partendo da un grande elenco di variabili con annesse
proprietà (creato in Excel).
Sono riuscito a creare una tabella tramite "Microsoft DAO 3.6 Object
Library" con i nomi dei campi, il tipo di dato e la dimensione tramite
questa funzione:
[cite]
Function CreaTabella()
On Error GoTo ErrHandler
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim idx As DAO.Index
Dim fld As DAO.Field
Set db = Application.CurrentDb
Set tdf = db.CreateTableDef("Tabella1")
With tdf
Set fld = .CreateField("ID", dbLong)
fld.Attributes = fld.Attributes Or dbAutoIncrField
.Fields.Append fld
.Fields.Append .CreateField("Data", dbDate)
.Fields.Append .CreateField("Settimana", dbInteger)
.Fields.Append .CreateField("Nome", dbText, 30)
.Fields.Append .CreateField("Commessa", dbText, 15)
.Fields.Append .CreateField("Attivita", dbText, 5)
.Fields.Append .CreateField("Ore", dbSingle)
.Fields.Append .CreateField("Trasferta", dbText, 5)
.Fields.Append .CreateField("Pranzo", dbInteger)
.Fields.Append .CreateField("PSRic", dbInteger)
.Fields.Append .CreateField("PCRic", dbInteger)
.Fields.Append .CreateField("KM", dbInteger)
.Fields.Append .CreateField("KMP", dbInteger)
.Fields.Append .CreateField("AutoTipo", dbText, 25)
.Fields.Append .CreateField("AutoKMinit", dbInteger)
.Fields.Append .CreateField("AutoKMfine", dbInteger)
Set idx = .CreateIndex
With idx
.Name = "PrimaryKey"
.Primary = True
.Unique = True
.Fields.Append .CreateField("ID", dbAutoIncrField)
End With
.Indexes.Append idx
End With
' Accoda un nuovo oggetto TableDef al database
db.TableDefs.Append tdf
ExitHere:
Set fld = Nothing
Set idx = Nothing
Set tdf = Nothing
Set db = Nothing
Exit Function
ErrHandler:
MsgBox Err.Number & " " & Err.Description
Resume ExitHere
End Function
[/cite]
Vorrei però aggiungere, sempre in VBA, le altre proprietà dei campi:
Formato
Maschera di input
Etichetta
Valore predefinito
Valido se
Messaggio errore
Richiesto
Indicizzato
Ho visto una cosa simile scritta da Federico Luciani in questo post
http://groups.google.it/group/it.comp.appl.access/msg/9cf7248479901658?hl=it
ma non ho capito come integrarla nella creazione della tabella.
Dim dbs As Database
Dim tdf As TableDef
Dim prp As Property
Set dbs = currentdb
Set tdf = dbs.TableDefs("tblTimeStamp")
Set fld = tdf.Fields("DataOper")
Set prp = fld.CreateProperty("Format", 10, "dd/mm/yyyy")
fld.Properties.Append prp
Set prp = fld.CreateProperty("InputMask", 10,
"99/99/00;0;_")
fld.Properties.Append prp

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|