Criar Chave Primária, Valor Padrão e índice pelo ALTER 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.
É utilizada a cláusula ADD CONSTRAINT no ALTER TABLE para definir um ou mais campos como Chave Primária. A Chave Primária é definida com o uso da palavra chave PRIMARY KEY. Observe no código, a parte em vermelho.
Public Sub fncCriarTabela() Dim strSql$ Dim bd As dao.Database Set bd = CurrentDb strSql = "CREATE TABLE tblProdutos (" _
"idProduto AUTOINCREMENT," & _ "NomeProduto CHAR(50)," & _ "DataLançamento DATE," & _ "QuantidadeEstoque INTEGER," & _ "ValorUnitário CURRENCY," & _ "Observação MEMO," & _ "Descontinuado YESNO)"
'-------------------------------------
'Executa a consulta, criando a tabela
'------------------------------------- bd.Execute strSql
'--------------------------------------------------------------------------
'Acrescentando a Chave Primária ao campo idProduto. pkey é o nome do índice
'-------------------------------------------------------------------------- strSql = "ALTER TABLE tblProdutos ADD CONSTRAINT pkey PRIMARY KEY (idproduto)" bd.Execute strSql
set bd = Nothing End Sub
Para acrescentar Valor Padrão é possível utilizar o tableDefs do DAO. Observe o código abaixo ande é acrescentado a data atual como Valor Padrão (DefaultValue) para o campo DataLançamento.
Public Sub fncCriarTabela() Dim strSql$ Dim bd As dao.Database Set bd = CurrentDb strSql = "CREATE TABLE tblProdutos (" _
"idProduto AUTOINCREMENT," & _ "NomeProduto CHAR(50)," & _ "DataLançamento DATE," & _ "QuantidadeEstoque INTEGER," & _ "ValorUnitário CURRENCY," & _ "Observação MEMO," & _ "Descontinuado YESNO)"
'-------------------------------------
'Executa a consulta, criando a tabela
'------------------------------------- bd.Execute strSql
'---------------------------------------------------
'Acrescentando Valor Padrão ao campo DataLançamento
'--------------------------------------------------- bd.TableDefs("tblProdutos").Fields("DataLançamento") End Sub.DefaultVa lue = "=date()"
O ADO tem o recurso de usar a cláusula SET DEFAULT pelo ALTER TABLE. Observe atentamente o seguinte código:
Public Sub fncCriarTabela() Dim strSql$ Dim cmd As New ADODB.Connection Set cmd = CurrentProject.Connection strSql = "CREATE TABLE tblProdutos (" _
"idProduto AUTOINCREMENT," & _ "NomeProduto CHAR(50)," & _ "DataLançamento DATE," & _ "QuantidadeEstoque INTEGER," & _ "ValorUnitário CURRENCY," & _ "Observação MEMO," & _ "Descontinuado YESNO)"
'-------------------------------------
'Executa a consulta, criando a tabela
'------------------------------------- cmd.Execute strSql
'----------------------------
'Acrescentando Valor Padrão
'---------------------------- strSql="ALTER TABLE tblProdutos ALTER COLUMN dataLançamento SET DEFAULT date()" cmd.Execute strSql
End Sub
Com o ADO é possível, também, inserir o Valor Padrão (DEFAULT) direto no CREATE TABLE. Observe a parte em vermelho do código:
Public Sub fncCriarTabela() Dim strSql$ Dim cmd As New ADODB.Connection Set cmd = CurrentProject.Connection strSql = "CREATE TABLE tblProdutos (" _
"idProduto AUTOINCREMENT," & _ "NomeProduto CHAR(50)," & _ "DataLançamento DATE DEFAULT date()," & _ "QuantidadeEstoque INTEGER," & _ "ValorUnitário CURRENCY DEFAULT 0," & _ "Observação MEMO," & _ "Descontinuado YESNO)"
'-------------------------------------
'Executa a consulta, criando a tabela
'------------------------------------- cmd.Execute strSql End Sub
Para ter acesso as tabelas do back-end pelo front-end, utiliza-se o PROVIDER do ADO. Observe a parte em vermelha do código:
Public Sub fncCriarTabela3() Dim strSql$
Dim strCnx$ Dim cnx As New ADODB.Connection
'----------------------------------
'String de conexão com o back-end
'----------------------------------
strCnx = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;"
strCnx = strCnx & "Data Source=C:\MinhaPasta\back-end.accdb;"
strCnx = strCnx & "Jet OLEDB:Database Password='MinhaSenha'"
'--------------------------------
'Abre a conexão com o back-end
'--------------------------------
cnx.Open strCnx '-------------------------------------
'Estrutura da nova tabela tblprodutos
'-------------------------------------
strSql = "CREATE TABLE tblProdutos (" _
"idProduto AUTOINCREMENT," & _ "NomeProduto CHAR(50)," & _ "DataLançamento DATE DEFAULT date()," & _ "QuantidadeEstoque INTEGER," & _ "ValorUnitário CURRENCY DEFAULT 0," & _ "Observação MEMO," & _ "Descontinuado YESNO)"
'-------------------------------------
'Executa a consulta, criando a tabela
'------------------------------------- cnx.Execute strSql
End Sub
Criar índice acelera pesquisas e a classificação dos campos. É fundamental que você defina quais campos deseja indexar para que haja ganho de desempenho do seu aplicativo. Utilizamos o CREATE INDICE para criarmos os índices desejados.
currentdb.Execute "CREATE INDEX idxDataLançamento ON tblProdutos (dataLançamento)"
Observe na imagem abaixo o índice criado:
A instrução CREATE INDEX pode ser usada com as seguintes opções:
PRIMARY | Indica que o índice é a chave primária da tabela |
DISALLOW NULL | Impede a inserção de dados nulos no campo |
IGNORE NULL | Faz com que os dados nulos da tabela sejam ignorados no índice |
UNIQUE | Inseri no campo apenas valores exclusivos e não repetidos |
Utilize a palavra chave WITH para declarar as opções. Exemplo:
currentdb.Execute "CREATE INDEX idxDataLançamento _
ON tblProdutos (datalançamento) WITH IGNORE NULL"
Para configurar com a opção UNIQUE:
currentdb.Execute "CREATE UNIQUE INDEX idxDataLançamento _
ON tblProdutos (datalançamento)"
Para excluir um Índice, utilize o DROP INDEX.
currentdb.Execute "DROP INDEX idxDataLançamento ON tblProdutos"
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
1 comentário(s) Arilson 02/02/2024 02:02:21 maravilha mestre... |