Conexão com Banco de Dados – Parte 01

Luciano Correa em Linguagens

Olá pessoal! Antes do início, queria
avisar que estou tentando responder a todos os e-mail´s,
o mais rápido possível, e podem aguardar que responderei
a todos.

Essa semana vamos iniciar a abordagem sobre conexão
com banco de dados, usado amplamente no dia-a-dia do programador.
Serão usados nesta e nas próximas colunas os bancos
ACCESS 2000/97, MS-SQL Server e MYSQL. O tipo de conexão
a ser utilizada será a string para conexão ADO.

Para exemplificar esses três tipos de conexão,
vamos criar uma aplicação simples de Agenda Telefônica.

Nesta primeira parte vamos usar o banco ACCESS.
Crie um banco com o nome de agenda.mdb e com as seguintes
características:

Tabela: pessoal

Campo

Tipo

Tamanho

codigo

AutoNumber

nome

Text

50

end

Text

100

fone

Text

25

No Visual Basic crie um novo Projeto com nome de
AgendaMDB, renomeie o Form1 para frmAgenda e insira um Módulo
com o nome de modCnn, como mostra a figura abaixo:

Agora vamos criar dentro do Módulo o código
de conexão com o banco, e as rotinas de Inclusão,
Consulta, Alteração e Exclusão como mostra
as linhas abaixo:

Option Explicit

Global cn As
ADODB.Connection
Global rs As
ADODB.Recordset

Conexão:
Private Sub Main()
Dim strArquivo As
String

Dim strLocal As
String

Dim ConectaAccess As
String

Load frmAgenda
frmAgenda.Show
DoEvents
Set cn = New
ADODB.Connection
Set rs = New
ADODB.Recordset

strArquivo = "agenda.mdb"
strLocal = App.Path
Set cn = CreateObject("ADODB.Connection")
ConectaAccess = "Driver={Microsoft Access Driver (*.mdb)};"
& _
"Dbq=" & strArquivo & ";" & _
"DefaultDir=" & strLocal & ";" &
_
"Uid=Admin;Pwd=;"

cn.Open ConectaAccess
End Sub

Rotina de Inclusão:

Public Function Inserir(ByVal
strNome As String, _
strEnd As String, _
strFone As String) As
Variant

cn.Execute ("insert into pessoal(nome,end,fone)" _
& "values(‘" & strNome & "’,’"
& strEnd & "’,’" & strFone & "’)")

Inserir = True
End Function

Rotina de Alteração:

Public Function Alterar(ByVal
intCodigo As Integer, _
strNome As String, _
strEnd As String, _
strFone As String) As
Variant

cn.Execute "update pessoal set nome= ‘" & strNome
& "’," _
& " end= ‘" & strEnd & "’, fone= ‘"
& strFone & "’" _
& " where codigo = " & intCodigo

Alterar = True
End Function

Rotina de Consulta:

Public Function Consultar(ByVal
intCodigo As Integer) As
Variant

Set rs = CreateObject("ADODB.Recordset")

With rs
.Open "select * from pessoal where codigo=" & intCodigo
& "", cn, adOpenKeyset, adLockOptimistic
If .RecordCount = 0 Then
MsgBox "Código Inválido", vbExclamation,
"Erro"
Else
frmAgenda.lblCod = !codigo
frmAgenda.txtNome = IIf(IsNull(!nome), Empty,
!nome)
frmAgenda.txtEnd = IIf(IsNull(!End), Empty,
!End)
frmAgenda.txtFone = IIf(IsNull(!fone), Empty,
!fone)
End If
.Close
End With

End Function

Rotina de Exclusão:

Public Function Excluir(ByVal
intCodigo As Integer) As
Variant

cn.Execute "delete * from pessoal where codigo="
& intCodigo & ""
Excluir = True
End Function

Para esse código que acabamos de digitar
tenha efeito é necessário fazer uma referência
ao ADO. Então clique em Project/References… e escolha
a opção "Micrisoft ActiveX Data objects 2.6
Library", como mostra a figura abaixo:"

Obs.: As versões 2.5 e 2.6 do ADO são
para ACCESS 2000 e a versão 2.1 é para ACCESS 97.

Voltando ao form frmAgenda modele-o como mostra
a figura abaixo:

E o código desse form vai ficar dessa forma:

Botão Alterar:
Private Sub cmdAlterar_Click()
Dim atual As
Variant

atual = Alterar(lblCod.Caption, txtNome.Text, txtEnd.Text, txtFone.Text)
If atual = True
Then

Call limpar
Else
MsgBox "Erro na atualização.", vbCritical
End If
End Sub

Botão Consultar:
Private Sub cmdConsultar_Click()
Dim intCodigo As
Integer

intCodigo = InputBox("Digite o Código", "Consulta")
Consultar (intCodigo)
End Sub

Botão Excluir:
Private Sub cmdExcluir_Click()
Dim excluido As
Variant

excluido = Excluir(lblCod.Caption)
If excluido = True
Then

Call limpar
Else
MsgBox "Erro na excluisão.", vbCritical
End If
End Sub

Botão Incluir:
Private Sub cmdIncluir_Click()
Dim novo As
Variant

novo = Inserir(txtNome.Text, txtEnd.Text, txtFone.Text)
If novo = True
Then

Call limpar
Else
MsgBox "Erro na incluisão.", vbCritical
End If
End Sub

Função limpar:
Private Sub limpar()
lblCod.Caption = ""
txtNome.Text = ""
txtEnd.Text = ""
txtFone.Text = ""
End Sub

Botão Sair
Private Sub cmdSair_Click()
cn.Close
Set cn = Nothing
Unload Me
End Sub

Para finalizar, clique em ProjectAgendaMDB Proprerties…
e em Startup Object: troque frmAgenda por Sub Main.

Semana que vem vamos iniciar o exemplo desse projeto
com conexão para SQL Server e também vamos usar
procedures.

Abraços a todos e até a próxima
coluna.

Luciano Correa em Linguagens

Comentários

Dê Sua Opinião

O seu endereço de email não será publicado Campos obrigatórios são marcados *

  1. “Nome da fonte de dados não encontrado e nenhum driver padrão especificado”, esse foi o erro, será que fiz alguma coisa errada ou será que ficou faltando fazer alguma coisa ? Salvei o banco na mesma pasta do projeto.

  2. você não tratou de possíveis erros que podem ocorrer durante a execução do programa. Você conside que seria interessante incluir o tratamento de erros? Vou testar o seu código. abraços.

  3. Esse exemplo está me ajudando e muito. Mas o q eu qria saber como ficaria esse código com 2 tabelas. O q deverá ser feito? Digitar tudo num módulo só ou tem q adicionar um novo módulo?
    Espero respostas … Abs!
    Douglas de Carvalho

  4. boa tarde Luciano, voce poderia me esclarecer a dúvida deu erro run-time error “3709”.
    a conexão não pode ser usada pra realizar esta operação. Ela está fechada ou é invalida neste contexto.
    e-mail ernestoam@uol.com.br

  5. eu precisso de ajuda estou a fazer o meu projecto da escola sobre a gestão de uma farmancia e não consegou fazer a conexão access e visual basic, bem com outros projectos e estou a precisar da vossa ajuda, escrevo apartir de angola, luanda

  6. Depois de muito tempo procurando apostila ou alguma coisa que ajudasse fazer comunicao entre VB e Access, acho esse site com esse topico.
    Montei e apanhei um pouco com alguns erros porem conseguir fazer funcionar. Vc nao sabe como fiquei feliz com isso. Porem ainda tem algumas duvidas exp: como faz para aparecer qual é codigo que vai ser incluido no cadastro?

    Valeu mesmo

  7. From: pedrinhobacelar@hotmail.com
    To: lukinfo@uol.com.br
    Subject: Caso possa me ajudar, ficarei grato!
    Date: Mon, 26 Jul 2010 11:43:12 -0300

    Bom Dia Luciano,

    Estou fazendo um banco de dados e quando eu clico no botão “add” eu gostaria de add mais de um item por vez.

    ou seja quando eu clicar no botão add tres itens no banco de dados.

    Private Sub cmdregistrar_Click()
    tbmercadoria.AddNew
    tbmercadoria(“pedido”) = txtpedido
    tbmercadoria(“data”) = Mskdata
    tbmercadoria(“item”) = lbldbastao
    tbmercadoria(“quantidade”) = txtbastao
    tbmercadoria(“cliente”) = txtcliente
    tbmercadoria(“entrega”) = MSKENTREga
    tbmercadoria.Update

    tbmercadoria.AddNew
    tbmercadoria(“pedido”) = txtpedido
    tbmercadoria(“data”) = Mskdata
    tbmercadoria(“item”) = lbldtecido
    tbmercadoria(“quantidade”) = txttecido
    tbmercadoria(“cliente”) = txtcliente
    tbmercadoria(“entrega”) = MSKENTREga
    tbmercadoria.Update

    End if

    Caso possa me ajudar ficarei grato.

    Um abraço!

  8. Bom dia, estamos utilizando o VBA para coletar dados em uma estação onde está instalado SQL Server 2005 Express. Criamos uma ferramenta ODBC do tipo SQLServer e estamos tentando buscar os dados através do VBA. Gostaria de saber se voce possui um modelo ou se pode me ajudar, pois nunca fiz esta configuração e estou com um pouco de dificuldade. Obrigado

  9. Bom dia, estamos utilizando o VBA para coletar dados em uma estação onde está instalado SQL Server 2005 Express. Criamos uma ferramenta ODBC do tipo SQLServer e estamos tentando buscar os dados através do VBA. Gostaria de saber se voce possui um modelo ou se pode me ajudar, pois nunca fiz esta configuração e estou com um pouco de dificuldade. Obrigado

  10. Olá Luciano, bom dia.
    Sou Gerardo Lopes, técnico mecânico.
    Estou tentando fazer aquele seu exemplo
    sobre banco de dados do access com vb no visual studio
    2008 mas está ocorrendo erro no momento em que digito
    o comando “Global cn As ADODB.Connection”.
    Erro: Syntax error.

    estou fazendo um trabalho na empresa onde trabalho, INFRAERO,
    que envolve o bando de dados. Preciso inserir a data e hora
    automaticamente se que alguém tenha que digitar esses dados.
    estou fazendo pelo Label que mostra esses dados automaticamente mas
    não estou conseguindo levar para o banco de dados. Como devo fazer
    pra que dê certo?
    Outra coisa, preciso também comunicar um leitor óptico ao programa
    que estou fazendo.

    Se puderes me ajudar, ficarei muito grato.

    Gerardo Lope

  11. eu fiz exatamente explicado acima, mas a hora q vou incluir uma pessoa ta dando esse erro aqui: object variable or with block variable nos set, não tendi, já fiz varias mudanças e até agora não deu certo.

  12. estou testando um projeto em vb, mas nao consigo passar de um formulario para outro, como faço para passar de um formulario para outro???
    ex.: form login para form cadastro, tipo isso…

  13. tenho um sistema de automaçao feito em vb com firebird eu queria colocar o banco do sistema on line pois tenho clientes que tem duas lojas e querem unificar o seu banco de dados como se as duas lojas fosse uma
    aguardo retorno obrigado

leia mais
Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: