Você está na página 1de 14

CADASTRO DE CLIENTES – USANDO SUBS, ADAPTER, CONECTION E DATASET

1-ABRA O VISUAL STUDIO.NET


2-CLIQUE EM FILE  NEW  BLANK SOLUTION

3-DIGITE UM NAME PARA A SOLUÇÃO, ESCOLHA A PASTA NO ITEM LOCATION, APÓS


CLIQUE EM OK

4-CLIQUE EM FILE  ADD Project  NEW Project

5-DIGITE UM NOME PARA O PROJETO E AUTOMATICAMENTE ELE IRÁ ENTRAR DENTRO


DA PASTA DA SOLUÇÃO:

1
6-ABRA O MICROSOFT ACCESS, CRIE UM BANCO DE DADOS COM O NOME=
DADOS.MDB E FIQUE ATENTO ONDE ESTÁ SALVANDO-O.
7-CRIE UMA TABELA NO MODO ESTRUTURA COM OS SEGUINTES CAMPOS:
OBS: O CAMPO ID DEVE SER DO TIPO AUTONUMERAÇÃO, POIS NUMERA SOZINHO.

8-SALVE A TABELA COMO CLIENTES. CADASTRE ALGUNS CLIENTES. APÓS FECHE O


ACCESS.
9- DE VOLTA AO VISUAL.NET, NA JANELA TOOLBOX, CLIQUE EM DATA, E ESCOLHA
OLEDBDATAADAPTER. APÓS CLIQUE NO FORMULÁRIO, ISTO IRÁ ABRIR O ASSISTENTE
DE CONFIGURÇÃO DO ADAPTADOR:

10-CLIQUE EM NEXT
11- CLIQUE EM NEW CONNECTION...

2
12-CLIQUE NA GUIA PROVEDOR, ESCOLHA MICROSOFT JET 4.0 OLE DB PROVIDER
13-CLIQUE EM AVANÇAR

14-NA GUIA CONEXÃO, NO ITEM NUMERO 1, CLIQUE NO BOTÃO ... E LOCALIZE SEU
BANCO DE DADOS.

3
15-CLIQUE NO BOTÃO TESTAR CONEXÃO. DEVERÁ APARECER A SEGUINTE MENSAGEM:

16-CLIQUE EM OK, E NO ASSISTENTE DO ADAPTADOR CLIQUE EM NEXT.

17-NA PRÓXIMA TELA DEIXE MARCADO USE SQL STATEMENTS E CLIQUE EM NEXT

4
18-CLIQUE NO BOTÃO QUERY BUILDER

19-NESTA TELA, ESCOLHA A TABELA CLIENTES E CLIQUE EM ADD


20-MARQUE TODAS AS CAIXAS DE CAMPOS DA TABELA, MENOS O CAMPO ALL
COLUMNS.
21-CLIQUE EM OK

22-O CÓDIGO SQL DEVERÁ FICAR ASSIM:

5
23-CLIQUE EM ADVANCED OPTIONS E CERTIFIQUE QUE AS OPÇÕES GENERATE
INSERT, UPDATE AND DELETE STATEMENTS E USE OPTIMISTIC CONCURRENCY
ESTEJAM MARCADAS.

24-CLIQUE EM OK
25-CLIQUE EM FINISH
26-O ADAPTADOR E A CONEXÃO DEVERÃO APARECER NO SEU FORMULÁRIO:

27-AGORA VAMOS CRIAR O DATASET, PARA ISTO CLIQUE COM O BOTÃO DIREITO DO
MOUSE NO ADAPTADOR QUE ESTÁ NA PARTE INFERIOR DO SEU FORMULÁRIO E
CLIQUE EM GENERATE DATASET.

28-A JANELA GENERATE DATASET IRÁ ABRIR:

6
29-ESCOLHA NEW, DIGITE DSCLIENTES E CLIQUE EM OK.
30-O DATA SET IRÁ APARECER AO LADO DA CONEXÃO, RENOMEIE –OS COM OS
SEGUINTES NOMES:

OBS: RETIRE O NUMERO 1 DO DSCLIENTES

31-VEJA O QUE É REALMENTE CADA ITEM:


 DATA ADAPTER
PERMITE DEFINIR UMA INSTRUÇÃO SELECT PARA SELECIONAR A TABELA DO BANCO DE DADOS E
OS CAMPOS QUE ESTARÃO DISPONÍVEIS. O OBJETO DATA ADAPTER SÃO USADOS PARA TROCAR
DADOS ENTRE A FONTE DE DADOS E UM DATASET.

 DATA CONNECTION
PERMITE DEFINIR UM DATA PROVIDER (DATABASE ENGINE) E NOME DO BANCO DE DADOS A SER
ACESSADO. FORNECE AS PROPRIEDADES  PARA ESTABELECER E MODIFICAR O CÓDIGO DO
USUÁRIO, A SENHA E CONFIGURAÇÕES DA CONEXÃO. UM OBJETO DATA CONNECTION É
INCLUÍDO AUTOMATICAMENTE NO SEU PROJETO QUANDO VOCÊ INCLUI UM DATA ADAPTER.

 DATASET
ARMAZENA OS REGISTROS DA TABELA EM UM BANCO DE DADOS DESCONECTADO (CACHE
LOCAL). O DATASET NOS DÁ ACESSO AOS REGISTROS EM UMA TABELA NA QUAL O
DATAADAPTER ESTA LIGADO. IREMOS VINCULAR CAIXAS DE TEXTOS E OUTROS CONTROLES AOS
CAMPOS EXPOSTOS PELO DATASET DE MANEIRA A PODER VISUALIZAR OS REGISTROS DA
TABELA.
32-NÓS PODEMOS VISUALIZAR OS DADOS DA TABELA DO BANCO. PARA ISTO CLIQUE
COM O BOTÃO DIREITO DO MOUSE NO ADAPTADOR E ESCOLHA PREVIEW DATA
33-NA JANELA DATA ADAPTER PREVIEW, CLIQUE EM FILL DATASET, VEJA COMO OS
DADOS IRÃO SER VISUALIZADOS:

7
34-FECHE O PREVIEW, AFINAL SÓ DÁ PRA VISUALIZAR CADASTROS JÁ EFETUADOS E
VOLTAMOS AO FORM.
35- INSIRA OBJETOS DE MODO QUE O FORM FIQUE ASSIM:
OBS: SÃO 9 LABEL, 6 TEXTBOX E 9 BUTTON

36-PROPRIEDADES DOS OBJETOS:

LABELS
OS LABELS NÃO DEVEM SER NOMEADOS, SOMENTE AJUSTADOS O TEXT COMO VISTO
NA FIGURA ACIMA.
EM CIMA DO BOTÃO CANCELA E INCLUIR, EXISTEM 3 LABELS, SENDO QUE O
PRIMEIRO TERÁ O NAME: LBLREG E TEXT EM BRANCO, O SEGUNDO TERÁ O TEXT: DE E
O TERCEIRO TERÁ O NAME: LBLTOTAL E O TEXT EM BRANCO.

TEXTBOXS
OS TEXTBOXS DEVERÃO SER TODOS RENOMEADOS, POIS SÃO NELES QUE OS DADOS
SERÃO EXIBIDOS. OUTRO DETALHE É QUE O TEXT DE TODOS ELES DEVERÁ SER EM
BRANCO.
VAMOS AOS NAMES EM ORDEM SEQUENCIAL: TXTID, TXTNOME, TXTENDERECO,
TXTUF, TXTTELEFONE E TXTNASCIMENTO.OUTRA PROPRIEDADE MUITO IMPORTANTE
QUE DEVERÁ SER AJUSTADA É O DATABINDINGS, QUE É UMA DAS PRIMEIRAS
PROPRIEDADES E SERVE PARA EXIBIR OS DADOS DO BANCO DE DADOS NOS
OBJETOS:

8
COLOQUE EM CADA TEXTBOX O DATABILDINGS CORRESPONDENTE A ELE NA TABELA
DO BANCO DE DADOS. POR EXEMPLO, NO TXTID, O TEXT DO DATABILDINGS SERÁ ID.
COLOQUE EM TODOS OS BUTTONS O READONLY: TRUE.

BUTTONS
OS BOTÕES DEVERÃO SER RENOMEADOS DA SEGUINTE FORMA, EM ODEM
SEQUENCIAL DA ESQUERDA PARA A DIREITA: BTNINICIO, BTNANTERIOR,
BTNPROXIMO E BTNFIM. ESTES BOTÕES ESTÃO COM A PROPRIEDADE IMAGE ATIVADA
E POSSUEM OS ICONES CORRESPONDENTES A CADA AÇÃO, PROCURE ALGUM ÍCONE
PARA OS SEUS. OS DEMAIS BOTÕES: BTNEDITAR, BTNSALVAR, BTNCANCELAR,
BTNINCLUIR E BTNEXCLUIR. AJUSTES OS TEXTS DE CADA UM CONFORME
NECESSÁRIO, EXEMPLO: O BTNEXCLUIR FICARÁ COM TEXT: EXCLUIR E ASSIM POR
DIANTE.

37-AGORA QUE JÁ CRIAMOS A CONEXÃO NECESSÁRIA E QUE JÁ POSSUIMOS O FORM


COM OS OBJETOS CONFIGURADOS, VAMOS AOS CÓDIGOS.

 CÓDIGO APÓS O WINDOWS FORM DESIGNER GENERATED CODE

‘Vamos criar duas Subs, uma verifica a posição em que estamos


‘exibindo seu valor nas label em cima do cancela e incluir
‘A outra trabalha na liberação dos botões de navegação

Sub Local()
‘Exibe nos Label a posição atual e a Total
Me.Lblreg.Text = Me.BindingContext(Me.DsClientes, "Clientes").Position + 1
'A propriedade Count de BindingContext é sempre igual ao total de registros
Me.Lbltotal.Text = Me.BindingContext(Me.DsClientes, "Clientes").Count
End Sub

Sub TravarBotoes()
'Quando a propriedade Position é igual a propriedade Count menos 1 (-1)
‘alcançamos o último registro
' Vamos desabilitar os botões btnProximo e btnFim
‘O _ (Underline) permite continuar um código na outra linha.
‘Mas não esqueça de dar um espaço antes dele
If Me.BindingContext(Me.DsClientes, "Clientes").Position = _
Me.BindingContext(Me.DsClientes, "Clientes").Count - 1 Then
Me.BtnProximo.Enabled = False
Me.BtnFim.Enabled = False
Else 'Senão habilita os botões btnProximo e btnFim.
Me.BtnProximo.Enabled = True
Me.BtnFim.Enabled = True
End If

'Quando a propriedade Position for igual a 0 chegamos no ínicio do da tabela


' então desabilitamos os botões btnAnterior e btnInicio.
If Me.BindingContext(Me.DsClientes, "Clientes").Position = 0 Then
Me.BtnAnterior.Enabled = False
Me.BtnInicio.Enabled = False
Else 'Senão habilitamos os botões btnAnterior e btnInicio .

9
Me.BtnAnterior.Enabled = True
Me.BtnInicio.Enabled = True
End If
End Sub

 CÓDIGO DO LOAD DO FORM1

'Limpamos o data set antes de preenche-lo


Me.DsClientes.Clear()
'O método Fill do Data Adapter preenche o data set ligado a ele
'Cuidado pois o nome entre "" deve ser exatamente o nome da tabela no Access
Me.odaClientes.Fill(Me.DsClientes, "Clientes")
'chama a função que verifica os botões
TravarBotoes()
'chama a função que indica em que registro estamos
Local()
‘Perceba que ao chamar usamos apenas o nome

 CÓDIGO DO BTNPRÓXIMO_CLICK

'incrementa a porpriedade Position do Binding Context para ir ao próximo registro


'No primeiro registro o Position é igual a 0
Me.BindingContext(Me.DsClientes, "Clientes").Position += 1
'chama a função que verifica os botões
TravarBotoes()
'chama a função que indica em que registro estamos
Local()

 CÓDIGO DO BTNANTERIOR_CLICK

‘Volta um registro
Me.BindingContext(Me.DsClientes, "Clientes").Position -= 1
'chama a função que verifica os botões
TravarBotoes()
'chama a função que indica em que registro estamos
Local()

 CÓDIGO DO BTNINICIO_CLICK

‘Leva o Binding Context para 0, ou seja, inicio


Me.BindingContext(Me.DsClientes, "Clientes").Position = 0
'chama a função que verifica os botões
TravarBotoes()
'chama a função que indica em que registro estamos
Local()

 CÓDIGO DO BTNFIM_CLICK

'A propriedade count - 1 é o ultimo registro, o ultimo seria um registro em branco


‘Lembre-se o _ (Underline) permite continuar na próxima linha
Me.BindingContext(Me.DsClientes, "Clientes").Position = _

10
Me.BindingContext(Me.DsClientes, "Clientes").Count - 1
'chama a função que verifica os botões
TravarBotoes()
'chama a função que indica em que registro estamos
Local()

 CÓDIGO DO BTNINCLUIR_CLICK

‘Manipula os botões deixando só o salvar e cancelar abertos


Me.BtnInicio.Enabled = False
Me.BtnAnterior.Enabled = False
Me.BtnProximo.Enabled = False
Me.BtnFim.Enabled = False
Me.BtnSalvar.Enabled = True
Me.BtnCancelar.Enabled = True
Me.BtnEditar.Enabled = False
Me.BtnExcluir.Enabled = False
Me.BtnIncluir.Enabled = False
‘Coloca o Label na posição atual
Me.Lblreg.Text = Me.BindingContext(Me.DsClientes, "Clientes").Position
'O método AddNew inclui um novo registro (linha) na tabela
Me.BindingContext(Me.DsClientes, "Clientes").AddNew()
‘Habilita as caixas para serem digitadas
‘O Read Only significa “Somente Leitura”
Me.TxtNome.ReadOnly = False
Me.TxtEndereco.ReadOnly = False
Me.TxtUf.ReadOnly = False
Me.TxtNascimento.ReadOnly = False
Me.TxtTelefone.ReadOnly = False
‘Coloca o foco no Nome do cliente
Me.TxtNome.Focus()
‘Chama a função que verifica o local em que estamos na tabela
Local()

 CÓDIGO DO BTNEDITAR_CLICK

‘Manipula os botões deixando apenas Salvar e cancelar


Me.BtnEditar.Enabled = False
Me.BtnIncluir.Enabled = False
Me.BtnCancelar.Enabled = True
Me.BtnSalvar.Enabled = True
'desabilita o botão de navegação para forcar o usuario a completar a edição
‘Ele ira completar salvando ou cancelando
Me.BtnInicio.Enabled = False
Me.BtnAnterior.Enabled = False
Me.BtnProximo.Enabled = False
Me.BtnFim.Enabled = False
'define as propriedades ReadOnly dos textboxes para False para permitir edicao
Me.TxtNome.ReadOnly = False
Me.TxtEndereco.ReadOnly = False
Me.TxtUf.ReadOnly = False
Me.TxtNascimento.ReadOnly = False

11
Me.TxtTelefone.ReadOnly = False
'poe o foco no textobx nome
Me.TxtNome.Focus()

 CÓDIGO DO BTNEXCLUIR_CLICK

‘Cria uma variável do tipo Integer, ou seja, numero inteiro


Dim iResponse As Integer
'sempre confirmar a exclusao de um registro pois ela não tem retorno
‘Lembre-se _ permite continuar abaixo
‘A variável fica igual a mensagem
iResponse = MessageBox.Show("Confirma a exclusção deste registro ?", _
"Confirma Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
‘Se na variável for clicado em Ok, ou seja, na mensagem
If iResponse = vbYes Then
'usei o método RemoveAt para excluir o registro
Me.BindingContext(Me.DsClientes, "Clientes").RemoveAt _
(Me.BindingContext(Me.DsClientes, "Clientes").Position)
End If
‘Manipula os botões
Me.BtnSalvar.Enabled = False
Me.BtnCancelar.Enabled = False
Me.BtnInicio.Enabled = True
Me.BtnAnterior.Enabled = True
Me.BtnProximo.Enabled = True
Me.BtnFim.Enabled = True
Me.BtnIncluir.Enabled = True
Me.BtnEditar.Enabled = True
‘Chama as funções
Local()
TravarBotoes()
'Para escrever as alterações de um registro para o banco de dados
‘Você deve chamar o método Update do DataAdapter
Me.odaClientes.Update(DsClientes)

 CÓDIGO DO BTNCANCELAR_CLICK

‘Manipula os botões
Me.BtnEditar.Enabled = True
Me.BtnIncluir.Enabled = True
Me.BtnCancelar.Enabled = False
Me.BtnSalvar.Enabled = False
Me.BtnExcluir.Enabled = True
‘Cancel Edit cancela a edição ou um novo cadastro
Me.BindingContext(Me.DsClientes, "Clientes").CancelCurrentEdit()
‘Desabilita as caixas
Me.TxtNome.ReadOnly = True
Me.TxtEndereco.ReadOnly = True
Me.TxtUf.ReadOnly = True
Me.TxtNascimento.ReadOnly = True
Me.TxtTelefone.ReadOnly = True
Me.BtnInicio.Enabled = True

12
Me.BtnAnterior.Enabled = True
Me.BtnProximo.Enabled = True
Me.BtnFim.Enabled = True
‘Chama as funções
Local()
TravarBotoes()

 CÓDIGO DO BTNSALVAR_CLICK

‘Cria uma variavel para sustentar a posição atual antes de salvar


‘Esta variável vai ser usada para salvar e abrir no mesmo lugar depois
Dim Atual As Integer = Me.BindingContext(Me.DsClientes, "Clientes").Position
'O método EndCurrentEdit do objeto BindingContext completa a edição
Me.BindingContext(Me.DsClientes, "Clientes").EndCurrentEdit()
'Usei o método HasChanges do Dataset
‘Para estar certo de que o registro foi modificado antes
'De gastar recursos efetuando um Update na fonte de dados.
‘Se HasChanges retorna True alguma modificação foi feita.
If Me.DsClientes.HasChanges() = True Then
'Para escrever as alterações de um registro para o banco de dados
‘ Você deve chamar o método Update do DataAdapter
Me.odaClientes.Update(DsClientes)
'Após editar um registro você precisa preencher o Data Set novamente.
‘ Antes de fazer isto sempre limpe o Data Set
Me.DsClientes.Clear()
'O método Fill do Data Adapter preenche todos os datasets vinculados a ele
Me.odaClientes.Fill(Me.DsClientes, "Clientes")
‘ Manipula as caixas e os botões
Me.TxtNome.ReadOnly = True
Me.TxtEndereco.ReadOnly = True
Me.TxtUf.ReadOnly = True
Me.TxtNascimento.ReadOnly = True
Me.TxtTelefone.ReadOnly = True
Me.BtnInicio.Enabled = True
Me.BtnAnterior.Enabled = True
Me.BtnProximo.Enabled = True
Me.BtnFim.Enabled = True
Me.BtnEditar.Enabled = True
Me.BtnSalvar.Enabled = False
Me.BtnCancelar.Enabled = False
Me.BtnIncluir.Enabled = True
Me.BtnExcluir.Enabled = True
‘ Lembra da variavel lá do começo ?
‘ Pois bem, ao usar o Fill novamente você vai pro primeiro registro
‘ Usando esta linha abaxio você fica onde estava, entendeu ?
Me.BindingContext(Me.DsClientes, "Clientes").Position = Atual
‘ Chama as funções
Local()
TravarBotoes()
‘ Caso não houve alteração no Dataset
Else

13
‘ Exibe uma mensagem de erro
MsgBox("Houve algum erro na hora de salvar o registro", _
MsgBoxStyle.Information, "Erro Salvando")
End If

OBS: PERCEBA COMO FOI UTIL UTILIZAR AS FUNÇÕES. IMAGINA O TANTO DE CÓDIGO
QUE ECONOMIZAMOS, POIS CASO ELAS NÃO EXISTISSEM DEVERIAMOS FAZER O
CÓDIGO DE CADA FUNÇÃO DENTRO DE CADA BLOCO DE CÓDIGO.

14

Você também pode gostar