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

Creare tabelle con proprietà in VBA

422 views
Skip to first unread message

Carlo

unread,
Aug 28, 2008, 5:07:03 AM8/28/08
to
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

Carlo

unread,
Aug 28, 2008, 6:05:02 AM8/28/08
to
> Ho visto una cosa simile scritta da Federico Luciani in questo posthttp://groups.google.it/group/it.comp.appl.access/msg/9cf724847990165...

> 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

Dimenticavo: che riferimenti ci vogliono per fare funzionare il tutto?
Tra l'altro alcuni esempi della guida di Access non mi girano.
Probabilmente ho qualche libreria o riferimento disabilitati. Qualcuno
sa dirmi quali sono i riferimenti standard da attivare?

0 new messages