Olá pessoal.
Bem, a princípio, creio que todos saibam o que seja "criar tabelas", certo? Então, pode ser que em alguns casos seja necessário que isto seja feito durante o codigo ASP, com nomes dinâmicos, campos dinâmicos, e tudo mais.
Imaginem um exemplo:
Um sistema parecido com webmail. Sempre que um novo usuário é cadastrado, é criada uma nova tabela com o nome dele e com as pastas 'padrões', como
Caixa de entrada,
Caixa de saída, etc. Então, pensem só..
Se não existisse tal comando, para criar dinamicamente, toda vez que alguém se cadastrasse o administrador teria que abrir o banco, criar a tabela, adicionar os campos padrões. Imaginem isto para 100 usuários. Mão de obra, né?
Eu digo isto porque já montei um sistema similar ao que citei anteriormente, e foi por isso que corri atrás para descobrir como criar tabelas direto, pelo SQL. Bom. Chega de blah blah blah, e vamos ao que interessa.
Estes códigos e sintaxes eu testei apenas no banco de dados
Access, portanto não me responsabilizo caso não funcione com outros tipos de banco de dados.
Vamos partir do princípio:
Passo 1: Conectar ao banco de dados
url_conexao = Server.MapPath("banco.mdb")
set conexao = Server.CreateObject("ADODB.Connection")
conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao
Não vou entrar em detalhes de como é feita a conexão; esta é uma forma, porém existem mais tipos. Com a conexão feita, podemos criar o SQL que criará a tabela.
Passo 2: Montando o SQL
SQL = "CREATE TABLE nome_tabela (campo1 AutoIncrement, campo2 char(50), campo3 integer, Primary Key(campo1) )"
Vamos entender o SQL acima:
- CREATE TABLE > comando do SQL que faz a criação da tabela. Este nunca muda!
- nome_tabela > é o nome da tabela que será criada. Pode ser uma variável vinda de um formulário. Vale ressaltar que se a tabela já existir, vai gerar um erro! Podemos driblar isto fazendo um simples IF, e testando se a tabela já existe.
- ( > isto é um parêntese mesmo. Ele inicia a definição de campos. E deve ser fechado, antes do término do SQL.
- campo1 > é o nome do campo que será criado.
- AutoIncrement > é o tipo de campo que será criado. Este, é AutoNumeração. Mas pode ser Texto, Numero, Data, Memo, etc.
- Primary Key (campo1) > aqui estamos dizendo qual é a chave primária da tabela. Entre parênteses vai o nome do campo que será chave primaria.
- ) > aqui fechamos o parêntese de definição dos campos da tabela.
Bem, após o
Passo2 a tabela foi criada com sucesso, ou não. Pode ser que ela já exista, e tenha dado erro. Para isto, podemos usar o Passo 3!
Passo3: Testando se a tabela já existe!
adSchemaTables = 20
Set rsTabs = conexao.OpenSchema(adSchemaTables)
tabela = false
Do while not rsTabs.EOF
if rsTabs("TABLE_TYPE") = "TABLE" then
if rsTabs("TABLE_NAME") = "nome_tabela" then
tabela = true
end if
end if
rsTabs.MoveNext
Loop
if tabela = false then
Response.Write "A tabela não existe"
else
Response.Write "A tabela existe!"
end if
Então, vamos tentar entender.
A variável
tabela é inicializada com
FALSE. Ela somente será
TRUE caso a tabela já exista! Pois, dentro do LOOP, estamos passando por todas as tabelas existentes, testando se alguma delas é igual à que vamos criar!
Bem, por hora, acho que é isso! Abraços, e boa programação!
Robson