Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
de Dados Parte 01
Ol pessoal! Antes do incio, queria
avisar que estou tentando responder a todos os e-mails,
o mais rpido possvel, e podem aguardar que responderei
a todos.
Essa semana vamos iniciar a abordagem sobre conexo
com banco de dados, usado amplamente no dia-a-dia do programador.
Sero usados nesta e nas prximas colunas os bancos
ACCESS 2000/97, MS-SQL Server e MYSQL. O tipo de conexo
a ser utilizada ser a string para conexo ADO.
Para exemplificar esses trs tipos de conexo,
vamos criar uma aplicao simples de Agenda Telefnica.
Nesta primeira parte vamos usar o banco ACCESS.
Crie um banco com o nome de agenda.mdb e com as seguintes
caractersticas:
Tabela: pessoal
Campo
Tipo
Tamanho
codigo
AutoNumber
nome
Text
50
end
Text
100
fone
Text
25
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 Incluso:
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 Alterao:
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:
Then
Call limpar
Else
MsgBox "Erro na atualizao.", vbCritical
End If
End Sub
Boto Consultar:
Private Sub cmdConsultar_Click()
Dim intCodigo As
Integer
intCodigo = InputBox("Digite o Cdigo", "Consulta")
Consultar (intCodigo)
End Sub
Boto Excluir:
Private Sub cmdExcluir_Click()
Dim excluido As
Variant
excluido = Excluir(lblCod.Caption)
If excluido = True
Then
Call limpar
Else
MsgBox "Erro na excluiso.", vbCritical
End If
End Sub
Boto 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 incluiso.", vbCritical
End If
End Sub
Funo limpar:
Private Sub limpar()
lblCod.Caption = ""
txtNome.Text = ""
txtEnd.Text = ""
txtFone.Text = ""
End Sub
Boto 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 conexo para SQL Server e tambm vamos usar
procedures.
Abraos a todos e at a prxima
coluna.
@nome varchar(50),
@endereco varchar(100),
@fone varchar(25))
AS
SET NOCOUNT ON
UPDATE pessoal SET
nome = @nome, endereco = @endereco, fone = @fone
WHERE codigo = @codigo
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS
ON
GO
Procedure de Excluso:
( nome arq. p_Excluir.sql )
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS
ON
GO
if exists (select
* from sysobjects
where id = object_id(N[dbo].[p_Excluir])
and OBJECTPROPERTY(id,
NIsProcedure) = 1)
drop procedure [dbo].[p_Excluir]
GO
CREATE PROCEDURE p_Excluir
(@codigo int)
AS
SET NOCOUNT ON
DELETE FROM pessoal
WHERE codigo = @codigo
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS
ON
GO
Procedure de Consulta:
( nome arq. p_Consultar.sql )
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS
ON
GO
if exists (select
* from sysobjects
where id = object_id(N[dbo].[p_Consultar])
and OBJECTPROPERTY(id,
NIsProcedure) = 1)
drop procedure [dbo].[p_Consultar]
GO
CREATE PROCEDURE p_Consultar
(@codigo int)
AS
SET NOCOUNT ON
SELECT * FROM
pessoal
WHERE codigo = @codigo
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS
ON
GO
Depois de todas as procedures criadas prcisamos
enseri-las no banco SQL Server, ento clique na seta verde
do Query Analyzer ou precione F5 como mostra a figura abaixo:
Set rs = New
ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
ConectaSQL = "Driver={SQL Server};" & _
"Server=LUKINFO;" & _
"Database=iMasters;" & _
"Uid=sa;Pwd=;"
cn.Open ConectaSQL
End Sub
Rotina de Incluso:
Public Function Inserir(ByVal
strNome As String, _
strEnd As String, _
strFone As String) As
Variant
Dim cmdI As
ADODB.Command
Set cmdI = New ADODB.Command
With cmdI
.ActiveConnection = cn
.CommandText = "p_Inserir"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
50, strNome)
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
100, strEnd)
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
25, strFone)
.Execute
End With
Set cmdI = Nothing
Inserir = True
End Function
Rotina de Alterao:
Public Function Alterar(ByVal
intCodigo As Integer, _
strNome As String, _
strEnd As String, _
strFone As String) As
Variant
Dim cmdA As
ADODB.Command
Set cmdA = New ADODB.Command
With cmdA
.ActiveConnection = cn
.CommandText = "p_Alterar"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adInteger, adParamInput,
, intCodigo)
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
50, strNome)
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
100, strEnd)
.Parameters.Append .CreateParameter(, adVarChar, adParamInput,
25, strFone)
.Execute
End With
Set cmdA = Nothing
Alterar = True
End Function
Rotina de Consulta:
Public Function Consultar(ByVal
intCodigo As Integer) As
Variant
Set rs = CreateObject("ADODB.Recordset")
Dim cmdC As
ADODB.Command
Set cmdC = New ADODB.Command
With cmdC
.ActiveConnection = cn
.CommandText = "p_Consultar"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adInteger, adParamInput,
, intCodigo)
Set rs = .Execute
End With
With rs
If .EOF Then
MsgBox "Cdigo Invlido", vbExclamation,
"Erro"
Else
frmAgenda.lblCod = !codigo
frmAgenda.txtNome = IIf(IsNull(!nome), Empty,
!nome)
frmAgenda.txtEnd = IIf(IsNull(!Endereco), Empty,
!Endereco)
frmAgenda.txtFone = IIf(IsNull(!fone), Empty,
!fone)
End If
.Close
End With
Set cmdC = Nothing
End Function
Rotina de Excluso:
Public Function Excluir(ByVal
intCodigo As Integer) As
Variant
Dim cmdE As
ADODB.Command
Set cmdE = New ADODB.Command
With cmdE
.ActiveConnection = cn
.CommandText = "p_Excluir"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adInteger, adParamInput,
, intCodigo)
.Execute
End With
Set cmdE = Nothing
Excluir = True
End Function
Para que esse cdigo que acabamos de digitar
tenha efeito necessrio fazer uma referncia
ao ADO, ento clique em Project/References e escolha
a opo "Micrisoft ActiveX Data objects 2.6
Library", como mostra a figura abaixo:"
Else
MsgBox "Erro na atualizao.", vbCritical
End If
End Sub
Boto Consultar:
Private Sub cmdConsultar_Click()
Dim intCodigo As
Integer
intCodigo = InputBox("Digite o Cdigo", "Consulta")
Consultar (intCodigo)
End Sub
Boto Excluir:
Private Sub cmdExcluir_Click()
Dim excluido As
Variant
excluido = Excluir(lblCod.Caption)
If excluido = True
Then
Call limpar
Else
MsgBox "Erro na excluiso.", vbCritical
End If
End Sub
Boto 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 incluiso.", vbCritical
End If
End Sub
Funo limpar:
Private Sub limpar()
lblCod.Caption = ""
txtNome.Text = ""
txtEnd.Text = ""
txtFone.Text = ""
End Sub
Boto Sair
Private Sub cmdSair_Click()
cn.Close
Set cn = Nothing
Unload Me
End Sub
Para finalizar, clique em ProjectAgendaSQL Proprerties
e em Startup Object: troque frmAgenda por Sub Main.
Semana que vem iniciaremos o exemplo desse projeto
com conexo para MySQL.
Abraos a todos e at a prxima
coluna.