Você está na página 1de 6

VB - Programao com Banco de

dados : DAO, ADO, ODBC (reviso)


Eu sei que tem muita gente que ainda usa o Visual Basic 6 e que existem muitos sistemas
desenvolvidos nesta linguagem que vo precisar de manuteno por muito tempo.
Lembrar disso me faz no abandonar totalmente a essa verso anterior do VB .NET.
No h como negar que o VB .NET muito superior em recursos alm de contar com uma
ferramenta gratuita a disposio de quem desejar aprender a linguagem: basta baixar a
verso Express do Visual Basic .NET.
Se voc ainda no tem baixe neste link: http://www.microsoft.com/visualstudio/enus/products/2010-editions/visual-basic-express
Se voc desejar porta a sua verso para a lingua portuguesa baixe o pacote aqui:
http://www.microsoft.com/downloads/details.aspx?FamilyID=7ee0d8a7-32fb-407d-a010da3a7d93fc2f&displaylang=pt-br
Se voc ainda usa ou pretende usar a linguagem Visual Basic pode consultar a seo Visual
Basic do site Macoratti.net onde encontrar centenas de artigos que o ajudaro no seu dia
a dia.
Hoje eu vou mostrar novamente os conceitos bsicos para programao com banco de
dados usando o Visual Basic 6. um resumo que mostra como se conectar e manipular um
banco de dados usando o bom e velho Visual Basic ou VB. (Os exemplos mostrados aqui
tambm funcionaro com a linguagem VBA com pequenos ajustes)
Existem vrias maneiras de se conectar a um banco de dados (por exemplo, Access, SQL
Server, etc.): atravs de controles de dados vinculados, DAO ou ADO.
Em geral, se voc pretende ou gosta de ter mais controles sobre o que esta acontecendo o
aconselhvel usar DAO ou ADO e no site voc tem dezenas de artigos que mostram como
fazer isso.
Vamos ento ao resumo...

Introduo
H vrias maneiras para abrir um objeto Connection da ADO:
Definir a propriedade ConnectionString para string de conexo vlida e , a seguir,
chamar o mtodo Open().(Este seqncia de conexo depende do provedor).
Passar uma string de conexo vlida o primeiro argumento do mtodo Open();
Passar um objeto comando vlido para o primeiro argumento do mtodo Open do

Recordset;
Passar o nome da fonte dados ODBC e, opcionalmente, a identificao de usurio e a
senha para o mtodo Open() do objeto de conexo;
H trs maneiras de abrir um objeto Recordset da ADO:
Abrir o Recordset via mtodo Connection.Execute()
Abrir o Recordset via mtodo Command.Execute()
Abrir o objeto Recordset sem um objeto Connection ou Commad e passar uma
cadeia de conexo vlida para o segundo argumento do mtodo
Recordset.Open().

1- Definindo variveis bsicas


Para comear, voc precisa criar algumas variveis dos seguintes tipos :
ADODB.Connection - Usada se voc estiver usando processos de transao;
DataBase - Usada para se conectar ao banco de dados;
ADODB.Recordset - Esta a varivel usada a nvel de tabela/consulta
ADODB.Field - Isso nos permite obter informaes sobre os campos

2- Conexo com banco de dados


Usando o VB podemos nos conectar usando o Jet ou o ODBC. O recomendado usar o JET
pois o ODBC mais lento.
Podemos tambm escolher entre as tecnologias ADO ou DAO. Embora a primeira seja mais
moderna a DAO em alguns casos tem um desempenho melhor.
Dim ws as Workspace
Dim db as Database
Set ws=DBEngine.Workspaces(0)
set db=ws.OpenDatabase((nome caminho do banco de dados))

DAO JET

Dim ws as Workspace
dim db as database
dim strConnection as string
set ws=DBEngine.Workspaces(0)
let strConnection= "ODBC;DSN=" & nomeBancoDados & ";UID=" & nomUsuario &
";PWD=" & senha
set db=ws.OpenDatabase("", False, False, strConnection)
Dim ad as ADODB.Connection
set ad=New ADODB.Connection

DAO ODBC

Let ad.ConnectionString= "ODBC;DSN=" & nomeBancoDados & ";UID=" &

ADO

nomUsuario & ";PWD=" & senha


ad.Open

3- Abrindo uma Tabela/Consulta ou Viso(View)


Dim rs as recordset
set rs=db.openrecordset(nome da tabela ou comando SQL)
do while not rs.eof
'Ponha aqui o cdigo para tratar a informao.
'A informao do campo pode ser acessado pelo nome do campo
intID=rs!IDField
'Ou pelo nmero do ndice na relao de campos(iniciando com 0)
intString=rs.Field(1)
'move-se para o prximo registro
rs.movenext
loop

DAO

dim ar as ADODB.recordset
set rs=new adodb.recordset
rs.open (instruo SQL)
do while not rs.EOF
'Ponha aqui o cdigo para tratar a informao.
'A informao do campo pode ser acessado pelo nome do campo
intID=rs!IDField
'Ou pelo nmero do ndice na relao de campos(iniciando com 0)
intString=rs.Field(1).value
'move-se para o prximo registro
rs.movenext
loop

ADO

4- Alterando um registro
- Para o editar/adicionar/excluir um registro podemos usar instrues SQL ou comandos
diretos.
- Tanto a tecnologia DAO como a ADO podem usar o mtodo Execute para fazer
atualizaes via SQL.
- Podemos ainda usar procedimentos armazenados ou stored procedures que tem um
desempenho melhor.

a- Alterando um registro - Incluso usando SQL

Dim rs as recordset
set rs=db.openrecordset((nome da tabela ou SQL))
rs.execute "INSERT INTO nome_da_tabela(ID,Nome) VALUES (10,'Macoratti')"
dim rs as ADODB.recordset

DAO

set rs=new adodb.recordset


ADO
rs.open (string de conexo com o banco de dados)
rs.execute "INSERT INTO nome_da_tabela(ID,Nome) VALUES (10,'Macoratti')"
Estamos incluindo os campos ID e Nome.

b- Alterando um registro - Incluso


Dim rs as recordset
set rs=db.openrecordset((nome da tabela ou SQL))
rs.addnew
DAO
rs!ID=intID
rs!Nome=strNome
rs.update
Dim ar as ADODB.recordset
set ar=new adodb.recordset
ar.open (string de conexo com o banco de dados)
ADO
ar.addnew
ar!ID=intID
ar!Nome=strNome
ar.update
Neste exemplos aps abrir um recordset verificamos se h um registro que satisfaz os
critrios no SQL aberto. Se no ele existir criado um novo registro usando a instruo
addnew e em seguida a instruo update.

c- Alterando um registro - Editar


Dim rs as recordset
set rs=db.openrecordset("SELECT * FROM nome_da_tabela WHERE ID=10")
if rs.eof then
rs.addnew
else
DAO
rs.edit
end if
rs!ID=intID

rs!Nome=strNome
rs.update
dim ar as ADODB.recordset
set ar=new adodb.recordset
ar.open "SELECT * FROM nome_da_tabela WHERE ID=10"
if ar.eof then
ar.addnew
else
ar.edit
end if
ar!ID=intID
ar!Nome=strNome
ar.update

ADO

d- Alterando um registro - Excluso


Dim rs as recordset
set rs=db.openrecordset("SELECT * FROM nome_da_tabela WHERE ID=10")
DAO
if not rs.eof then
rs.delete
end if
Dim ar as ADODB.recordset
set ar=new adodb.recordset
ar.open "SELECT * FROM nome_da_tabela WHERE ID=10"
if not ar.eof then
ar.delete
end if

ADO

Recomendao final :
Ao abrir um objeto voc deve sempre fechar e liberar o recurso usado:

rs.close
set rs=nothing
1Pedro 1:13 Portanto, cingindo os lombos do vosso entendimento, sede
sbrios, e esperai inteiramente na graa que se vos oferece na revelao de
Jesus Cristo.
1Pedro 1:14 Como filhos obedientes, no vos conformeis s concupiscncias
que antes tnheis na vossa ignorncia;
1Pedro 1:15 mas, como santo aquele que vos chamou, sede vs tambm
santos em todo o vosso procedimento;

Referncias:
Seo VB .NET do Site Macoratti.net
Super DVD .NET - A sua porta de entrada na plataforma .NET
Super DVD Vdeo Aulas - Vdeo Aula sobre VB .NET, ASP .NET e C#
Acessando uma base de dados Access 2000 com DAO.
DAO x ADO tabela de referncia.
ADO ou DAO - Tira-Teima
Acesso a base de dados via D.A.O - Data Access ... - Macoratti.net
Migrando da DAO para a ADO - Macoratti.net
Recordsets - Macoratti.net
ADO - introduo. - Macoratti.net
ADO - Localizando informaes - Macoratti.net
Usando ADO - 1) Conectando-se e Navegando em ... - Macoratti.net
ADO - Objeto Connection - Macoratti.net
ADO - Melhorando o desempenho de sua aplicao - Macoratti.net
Apostila compilada com exemplos dos artigos do site Macoratti .net - (269
pginas)
Apostila - Acessando um banco de dados via DAO - VB6
Jos Carlos Macoratti

Você também pode gostar