Newsgroup: it.comp.appl.access
Titolo: Come creare tabelle con campi e relative proprietà tramite VBA? PER FAVORE

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/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
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?

 ha scritto nel messaggio 
news:7a6529f5-8f71-4f49...@d45g2000hsc.googlegroups.com...





End Function
[/cite]




----------  RISPOSTA  ---------------
Non capisco se l'ultima parte del codice (dove c'è createproperty) è 
qualcosa che hai riportato dal post segnalato, oppure se lo hai scritto tu 
perchè effettivamente ti serve. Io cercherei di semplificare il problema, 
anche accettando di dover scrivere più codice. Per fare questo, eviterei di 
generare i nuovi campi col createfield, ma userei la tecnica che hai usato 
per il campo ID. In questo modo, per ogni field creato, puoi impostare 
diverse proprietà, forse anche quelle che ti servono. Ogni singolo field, 
poi, lo aggiongi col solito metodo append (come tra l'altro hai già fatto 
per il campo ID).
Per i riferimenti che ti mancano, prova a vedere su Strumenti - Riferimenti 
se ti indica qualche libreria mancante.
Ciao
Antonio