Criando um Banco de dados e Gerando HTML ?
Você já precisou criar um banco de dados usando DAO e SQL e a seguir exibir os dados de uma tabela em uma página HTML. Pode parecer uma tarefa espinhosa , mas com o VB fica fácil obter o resultado. Vejamos:
1-) Inicie um novo projeto no VB e no formulário padrão insira os seguintes controles: três textbox , três labels e dois botões de comando , como no layout abaixo:
2-) Insira um módulo no seu projeto e inclua o seguinte código no módulo:
' declaracao ShellExecute para executar os arquivos associados com sua extensao Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long ' Constantes usadas pela funcao Public Const SW_SHOWNORMAL = 1 Public Const SW_SHOWMINIMIZED = 2 Public Const SW_SHOWMAXIMIZED = 3 Public Const SW_SHOW = 5 Public Const SW_MINIMIZE = 6 Public Const SW_SHOWMINNOACTIVE = 7 Public Const SW_SHOWNA = 8 Public Const SW_RESTORE = 9 Public Const SW_SHOWDEFAULT = 10 |
3-) Na seção General declarations do formulário digite o código a seguir:
Dim Cabecalho As String Dim Rodape As String Dim DataString As String Dim BuiltString As String |
4-) No formulário padrão insira o seguinte código no evento Click do botão de comando - Continua :
Private Sub cmdContinua_Click() ' chama a rotina que vai criar o banco de dados If txtbd <> "" And txttabela <> "" Then CriaDB Else Exit Sub End If ' define as variaveis objeto : database e recordset Dim dbs As Database Dim rs As Recordset 'define o caminho do banco de dados Set dbs = OpenDatabase(txtbd) ' inclui alguns registros no banco de dados dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco, Email) VALUES " & "('Jose', 'R Lins , 100','Limai@uol.com.br');" dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco, Email) VALUES " & "('ALine', 'R. XV Janeiro , 19', 'Aline@net.com');" dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco, Email) VALUES " & "('Jorge', 'R. Mirassol , 100', 'jorge@bol.com');" dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco, Email) VALUES " & "('Sheila', 'Av. 12 , 10', 'sheila@gov.org');" ' abre o recordset Set rs = dbs.OpenRecordset("SELECT * FROM " & txttabela & " ORDER BY Nome") ' precorre os registros construindo uma string com os dados rs.MoveFirst While Not rs.EOF With rs DataString = DataString & "<FONT FACE=""TAHOMA"" SIZE=""-1"">" & .Fields("Nome") & "</FONT></TD><TD> " _ & "<FONT FACE=""TAHOMA"" SIZE=""-1"">" & .Fields("Endereco") & " </FONT></TD><TD> " _ & "<FONT FACE=""TAHOMA"" SIZE=""-1"">" & .Fields("email") & " </FONT></TD></TR><TR><TD> " .MoveNext End With Wend ' fecha o banco de dados dbs.Close define_cabecalho_rodape ' cria o arquivo html Open txthtml For Output As #1 Print #1, Cabecalho Print #1, DataString Print #1, Rodape Close 1 msg = "O arquivo " & txthtml & " foi criado com sucesso." msg = msg & vbCrLf & "Vamos exibir o arquivo usando o se navegador padrao." MsgBox msg, 0, "Informação" ' exibe o arquivo html ShellExecute Me.hwnd, vbNullString, txthtml, vbNullString, "C:\", SW_SHOWNORMAL End Sub |
5-) Ainda no formulário padrão inclua o seguinte código referente a rotina que irá criar o banco de dados:
' cria o banco de dados Public Sub CriaDB() Dim wrkDefault As Workspace Dim dbsNew As Database Dim prpLoop As Property ' define Workspace padrao Set wrkDefault = DBEngine.Workspaces(0) If Dir(txtbd) <> "" Then Kill txtbd ' Cria um banco de dados criptografado Set dbsNew = wrkDefault.CreateDatabase(txtbd, dbLangGeneral, dbEncrypt) ' cria a tabela com tres campos do tipo texto dbsNew.Execute "CREATE TABLE " & txttabela & "(Nome TEXT, Endereco TEXT, Email TEXT);" ' fecha o banco de dados dbsNew.Close End Sub |
6-) Agora a rotina que irá definir o cabeçalho e o rodapé do arquivo HTML.
Private Sub define_cabecalho_rodape() ' define o Cabecalho Cabecalho = "<HTML><TITLE>Criando um Banco de dados e Gerando HTML</TITLE>" Cabecalho = Cabecalho & "<HEAD>Os dados exibidos foram extraidos da Tabela : " & UCase(txttabela) & "</HEAD>" Cabecalho = Cabecalho & "<BODY><BR><BR>Nome do Banco de dados : " & UCase(txtbd) & "<BR><BR><TABLE BORDER=1 WIDTH=400>" Cabecalho = Cabecalho & "<TR><TD><B>Nome</B></TD>" Cabecalho = Cabecalho & "<TD><B>Endereco</B></TD><TD><B>" Cabecalho = Cabecalho & "Email</B></TD></TR><TR><TD>" ' atribui o Rodape - rodape Rodape = "</FONT></TABLE><BR><BR><A HREF=""mailto:macoratti@riopreto.com.br"">Email me</A></BODY></HTML>" End Sub |
7-) Finalmente a rotina para encerrar o aplicativo:
Private Sub cmdSair_Click() Unload Me End End Sub |
Funciona assim:
1- Você deve informar o nome e caminho do Banco de dados que deseja criar e o nome da tabela onde iremos criar os dados.
2- A seguir você define o caminho e o nome do arquivo HTML que vai gerar
Usamos SQL para criar o tabela : "CREATE TABLE " & txttabela & "(Nome TEXT, Endereco TEXT, Email TEXT);"
e para inserir os dados na mesma:
dbs.Execute " INSERT INTO " & txttabela &
"(Nome,Endereco, Email) VALUES " & "('Jose', 'R Lins , 100','Limai@uol.com.br');"
dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco,
Email) VALUES " & "('ALine', 'R. XV Janeiro , 19', 'Aline@net.com');"
dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco,
Email) VALUES " & "('Jorge', 'R. Mirassol , 100', 'jorge@bol.com');"
dbs.Execute " INSERT INTO " & txttabela & "(Nome,Endereco,
Email) VALUES " & "('Sheila', 'Av. 12 , 10', 'sheila@gov.org');"
depois definimos o cabeçalho e o rodapé do arquivo e geramos o arquivo HTML usando as funções de tratamento de arquivos clássicas:
Open txthtml For Output As #1
Print #1, Cabecalho
Print #1, DataString
Print #1, Rodape
Close 1
Por último usamos a função ShellExecute (definida no módulo) para exibir o arquivo HTML gerado:
ShellExecute Me.hwnd, vbNullString, txthtml, vbNullString, "C:\", SW_SHOWNORMAL
Abaixo o resultado do processamento :( para o meu exemplo )
Até mais...