Criar banco de dados Access com ASP
Estas são umas pautas de trabalho e umas referências que achei úteis na hora de solucionar um problema em ASP, consistente em criar um banco de dados em Access (arquivo .mdb) desde zero, ou seja, criar o arquivo .mdb vazio para, uma vez criadas também as tabelas, trabalhar com o banco de dados como se tivesse sido criada com Access.
Logicamente, com Access é muito mais simples criar os bancos de dados, porém este mecanismo tem duas vantagens. Uma simples: que você não necessita ter Access para criar os bancos de dados, e outra mais interessante: que você pode criar os bancos de dados em linha e dinamicamente, de modo que fiquem salvos no seu servidor para realizar os trabalhos que estime oportuno.
Nota: Pode-se criar um banco de dados de Access através de Visual Basic, ASP, ou outros meios porque na verdade o que se está utilizando é o motor Jet, que são umas DLL que têm todos os sistemas Windows para manejar os arquivos .mdb. |
Métodos para criar um BD Access 2000
Existem dois métodos para criar um banco de dados Access: ADO e DAO. Vamos ver um pequeno exemplo de cada um.
Atenção: Para os dois casos, os diretórios têm que ter permissões de escritura para que funcione corretamente.
Exemplo em ADO, Requer MDAC 2.0
Para o exemplo necessita-se ter instalado o Microsoft Data Access Component (MDAC 2.0), que está incluído com a instalação de Microsoft Access 2k, ou, senão, baixar a última versão do (MDAC) em http://www.microsoft.com/data (onde também se encontra o Component Checker para saber que versão você tem instalada).
Segundo informação de Microsoft a versão 1.5 do MDAC contem alguns bugs, portanto recomendam atualiza-lo.
Dim bancodados
Set bancodados = CreateObject(“ADOX.Catalog”)
bancodados.Create “Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=” & Server.MapPath(“prova.mdb”)
Set bancodados = Nothing
Na cadeia utilizada para criar o banco de dados, o valor Engine Type indicado (5) serve para que o banco de dados tenha formato Access 2000. Podíamos ter colocado outros valores para outras versões do motor, por exemplo 3 para Access 95, ou o valor 4 para Access 97.
Exemplo em DAO, requer DAO
Necessita-se DAO 3.6 ou DAO 3.5. No caso de utilizar DAO 3.5, há que modificar “DAO.DBEngine.36” por “DAO.DBEngine.35”
Dim motor
Set motor = CreateObject(“DAO.DBEngine.36″)
motor.CreateDatabase Server.MapPath(NomBD&”.mdb”), “;LANGID=0x0409;CP=1252;COUNTRY=0”, 64
Set motor = Nothing
O terceiro parâmetro do método para criar o banco de dados (64) é para indicar a versão do banco de dados, neste caso Access 2000. No caso de desejar outro formato pode-se modificar por exemplo, a 32 no caso de Access 97 ou16 para Access 95.
Conclusão
As provas foram feitas em 2 PCs com Windows Professional 2000 (SP3) e Office 2000 (SP3) instalado e funcionaram perfeitamente, o mesmo que no meu servidor (hosting contratado) e no de Brinkster (conta gratuita) sem nenhum drama. Também foi provado com êxito no estúdio de CriarWeb.com, utilizando o sistema Windows 98 e o servidor Personal Web Server.
Por último, aqui pode-se ver um exemplo que fiz para gerar as db desde ADO ou DAO (3.6). O código está bastante comentado à respeito do funcionamento e os requerimentos do servidor.
<%@LANGUAGE=”VBSCRIPT”%>
<%
Gerar = Request.Form(“action”)
if Gerar <> “” then
On Error Resume Next
Metodo = Request.Form(“metodo”)
Formato = Request.Form (“formato”)
NomBD = Request.Form (“nomBD”)
‘ ************* Comprovamos segundo que método ************
if Metodo = “ADO” then
if Formato = “1” then
FormatoBD = 5
FormatoN = “Ms Access 2000”
elseif Formato = “2” then
FormatoBD = 4
FormatoN = “Ms Access 97”
elseif Formato = “3” then
FormatoBD = 3
FormatoN = “Ms Access 95”
end if
‘ **********************
‘ Para os dois casos os diretorios tem que
‘ ter permissoes de escritura para que funcione
‘ corretamente.
‘ **********************
‘ Exemplo em ADO, requer MDAC 2.0
‘
‘ para saber que versao esta instalada no sistema
‘ pode usar o Component Checker Tool de
‘ Microsoft
‘ http://www.microsoft.com/data/download.htm#CCinfo
‘ ou baixar a ultima versao em
‘ http://www.microsoft.com/data/download.htm
‘
‘ Jet10 = 1
‘ Jet11 = 2
‘ Jet20 = 3 <———– para Access 95
‘ Jet3x = 4 <———— para Access 97
‘ Jet4x = 5 <———— para Access 2000
‘ **********************
‘ ***** Comeco ADO ************
Dim Catalog
Set Catalog = CreateObject(“ADOX.Catalog”)
Catalog.Create “Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=”&FormatoBD&”;Data Source=”&Server.MapPath(NomBD&”.mdb”)
Set Catalog = Nothing
‘ ************ Fin ADO *****************
else
if Formato = “1” then
FormatoBD = 64
FormatoN = “Ms Access 2000”
elseif Formato = “2” then
FormatoBD = 32
Formato = “Ms Access 97”
elseif Formato = “3” then
FormatoBD = 16
FormatoN = “Ms Access 95”
end if
****************
‘ Exemplo em DAO, requer DAO 3.6 ou DAO 3.5 para
‘ DAO 3.5 modificar “DAO.DBEngine.36” por
‘ “DAO.DBEngine.35”
‘
‘ dbVersao10 = 1
‘ dbVersao11 = 8
‘ dbVersao20 = 16 <———— para Access 95
‘ dbVersao30 = 32 <———— para Access 97
‘ dbVersao40 = 64 <———— para Access 2000
****************
‘ ********** Comeco DAO **********
Dim Engine
Set Engine = CreateObject(“DAO.DBEngine.36″)
Engine.CreateDatabase Server.MapPath(NomBD&”.mdb”), “;LANGID=0x0409;CP=1252;COUNTRY=0″, FormatoBD
Set Engine = Nothing
‘ ********** Fim DAO ***********
end if
end if
%>
<html>
<head>
<title>Criar *.mdb</title>
<style type=”text/css”>
<!–
body {
font-family: Arial, Helvetica, sans-serif; font-size: x-small
}
–>
</style>
</head>
<body bgcolor=”#FFFFFF” text=”#000000″>
<%
if Gerar <> “” then
if Err then
Response.Write “Houve um erro.<br><br>”
Response.Write “<u>Error:</u> ” & Err.Description & “<br>”
Response.Write “<u>Error N°:</u> ” & Err.Number &”.”
else
Response.Write “Base de datos <u>”& NomBD &”</u> fué creada exitosamente!!<br>”
Response.Write “Formato: “&FormatoN & “<br>”
Response.Write “Metodo usado: “&Metodo
end if
else
%>
<!– Formulario de criacao //–>
<form name=”criador” action=”criar_db.asp” method=”POST”>
Nome do BD:
<input type=”text” name=”nomBD”><br>
Formato:
<select name=”formato”>
<option value=”1″ selected>Access 2000</option>
<option value=”2″>Access 97</option>
<option value=”3″>Access 95</option>
</select><br>
Método:<br>
<input type=”radio” name=”metodo” value=”ADO” checked><small>ADO (requer MDAC 2.0)</small><br>
<input type=”radio” name=”metodo” value=”DAO”><small>DAO (requer DAO 3.6)</small><br><br>
<input type=”submit” value=”Criar”>
<input type=”hidden” name=”action” value=”si”>
</form>
<!– Fim formulario //–>
<%
end if
%>
</body>
</html>