Opzione su creazione tabella tramite VBA

Anonimo
2011-02-22T12:18:21+00:00

Ciao,

tramite il seguente codice, creo una tabella "Tabella1" con due campi "Id" chiave primaria e "Campo" formato testo:

Dim strSql As String

strSql = "CREATE TABLE Tabella1 (" & _

"Id int identity(1,1) CONSTRAINT [PrimaryKey] Primary Key," & "Campo nvarchar)"

CurrentProject.Connection.Execute strSql

Volendo inserire 120 campi (Campo1, Campo2, Campo3 ecc...), non scritti ovviamente in maniera manuale nel codice, si può fare ad esempio tramite l'istruzione For Next? E Come?

Grazie Vladimiro.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-01-15T22:06:00+00:00

Ciao Giove123,

l'etichetta è una proprietà estesa che puoi aggiungere ad esempio in questo modo:

Sub CreateField(nome_tabella As String, _

                nome_campo As String, _

                tipo As Integer, _

                dimensione As Integer, _

                nome_etichetta As String)

    Dim db As DAO.Database

    Dim Td As DAO.TableDef

    Dim fld As DAO.Field

    Set db = CurrentDb

    Set Td = db.TableDefs(nome_tabella)

    'Aggiungo il campo

    Td.Fields.Append Td.CreateField(nome_campo, tipo, dimensione)

    Td.Fields.Refresh

    'Imposto l'etichetta

    Set fld = db.TableDefs(nome_tabella).Fields(nome_campo)

    fld.Properties.Append fld.CreateProperty("Caption", dbMemo, nome_etichetta)

    fld.Properties.Refresh

    Set fld = Nothing

    Set Td = Nothing

    Set db = Nothing

End Sub

esempio per eseguirla:

CreateField "Tabella1","Rag_Soc",dbtext,50,"Ragione sociale"

Ciao

Giorgio Rancati

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-02-23T13:10:00+00:00

Ciao Vladimiro,

allo scopo userei direttamente DAO in questo modo:

Function Creatabella(nomeTabella As String)

Dim td As TableDef

Set td = CurrentDb.CreateTableDef(nomeTabella)

For i = 1 To 120

     td.Fields.Append td.CreateField("campo" & i, dbInteger)

Next

CurrentDb.TableDefs.Append td

End Function


Cinzia


Sito RIO

Il mio Blog

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-01-15T10:09:30+00:00

    E si può aggiungere un campo assegnando anche la definizione di Etichetta che sarà differente dal nome del campo:

    esempio:

    ...CreateField ("nome campo", tipo, dimensione, "nome etichetta")

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-02-23T22:28:44+00:00

    Ciao Cinzia, tutto a posto; non avevo inserito le virgolette.

    Call Creatabella("Tabella1")

    Grazie mille.

    Ciao Vladimiro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-02-23T14:09:45+00:00

    Ciao Cinzia, non so come richiamare la funzione. Ho provato in questo modo ma non va:

    Call Creatabella(Tabella1)

    Grazie Vladimiro.

    La risposta è stata utile?

    0 commenti Nessun commento