bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Como criar tabelas pelo CREATE TABLE
Como criar tabelas pelo CREATE TABLE

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

Com a instrução CREATE TABLE é possível definir uma nova tabela e seus campos.  Isto é particularmente útil para atualização de um back-end (já em uso) pelo front-end

a) para criar a tabela no próprio front-end, utilize o método Execute do Currentdb para executar a instrução.  Observe, com atenção, o código para criar a tabela tblProdutos no front-end.

Public Sub fncCriarTabela()
Dim strSql$
On Error GoTo trataErro
 
strSql = "CREATE TABLE tblProdutos (" & _ 
"idProduto AUTOINCREMENT," & _
"NomeProduto CHAR," & _
"DataLançamento DATE," & _
"QuantidadeEstoque INTEGER," & _
"ValorUnitário CURRENCY," & _
"Observação MEMO," & _
"Descontinuado YESNO)"

'-----------------------------------------------
'Executa a consulta e cria a tabela no front-end
'-----------------------------------------------
CurrentDb.Execute strSql
'-------------------------------------------
'Caixa de mensagem temporizada da dica 61
'-------------------------------------------
MsgBoxTimer 2, "Tabela tblProdutos criada...", vbOKOnly, "Aviso"
sair:
   Exit Sub
trataErro:
   '-------------------------------------------------------------
   'Informa que a tabela já existe.  Caixa de mensagem da dica 61
   '--------------------------------------------------------------
   If Err.Number = 3010 Then MsgBoxTimer 2, "A tabela já existe ...", _ 
   vbSystemModal, "Aviso"
   Resume sair:
End Sub

Veja, na tabela, os nomes que identificam os Tipos de Dados:

Tipos de Dados  Identificação SQL
Texto  TEXT, ALPHANUMERIC, CHAR, CHARACTER, STRING ou VARCHAR
Memorando  LONGTEXT, MEMO, LONGCHAR ou NOTE
Byte  BYTE ou INTEGER1
Inteiro  SHORT, INTEGER2 ou SMALLINT
Inteiro Long  COUNTER, INTEGER, INT ou AUTOINCREMENT
Simples  SINGLE, FLOAT4 ou REAL
Duplo  DOUBLE, FLOAT ou NUMBER
Data/Hora  DATETIME, DATE, TIME ou TIMESTAMP
Moeda  CURRENCY ou MONEY
Auto Numeração  AUTOINCREMENT ou COUNTER
Sim/Não  YESNO, BIT, LOGICAL, LOGICAL1 ou BOOLEAN
Objeto OLE  LONGBINARY, OLEOBJECT ou GENERAL

 

Não existe um comando para criar campo do tipo ANEXO pelo CREATE TABLE.  Uma alternativa é a de usar o TableDefs do DAO.  Veja as partes em vermelho, acrescentadas ao código:

Public Sub fncCriarTabela()
Dim tbl As dao.TableDef
Dim bd As dao.Database
Dim strSql$
On Error GoTo trataErro
 
'------------------------------------------------------------------
'O CreateField só funciona se o Currentdb for passado para variável
'------------------------------------------------------------------
Set bd = CurrentDb
 
strSql = "CREATE TABLE tblProdutos (" & _ 
"idProduto AUTOINCREMENT," & _
"NomeProduto CHAR," & _
"DataLançamento DATE," & _
"QuantidadeEstoque INTEGER," & _
"ValorUnitário CURRENCY," & _
"Observação MEMO," & _
"Descontinuado YESNO)"

'-------------------------------------
'Executa a consulta, criando a tabela
'-------------------------------------
bd.Execute strSql
 
'---------------------------------------------------------
'A variável tbl assume as definições da tabela tblProdutos
'----------------------------------------------------------
Set tbl = bd.TableDefs!tblProdutos
'------------------------------------------------
'Cria o campo do tipo Anexo na tabela tblProdutos
'------------------------------------------------
tbl.Fields.Append tbl.CreateField("Foto", dbAttachment)
'------------------------------------------
'Esvazia as variáveis, limpando a memória
'------------------------------------------
Set tbl = Nothing
set bd = Nothing
'----------------------------------------------
'Usa a caixa de mensagem temporizada da dica 61
'----------------------------------------------
MsgBoxTimer 2, "Tabela tblProdutos criada...", vbOKOnly, "Aviso"
sair:
   Exit Sub
trataErro:
   '-------------------------------------------------------------
   'Informa que a tabela já existe.  Caixa de mensagem da dica 61
   '--------------------------------------------------------------
   If Err.Number = 3010 Then MsgBoxTimer 2, "A tabela já existe ..", _ 
   vbSystemModal, "Aviso"
   Resume sair:
End Sub

b) Para criar a tabela no back-end pelo front-end, utilize o método Execute do OpenDatabase para executar a instrução.  Observe, com atenção, o código para criar a tabela tblProdutos no back-end.

Public Sub fncCriarTabela3()
Dim tbl As dao.TableDef
Dim bd As dao.Database
Dim strSql$
On Error GoTo trataErro
 
'-------------------------------------------
'Abre o back-end pelo comando OpenDatabase
'-------------------------------------------  
Set bd = OpenDatabase("c:\MinhaPasta\Back-end.accdb", False, False,";PWD=123")
 
strSql = "CREATE TABLE tblProdutos (" & _ 
"idProduto AUTOINCREMENT," & _
"NomeProduto CHAR," & _
"DataLançamento DATE," & _
"QuantidadeEstoque INTEGER," & _
"ValorUnitário CURRENCY," & _
"Observação MEMO," & _
"Descontinuado YESNO)"
'-------------------------------------------------
'Executa a consulta, criando a tabela no back-end
'-------------------------------------------------
bd.Execute strSql
 
'---------------------------------------------------------
'A variável tbl assume as definições da tabela tblProdutos
'---------------------------------------------------------
Set tbl = bd.TableDefs!tblProdutos
'------------------------------------------------
'Cria o campo do tipo Anexo na tabela tblProdutos
'------------------------------------------------
tbl.Fields.Append tbl.CreateField("Foto", dbAttachment)
'-----------------------------------------
'Esvazia as variáveis, limpando a memória
'-----------------------------------------
Set tbl = Nothing
set bd = Nothing
'----------------------------------------------
'Usa a caixa de mensagem temporizada da dica 61
'----------------------------------------------
MsgBoxTimer 2, "Tabela tblProdutos criada...", vbOKOnly, "Aviso"
sair:
   Exit Sub
trataErro:
   '-------------------------------------------------------------
   'Informa que a tabela já existe.  Caixa de mensagem da dica 61
   '--------------------------------------------------------------
   If Err.Number = 3010 Then MsgBoxTimer 2, "A tabela já existe ..", _ 
   vbSystemModal, "Aviso"
   Resume sair:
End Sub

Nota:  Veja neste meu artigo como proceder de forma mais segura, com a senha do back-end no OpenDatabase.

Para excluir uma tabela utilize o DROP TABLE.

CurrentDb.execute "DROP TABLE tblProdutos;"

Bom estudo!


 

 


6 comentário(s)

Fabio Matos   23/11/2023 04:26:27

Mestre Avelino, eu estava tão frustrado e cansado que não havia encontrado esta super joia.
Já testei e já funcionou de cara.
Tu é realmente o cara e me salvou mais uma vez.
MUITO OBRIGADO!!!!

Avelino Sampaio   23/11/2023 00:22:18

Fabio,

veja neste meu outro artigo:

http://www.usandoaccess.com.br/dicas/criar-relacionamentos-tabelas-constraint-vba.asp

Sucesso!

Fabio Matos   22/11/2023 16:24:55

Mestre Avelino, boa noite.
Estudei por quase toda a internet por vários dias e não consegui encontrar uma solução para o meu problema. Estou parado nisso para atualizar o BackEnd dos meus clientes...
Como eu posso criar um Relacionamento com Integridade referencial via VBA?? =(
Parei em:
docmd.runSQL "ALTER TABLE tbl_cad_listProdVenda ADD CONSTRAINT CodVenda FOREIGN KEY (codVenda) REFERENCES tbl_venda (codVenda) ON DELETE CASCADE;"

Neste exemplo é um simples relacionamento entre a Tabela de Vendas (tbl_venda) PK> codVenda e a tabela onde armazena os produtos da Venda (tbl_cad_listProdVenda) FK> codVenda.

O erro que aparece é:
'3289'
Erro de síntese na cláusula CONSTRAINT.

Me ajude, please!!

Marcelo David   25/04/2023 15:38:30

Muito bom! Obrigado por compartilhar!

Avelino Sampaio   03/10/2021 02:38:17

Alonso

sim, veja neste meu artigo:

https://www.usandoaccess.com.br/dicas/criar-chave-primaria-indice-valor-padrao-alter-table.asp

Sucesso!

Anibal Assis   19/01/2020 06:43:32

Boa tarde
Como formatar, e definir as casas decimais com o Alter Table ?
Tem como?

http://www.maximoaccess.com/t35099-resolvidoadicionar-um-campo-em-tabela-via-vba#240412

Obrigado


Envie seu comentário: