... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Como criar tabelas pelo CREATE TABLE

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!


 

 


Não há comentário

Envie seu comentário: