Newsgroup: it.comp.appl.access
Titolo: Creare una tabella dinamica

Ciao a tutti, vorrei sapere se con Access 2000 è possibile creare una
tabella come evento di un pulsante.
Grazie

 tabella come evento di un pulsante.
    Posto che io abbia ben compreso cosa intendi, se il pulsante si chiama
per esempio "cmd1" allora:
        Private Sub cmd1_Click()
            '
            ' Codice per l'eventuale conferma dell'utente.
            '
            ' Codice per la creazione della tabella.
            '
        End Sub
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

Ok ma cosa metto al posto di Codice per l'eventuale conferma dell'utente e
codice per la creazione della tabella?

 codice per la creazione della tabella?
    Scusa, di cosa stai parlando?


 Grazie
Certo che si puň.
Datti una guardata sull'help a :
Metodo CreateTableDef
Metodo CreateField
Metodo CreateIndex
Metodo CreateProperty
Metodo CreateRelation
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Quelli da me indicati sono metodi che fanno riferimenti alle librerie DAO
che sono le librerie di default per chi, come me, usa Access 97.
Probabilmente tu usi una versione successiva di Access, che pertanto usa di
default le librerie ADO e forse il suo help non contiene indicazioni circa i
metodi DAO.
Qui di seguito ti riporto un esempio di come creare da VBA (facendo
riferimento alle librerie DAO) una nuova tabella e metterla, sempre da
codice, in relazione con una tabella già esistente.
==================================
Nel seguente esempio viene utilizzato il metodo CreateRelation per creare un
oggetto Relation tra un oggetto TableDef Impiegati ed un nuovo oggetto
TableDef denominato Reparti. Nel seguente esempio viene mostrato il modo in
cui la creazione di un nuovo oggetto Relation crea anche tutti gli insiemi
Indexes necessari nella tabella esterna ( Index RepartiImpiegati nella
tabella Impiegati).
Sub CreateRelationX()
 Dim dbsNorthwind As Database
 Dim tdfImpiegati As TableDef
 Dim tdfNuovo As TableDef
 Dim idxNuovo As Index
 Dim relNuovo As Relation
 Dim idxCiclo As Index
 Set dbsNorthwind = OpenDatabase("Northwind.mdb")
 With dbsNorthwind
  ' Aggiunge un nuovo campo alla tabella Impiegati.
  Set tdfImpiegati = .TableDefs!Impiegati
  tdfImpiegati.Fields.Append _
   tdfImpiegati.CreateField("IDRep", dbInteger, 2)
  ' Crea una nuova tabella Reparti.
Set tdfNuovo = .CreateTableDef("Reparti")
  With tdfNuovo
   ' Crea e accoda oggetti Field all'insieme
   ' Fields del nuovo oggetto TableDef.
   .Fields.Append .CreateField("IDRep", dbInteger, 2)
   .Fields.Append .CreateField("NomeRep", dbText, 20)
   ' Crea l'oggetto Index per la tabella Reparti.
   Set idxNuovo = .CreateIndex("IndiceIDRep")
   ' Crea e accoda l'oggetto Field
   ' all'insieme Fields del nuovo oggetto Index.
   idxNuovo.Fields.Append idxNuovo.CreateField("IDRep")
' L'indice nella tabella primaria deve essere
   ' univoco affinché sia parte di un oggetto Relation.
   idxNuovo.Unique = True
   .Indexes.Append idxNuovo
  End With
  .TableDefs.Append tdfNuovo
  ' Crea un oggetto RepartiImpiegati Relation,
  ' con i nomi delle due tabelle nella relazione.
  Set relNuovo = .CreateRelation("RepartiImpiegati", _
   tdfNuovo.Name, tdfImpiegati.Name, _
   dbRelationUpdateCascade)
  ' Crea un oggetto Field per l'insieme Fields
' del nuovo oggetto Relation. Imposta le
  ' proprietà Name e ForeignName in base ai
  ' campi da utilizzare per la relazione.
  relNuovo.Fields.Append relNuovo.CreateField("IDRep")
  relNuovo.Fields!IDRep.ForeignName = "IDRep"
  .Relations.Append relNuovo
  ' Stampa il report.
  Debug.Print "Properties di " & relNuovo.Name & _
   " Relation"
  Debug.Print "    Tabella = " & relNuovo.Table
  Debug.Print "    ForeignTable = " & _
   relNuovo.ForeignTable
Debug.Print "Fields di " & relNuovo.Name & " Relation"
  With relNuovo.Fields!IDRep
   Debug.Print "    " & .Name
   Debug.Print "        Name = " & .Name
   Debug.Print "        ForeignName = " & .ForeignName
  End With
  Debug.Print "Indexes in " & tdfImpiegati.Name & _
   " TableDef"
  For Each idxCiclo In tdfImpiegati.Indexes
   Debug.Print "    " & idxCiclo.Name & _
    ", Foreign = " & idxCiclo.Foreign
  Next idxCiclo
' Elimina i nuovi oggetti perché si tratta di un esempio.
  .Relations.Delete relNuovo.Name
  .TableDefs.Delete tdfNuovo.Name
  tdfImpiegati.Fields.Delete "IDRep"
  .Close
 End With
End Sub
=====================================
Se, come immagino, usi una versione di Access successiva ad Access 97, nel
tuo database inserisci i riferimenti alle librerie DAO in modo che nella
lista dei riferimenti quelli relativi alle librerie DAO precedano quelli
relativi alle librerie ADO.
Non vorrei sembrarti scortese, ma questa è la prima ed ultima volta che
risponderò ad un messaggio su Access che invii al mio indirizzo e-mail; c'è
una regola del NG che stabilisce che non debbono esserci discussioni in
privato su Access tra i frequentatori del NG stesso.
Alla prossima nel NG.
