colégio técnico “antônio teixeira fernandes” cti

Propaganda
COLÉGIO TÉCNICO “ANTÔNIO TEIXEIRA FERNANDES”
CTI - UNIVAP
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Sumário
3º Bimestre:
32 - Conceitos iniciais de Banco de Dados
.........................................................
33 – Sistemas Gerenciadores de Bancos de Dados....................................................
34 – ADO.NET .........................................................................................................
34.1 – Criando um banco de dados SQL-SERVER .....................................................
34.2 – Criando tabelas no banco de dados SQL-SERVER .............................................
34.3 – PROJETO CLIENTES ...........................................................................................
34.4 – Carregando dados de tabela em Caixas de Listagens .........................................
34.5 – Objetos de acesso a bancos de dados ADO.NET ................................................
34.5.1 – Objetos Connection ............................................................................................
34.5.2 – Objetos Command .......................................................................................
34.5.3 – Objetos DataReader .....................................................................................
101
102
102
103
107
110
122
125
125
125
126
4º Bimestre:
35 – Caixas de Diálogos ...................................................................................................
35.1 – Caixa de Diálogo ABRIR... .....................................................................................
35.2 – Caixa de Diálogo SALVAR .....................................................................................
35.3 – Caixa de Diálogo CORES.......................................................................................
35.4 – Caixa de Diálogo FONTE..... ............................................................................
35.5 – Programa Caixas de Diálogo ............................................................................
36 – Objeto WebBrowser ............................................................................................
37 – Manipulação de arquivo texto no vb.net ...............................................................
37.1 – A classe System.IO ..........................................................................................
.
37.2 – Criando o arquivo texto ....................................................................................
.
37.3 - Escrevendo num arquivo texto ..........................................................................
.
37.4 – Abrindo um arquivo para leitura .........................................................................
37.5 – Lendo um arquivo texto SEQUENCIALMENTE (Método ReadLine) ......................
37.6 – Lendo TODO arquivo texto (Método ReadToEnd) ..................................................
37.7 – Programa GeraArquivoTexto ...................................................................................
38 – Classe FileSystem (manipulando arquivos) e executanto arquivos .exe ...................
39 – Criação de Barras de Menu .......................................................................................
127
128
129
130
131
132
135
139
139
139
140
140
140
141
141
144
145
ANEXO 1- Novo projeto CLIENTES (3º BIMESTRE)......................................................
150
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
3º BIMESTRE
31 – CONCEITOS INICIAIS DE BANCO DE DADOS
Antes de começarmos a trabalhar com banco de dados, devemos conhecer alguns conceitos
importantes, a saber:
•
BANCO DE DADOS: Coleção organizada de informações, armazenadas em um ou mais arquivos OU
TABELAS (entidades).
•
TABELAS (ou Entidades): Formada por campos (Atributos).
•
CAMPOS (ou Atributos): Colunas que armazenarão dados.
•
DADO: Especifica o conteúdo armazenado em cada campo da tabela.
•
REGISTRO (ou Tupla): Coleção de todos os dados armazenados nas LINHAS da tabela.
•
DOMÍNIOS: Coleção de todos os dados gravados em cada COLUNA da tabela.
•
CHAVE PRIMÁRIA: Impede a duplicação de registros na tabela e também facilita a busca de um
registro. Existem dois tipos de chaves primárias, a saber:
•
o
Chave Primária Simples: Somente um campo da tabela é usado para chave primária;
o
Chave Primária Composta: Dois ou mais campos da tabela compõe a chave primária;
CHAVE ESTRANGEIRA: Um ou mais campos utilizados em uma tabela filho para receber dados de
uma tabela pai. A QUANTIDADE DE CAMPOS que irá compor a chave estrangeira é definida pela
quantidade de campos definidos como chave primária na tabela pai. Portanto, se a tabela pai possui
uma chave primária composta por 3 campos, a chave estrangeira, na tabela filho, terá obrigatoriamente
3 campos do mesmo tipo e tamanho que os definidos na tabela pai. Estudaremos este conceito na
prática, mais adiante, não se preocupe.
A figura abaixo ilustra alguns conceitos citados acima:
Curso de Informática – Cti / UniVap
Página
Figura 137
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
33 – SISTEMAS GERENCIADORES DE BANCOS DE DADOS
Sistemas Gerenciadores de Bancos de Dados são software´s capazes de manter a integridade dos
dados armazenados num banco de dados.
Os bancos de dados mais utilizados pelos analistas de sistemas e programadores são:
•
ACCESS
•
SQL-SERVER
•
MYSQL (gratuíto)
•
POSTGRE (gratuíto)
•
PARADOX
•
INTERBASE
•
FIREBIRD (gratuíto)
•
ORACLE (mais caro do mercado)
•
Entre outros
É importante saber que todos os bancos de dados utilizam uma linguagem para manipulação dos
registros armazenados. Esta linguagem é a SQL, ou Transact-SQL (STRUCTURED QUERY LANGUAGE).
As linguagens de programações atuais, entre elas o Visual Basic .NET, permitem que os
programadores cadastrem, alterem, excluam e consultem registros, utilizando comandos da SQL.
Não confunda um arquivo de banco de dados com um programa desenvolvido numa linguagem
qualquer. Deste ponto para frente da matéria trabalharemos com arquivos de banco de dados e os programas
desenvolvidos para gravar, excluir, consultar e alterar os registros gravados no banco.
Com o vb.net, podemos criar o arquivo de banco de dados, tabelas e seus campos, com estrutura de
arquivos do SQL-SERVER. Este procedimento irá gerar um arquivo para armazenar os registros gerados pelo
seu programa.
34 – ADO.NET
O ADO.NET é um dos meios de acesso a registros de um banco de dados.
Nesta apostila iremos manter (cadastrar / alterar / excluir / consultar) registros num banco de dados
utilizando os recursos de acesso a dados do ADO.NET via código. Todos estes recursos estão presentes no
Utilizaremos a estrutura do banco de dados SQL-SERVER, para cadastro de registros em tabelas que
serão criadas.
Curso de Informática – Cti / UniVap
Página
Namespace System.Data do ADO.NET.
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Mais adiante conheceremos a fundo os componentes do ADO.NET. Porém, para título de
conhecimento incial saibamos que o ADO.NET é composto basicamente pelos seguintes componentes:
•
DataSet
• Provedor .NET que é um conjunto de componentes que inclui os objetos:
o Connection,
o Command,
o DataReader,
o e DataAdapter.
O ADO.NET atual pode acessar dados de três maneiras:
•
OLE DB,
•
SQL
•
e ODBC (implementado mais recentemente).
Cada objeto possui uma versão para cada uma das maneiras mencionadas acima; assim temos o
objeto OleDataAdapter e SqlDataAdapter
Todos os recursos ADO.NET são oferecidos através dos Namespaces (espaços de nomes) da
biblioteca de nomes da classe .NET.
•
System.Data - (Dados do sistema) - contém as classes fundamentais para gerenciar dados
como DataSet e DataRelation .
•
System.Data.Common - (Dados comuns de Sistema) - Possui classes bases que são herdadas
por outras classes.
•
System.Data.OleDb - Possui classes usadas para realizar conexão com o provedor OLE DB.
•
System.Data.SqlClient - Possui classes para conexão com um banco de dados SQL Server via
interface TDS (Tabular Data Stream)
•
System.Data.SqlTypes - (Dados de sistema Tipos SQL) - inclui tipos adicionais de dados que
não são fornecidos pelo .NET.
34.1 – Criando um banco de dados SQL-SERVER
Para fins de aprendizado, vamos contruir um projeto para manipular registros de clientes. Para isso,
vamos definir os campos que deveremos ter na tabela CLIENTES. Veja abaixo:
CAMPO
TIPO DE DADO
INTEIRO
NOMECLI
CHAR
SALARIOCLI
REAL
SEXOCLI
CHAR
NASCIMENTOCLI
DATETIME
CHAVE PRIMÁRIA
#
40
1
Curso de Informática – Cti / UniVap
Página
CODCLI
TAMANHO
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Vamos seguir os passos abaixo para criação de um banco de dados com estrutura do SQL-SERVER e
a tabela anterior, assim dando início aos estudos sobre acessos e criação a banco de dados.
a) Primeiramente abra o VB.net;
b) Em seguida, clique com o botão direito do mouse sobre o nome do projeto na janela “Solution
Explorer” e siga os passos ilustrados na figura abaixo:
Figura 138
OU ENTÃO, entre no menu “Project”, escolha a opção “New Item”.
Logo em seguida surgirá a seguinte janela:
Curso de Informática – Cti / UniVap
Página
Figura 139
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
c) Na janela anterior, selecione o item “Service-based Database” e digite no campo “NAME” o nome
do banco de dados que será criado. Veja abaixo um exemplo, aqui estamos criando o banco
LOJA.MDF:
Figura 140
d) Dando seguimento, clique no botão “Add”, visto na figura acima. Sugirá a seguinte tela. Oobserve
os pontos destacados pela linha vermelha:
Figura 141
Curso de Informática – Cti / UniVap
Página
e) Clique no botão “Finish”, na janela acima.
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
f)
Se tudo deu certo, conforme descrito nos passos anteriores, após clicar no botão “Finish”,
aparecerá na janela solution explorer, os seguintes itens:
Figura 142
g) Agora basta clicar com o botão direito do mouse sobre o icone “Loja.mdf”, conforme exemplo
abaixo. Quando surgir o submenu selecione a opção “Open”. Diante desses passos surgirá a
aparecerá a janela “Server Explorer”. Veja abaixo:
Figura 143
h) Caso a janela “Server Explorer” não apareça, basta entrar no menu “View” e clicar na opção
“Solution Explorer”, conforme a próxima ilustração:
Curso de Informática – Cti / UniVap
Página
Figura 144
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
34.2 – Criando tabelas no banco de dados SQL-SERVER
Estando com a janela “Solution Explorer” aberta no seu projeto, vamos agora criar a tabela
“CLIENTES” no banco de dados “Loja.mdf”. Para isso, seguiremos os seguintes passos:
a) Primeiramente clique com o botão direito do mouse sobre o objeto “Tables” do banco de dados
“Loja.mdf”, localizado na janela “Solution Explorer”. No submenu que surgir, clique na opção “Add
New Table”, conforme figura abaixo:
Figura 145
b) Deverá surgir a seguinte área de criação/edição de tabelas na tela, destacada em vermelho abaixo:
Curso de Informática – Cti / UniVap
Página
Figura 146
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
A área anterior é destinada a criação/edição da estrutura da tabela. Preencha-a com os seguintes
dados, para criação da tabela “CLIENTES” (de acordo com a estrutura definida anteriormente, no item 34.1
desta apostila):
Figura 147
OBSERVAÇÕES SOBRE O PREENCHIMENTO ACIMA:
•
Na coluna “Column Name” informe o nome dos campos da tabela “clientes”;
•
Na coluna “Data Type”, informe o tipo de dado de cada campo;
•
Na coluna “Allow Nulls”, informe se o campo permitirá cadastrar os registros sem a informação do referido
campo. Se caixa de seleção estiver SELECIONADA, está indicando que o dado não será obrigatório, ou
seja, permitirá vazio no momento do cadastro de um registro.
•
Para criar a CHAVE PRIMÁRIA, basta selecionar o(s) campo(s) que irá(ão) compor a chave, e em
seguida, clicar no botão
. Este procedimento fará aparecer o ícone de uma chave, ao lado dos campos
definidos como chave primária, na área de criação da tabela.
c) Depois de preenchida a área de criação de estrutura da tabela, podemos fechá-la. Porém, ao
(“Save All”), surgirá a seguinte janela solicitando-
nos a gravação da estrutura criada. Veja a próxima figura:
Curso de Informática – Cti / UniVap
Página
clicarmos no botão fechar, OU NO BOTÃO
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Figura 148
d) Clique no botão “YES” para informar um nome para a tabela que está sendo criada. Com isso,
deverá aparecer a seguinte janela, solicitando a troca do nome proposto na figura anterior “Table1”.
Veja a figura abaixo:
Figura 149
e) Digite então o nome da tabela, no nosso caso “CLIENTES” e pressione o botão “OK”. Veja exemplo
a seguir:
Curso de Informática – Cti / UniVap
Página
Figura 150
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Após seguir os passos anteriores, na janela “Solution Explorer”, deverá aparecer o nome da tabela
criada, conforme mostra a figura abaixo:
Figura 151
Desta forma já temos o banco de dados criado e também uma primeira tabela para manter os dados de
CLIENTES. Os passos deste item da apostila devem ser seguidos sempre que uma nova tabela se tornar
necessária no banco de dados.
Já podemos então criar um formulário no vb.net, para se comunicar com o banco de dados e tabela(s)
criada(s). Veremos isso no próximo item desta apostila.
34.3 – PROJETO CLIENTES
Devemos agora criar a tela de programação para se comunicar com o banco de dados e tabela,
criados até então.
Todo o acesso ao banco de dados e tabelas serão feitos por meio de linhas de programação. Vale
ressaltar que existem objetos que fazem esta conexão, minimizando com isso a escrita de linhas de programa.
Porém, como o objetivo deste curso é programação, então devemos deixar de lado.
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Construa o seguinte formulário:
Figura 152
OBSERVAÇÃO IMPORTANTE:
DESENHE OS CAMPOS DENTRO DOS PAINEIS DO FORMULÁRIO ACIMA
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Em seguida, vamos alterar as seguintes propriedades dos objetos desenhados no formulário acima:
OBJETO
NAME
TEXT
lblcodcli
“Código do
LIST
MASK
Enabled
Visible
Maxlenght
Cliente”
Txtcodcli
“”
Lblnomecli
“Nome Cliente”
Txtnomecli
“”
Lblsalariocli
“Salário do
10
40
Cliente”
Txtsalariocli
“”
Lblsexocli
“Sexo do
10
Cliente”
Cbosexocli
“”
Masculin
o
Feminino
Lblnascimentocli
“Data de
Nascimento”
Msknascimentocli
“”
__/__/____
Cmdcadastrar
“Cadastrar”
Cmdalterar
“Alterar”
Cmdexcluir
“Excluir”
Cmdconsultar
“Consultar”
Cmdconfirmar
“Confirmar”
False
Cmdcancelar
“Cancelar”
False
Cmdok
“OK”
False
pnlchave
“”
True
Pnlcampos
“”
False
Form1
“Clientes”
IMPORTANTE:
COM OS VALORES INFORMADOS
Curso de Informática – Cti / UniVap
Página
PARA O PROJETO FUNCIONAR CORRETAMENTE, ALTERE AS PROPRIEDADES ACIMA DE ACORDO
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Após criado o formulário e o banco de dados, conforme passos anteriores, seu projeto no vb.net deverá
ter a seguinte aparência:
Figura 153
PERCEBA NO PROJETO ACIMA:
•
A janela “Server Explorer” exibe o banco de dados e a tabela clientes. Caso a tabela não esteja
visível, basta clicar no sinal “+” ao lado do objeto “Tables” nesta janela.
•
Na janela “Solution Explorer”, está relacionado também o arquivo “LOJA.MDF”,
•
A tela da aplicação será programada.
Agora vamos programar o projeto acima. Observe que cada linha de comando será explicada,
conforme as aulas dadas.
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Primeiramente, antes de qualquer programação, vamos importar a classe do OBJETO ADO.NET que
nos permitirá trabalhar com o banco de dados SQL-SERVER, construído para o projeto até então criado. Esta
importação deve ser feita na área de declaração de variáveis GENERAL /DECLARATIONS do formulário. Veja
figura abaixo:
Figura 154
OBSERVAÇÕES IMPORTANTES:
•
A IMPORTAÇÃO DA CLASSE SYSTEM.DATA.SQLCLIENT deve ser feita antes da definição da
classe FORM1, conforme mostra o exemplo acima.
•
Perceba que a variável botao, também foi criada, para sabermos futuramente qual operação está
sendo CONFIRMADA pelo usuário. Veremos sua utilidade mais a frente.
Inclua um módulo no seu projeto, para criamos uma variável que servirá para guardar uma String de
conexão para o banco de dados. Crie a seguinte variável no MODULE.VB:
Figura 156
No envento FORM_LOAD, devemos estipular a string de conexão para o banco de dados, que será
usada para acessá-lo.
do banco de dados (LOJA.MDF), na janela “Server Explorer”, será mostrada na janela de propriedades de
conexão para este banco. Copie a string de conexão criada automaticamente na propriedade ConnectionString,
circulada na figura a seguir:
Curso de Informática – Cti / UniVap
Página
Para facilitar, basta utilizar a mesma string usada pelo banco de dados LOJA.MDF. Ao clicar no nome
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Figura 156
Vamos copiar o conteúdo da propriedade ConnectionString, selecionada acima, para ser atribuída a
variável “caminhoconexao”, criada no módulo. Esta atribuição deverá ser feita no evento FOM_LOAD do
formulário. Veja abaixo:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'estipulando o caminho para conexão do banco de dados
caminhoconexao = "Data
Source=.\SQLEXPRESS;AttachDbFilename=C:\VBxSQLSERVER\projeto3bi\projeto3bi\LOJA.mdf;Integrated
Security=True;User Instance=True"
End Sub
Agora, vamos programar os botões Cadastrar / Alterar / Excluir / Consultar, respecitvamente:
Private Sub cmdcadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdcadastrar.Click
'verificando se o código do cliente é válido
If Not IsNumeric(txtcodcli.Text) Then
MsgBox("Digite corretamente o código do cliente.", MsgBoxStyle.Information, "Aviso:")
txtcodcli.Focus()
Exit Sub
End If
'criando objeto conexao para estabelecer a conexão com o banco de dados, diante do caminho
estabelecido em caminho conexao
Dim conexao As New SqlConnection(caminhoconexao)
'criando o objeto comando para executar a busca do registro no banco de dados que está
conectado
Dim comando As New SqlCommand("select count(*) from clientes where codcli = " &
txtcodcli.Text, conexao)
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos comandos
'usando o comando try... catch
Try
Curso de Informática – Cti / UniVap
Página
'Com a linha abaixo estamos informando ao objeto comando que tipo de
'instrução será utilizada para acessar o registro
comando.CommandType = CommandType.Text
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'abrindo o banco de dados
conexao.Open()
'executanto o comando sql para contar quantos registros possuem o código informado
'na caixa de texto txtcodcli
comando.ExecuteNonQuery()
'se a quantidade de registro filtrados for maior ou igual a 1, significa que já existem
'registros gravados com o código digitado na caixa de texto txtcodcli
If comando.ExecuteScalar >= 1 Then
MsgBox("Cliente já cadastrado", MsgBoxStyle.Information, "Aviso:")
txtcodcli.Focus()
Else
'se o registro não existir
pnlchave.Enabled = False
pnlcampos.Enabled = True
cmdcadastrar.Enabled
cmdalterar.Enabled =
cmdexcluir.Enabled =
cmdconsultar.Enabled
= False
False
False
= False
cmdconfirmar.Visible = True
cmdcancelar.Visible = True
'Definindo o botão cadastrar como 1
botao = 1
txtnomecli.Focus()
End If
'fechando a conexão
conexao.Close()
Catch ex As Exception
MsgBox("erro: " & Err.Number & "-" & Err.Description)
End Try
Private Sub cmdalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdalterar.Click
'verificando se o código do cliente é válido
If Not IsNumeric(txtcodcli.Text) Then
MsgBox("Digite corretamente o código do cliente.", MsgBoxStyle.Information, "Aviso:")
txtcodcli.Focus()
Exit Sub
End If
'criando objeto conexao para estabelecer a conexão com o banco de dados, diante do caminho
estabelecido em caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
'criando o objeto comando para executar a busca do registro no banco de dados que está
conectado
Dim comando As New SqlCommand("select count(*) from clientes where codcli = " &
txtcodcli.Text, conexao)
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos comandos
'usando o comando try... catch
Try
Curso de Informática – Cti / UniVap
Página
'Com a linha abaixo estamos informando ao objeto comando que tipo de
'instrução será utilizada para acessar o registro
comando.CommandType = CommandType.Text
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'abrindo o banco de dados
conexao.Open()
'executanto o comando sql para contar quantos registros possuem o código informado
'na caixa de texto txtcodcli
comando.ExecuteNonQuery()
'se a quantidade de registro filtrados for maior ou igual a 1, significa que já existem
'registros gravados com o código digitado na caixa de texto txtcodcli
If comando.ExecuteScalar >= 1 Then
'criando uma nova instrução sql para filtrar os dados do registro existente
comando.CommandText = "select * from clientes where codcli = " & txtcodcli.Text
'A linha abaixo cria a tabela temporária chamada registro.
'Ela será criada quando o método ExecuteReader (Executar leitura)do objeto comando for
'executado
Dim registro As SqlDataReader = comando.ExecuteReader()
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos
'comandos usando o comando try... catch
Try
'apontando para o registro lido, visto que só existe um registro com
'o código informado
registro.Read()
'movendo o registro lido para a tela, ou seja, exibindo o registro na tela
txtnomecli.Text = registro.Item("nomecli")
txtsalariocli.Text = registro.Item("salariocli")
If registro.Item("sexocli") = "M" Then
cbosexocli.Text = "Masculino"
Else
If registro.Item("sexocli") = "F" Then
cbosexocli.Text = "Feminino"
End If
End If
msknascimentocli.Text = registro.Item("nascimento")
cmdcadastrar.Enabled
cmdalterar.Enabled =
cmdexcluir.Enabled =
cmdconsultar.Enabled
= False
False
False
= False
pnlchave.Enabled = False
pnlcampos.Enabled = True
botao = 2
cmdconfirmar.Visible = True
cmdcancelar.Visible = True
txtnomecli.Focus()
Catch ex As Exception
MsgBox("Erro: " & Err.Number & "-" & Err.Description, MsgBoxStyle.Information,
"Aviso:")
End Try
'fechando a comando temporária que armazenava o registro do cliente
registro.Close()
Else
End If
conexao.Close()
Curso de Informática – Cti / UniVap
Página
MsgBox("Cliente não cadastrado. Verifique o código do cliente informado.",
MsgBoxStyle.Information, "Aviso")
txtcodcli.Focus()
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Catch ex As Exception
MsgBox("erro: " & Err.Number & "-" & Err.Description)
End Try
End Sub
Private Sub cmdexcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdexcluir.Click
'verificando se o código do cliente é válido
If Not IsNumeric(txtcodcli.Text) Then
MsgBox("Digite corretamente o código do cliente.", MsgBoxStyle.Information, "Aviso:")
txtcodcli.Focus()
Exit Sub
End If
'criando objeto conexao para estabelecer a conexão com o banco de dados, diante do caminho
estabelecido em caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
'criando o objeto comando para executar a busca do registro no banco de dados que está
conectado
Dim comando As New SqlCommand("select count(*) from clientes where codcli = " &
txtcodcli.Text, conexao)
'Com a linha abaixo estamos informando ao objeto comando que tipo de
'instrução será utilizada para acessar o registro
comando.CommandType = CommandType.Text
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos
'comandos usando o comando try... catch
Try
'abrindo o banco de dados
conexao.Open()
'executanto o comando sql para contar quantos registros possuem o código informado
'na caixa de texto txtcodcli
comando.ExecuteNonQuery()
'se a quantidade de registro filtrados for maior ou igual a 1, significa que já existem
'registros gravados com o código digitado na caixa de texto txtcodcli
If comando.ExecuteScalar >= 1 Then
'criando uma nova instrução sql para filtrar os dados do registro existente
comando.CommandText = "select * from clientes where codcli = " & txtcodcli.Text
'A linha abaixo cria a tabela temporária chamada registro.
'Ela será criada quando o método ExecuteReader (Executar leitura)do objeto comando for
executado
Dim registro As SqlDataReader = comando.ExecuteReader()
Try
'apontando para o registro lido, visto que só existe um registro
'com o código informado.
registro.Read()
'movendo o registro da comando temporária para a tela
txtnomecli.Text = registro.Item("nomecli")
txtsalariocli.Text = registro.Item("salariocli")
Curso de Informática – Cti / UniVap
Página
If registro.Item("sexocli") = "M" Then
cbosexocli.Text = "Masculino"
Else
If registro.Item("sexocli") = "F" Then
cbosexocli.Text = "Feminino"
End If
End If
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
msknascimentocli.Text = registro.Item("nascimento")
'alterando o estado dos botões e campos da tela
cmdcadastrar.Enabled = False
cmdalterar.Enabled = False
cmdexcluir.Enabled = False
cmdconsultar.Enabled = False
pnlchave.Enabled = False
pnlcampos.Enabled = False
'determinando que o botão Excluir é o 3
botao = 3
cmdconfirmar.Visible = True
cmdcancelar.Visible = True
Catch ex As Exception
MsgBox("Erro: " & Err.Number & "-" & Err.Description, MsgBoxStyle.Information,
"Aviso:")
End Try
'fechando a comando temporária que armazenava o registro do cliente
registro.Close()
Else
MsgBox("Cliente não cadastrado. Verifique o código do cliente informado.",
MsgBoxStyle.Information, "Aviso")
txtcodcli.Focus()
End If
conexao.Close()
Catch ex As Exception
MsgBox("erro: " & Err.Number & "-" & Err.Description)
End Try
End Sub
Private Sub cmdconsultar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdconsultar.Click
'verificando se o código do cliente é válido
If Not IsNumeric(txtcodcli.Text) Then
MsgBox("Digite corretamente o código do cliente.", MsgBoxStyle.Information, "Aviso:")
txtcodcli.Focus()
Exit Sub
End If
'criando objeto conexao para estabelecer a conexão com o banco de dados, diante do caminho
estabelecido em caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
'criando o objeto comando para executar a busca do registro no banco de dados que está
conectado
Dim comando As New SqlCommand("select count(*) from clientes where codcli = " &
txtcodcli.Text, conexao)
'Com a linha abaixo estamos informando ao objeto comando que tipo de
'instrução será utilizada para acessar o registro
comando.CommandType = CommandType.Text
'abrindo o banco de dados
conexao.Open()
Curso de Informática – Cti / UniVap
Página
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos
'comandos usando o comando try... catch
Try
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'executanto o comando sql para contar quantos registros possuem o código informado
'na caixa de texto txtcodcli
comando.ExecuteNonQuery()
'se a quantidade de registro filtrados for maior ou igual a 1, significa que já existem
'registros gravados com o código digitado na caixa de texto txtcodcli
If comando.ExecuteScalar >= 1 Then
'criando uma nova instrução sql para filtrar os dados do registro existente
comando.CommandText = "select * from clientes where codcli = " & txtcodcli.Text
'A linha abaixo cria a tabela temporária chamada registro.
'Ela será criada quando o método ExecuteReader (Executar leitura)do objeto comando for
executado
Dim registro As SqlDataReader = comando.ExecuteReader()
'vamos nos preparar para possíveis erros gerados quando executarmos os próximos
'comandos usando o comando try... catch
Try
'vai para o registro lido, visto que na tabela só existe um registro
'com o código informado
registro.Read()
'movendo o registro da comando temporária para a tela
txtnomecli.Text = registro.Item("nomecli")
txtsalariocli.Text = registro.Item("salariocli")
If registro.Item("sexocli") = "M" Then
cbosexocli.Text = "Masculino"
Else
If registro.Item("sexocli") = "F" Then
cbosexocli.Text = "Feminino"
End If
End If
msknascimentocli.Text = registro.Item("nascimento")
'alterando o estado dos botões e campos da tela
cmdcadastrar.Enabled = False
cmdalterar.Enabled = False
cmdexcluir.Enabled = False
cmdconsultar.Enabled = False
pnlchave.Enabled = False
pnlcampos.Enabled = False
cmdok.Visible = True
Catch ex As Exception
MsgBox("Erro: " & Err.Number & "-" & Err.Description, MsgBoxStyle.Information,
"Aviso:")
End Try
'fechando a comando temporária que armazenava o registro do cliente
registro.Close()
Else
MsgBox("Cliente não cadastrado. Verifique o código do cliente informado.",
MsgBoxStyle.Information, "Aviso")
txtcodcli.Focus()
End If
conexao.Close()
MsgBox("erro: " & Err.Number & "-" & Err.Description)
End Try
End Sub
Curso de Informática – Cti / UniVap
Página
Catch ex As Exception
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Agora, vamos programar, respectivamente, os botões CONFIRMAR, CANCELAR e OK:
Private Sub cmdconfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdconfirmar.Click
If txtnomecli.Text.Trim = "" Then
MsgBox("Informe o nome do cliente.", MsgBoxStyle.Information, "Aviso:")
txtnomecli.Focus()
Exit Sub
End If
If Not IsNumeric(txtsalariocli.Text) Then
MsgBox("Informe corretamente o salário do cliente.", MsgBoxStyle.Exclamation, "Aviso:")
txtsalariocli.Focus()
Exit Sub
End If
If cbosexocli.Text.Trim = "" Then
MsgBox("Selecione o sexo do cliente.", MsgBoxStyle.Exclamation, "Aviso")
cbosexocli.Focus()
Exit Sub
End If
If Not IsDate(msknascimentocli.Text) Then
MsgBox("Informe corretamente a data de nascimento.", MsgBoxStyle.Information, "Aviso:")
msknascimentocli.Focus()
Exit Sub
End If
'criando conexão com o banco, diante do caminho indicado na variável caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
Dim comando As SqlCommand = conexao.CreateCommand
Dim sexo As String
sexo = cbosexocli.Text.ToUpper.First
Select Case botao
Case 1
'gravar registro
comando.CommandText = ("insert into clientes(codcli, nomecli, salariocli, sexocli,
nascimento) values(" & txtcodcli.Text & ",'" & txtnomecli.Text & "'," & txtsalariocli.Text & ",'" &
sexo & "',CONVERT(datetime,'" & msknascimentocli.Text & "',103))")
Case 2
' alterar registro
comando.CommandText = ("update clientes set nomecli = '" & txtnomecli.Text & "',
salariocli= " & txtsalariocli.Text & ", sexocli= '" & sexo & "', nascimento= CONVERT(datetime,'" &
msknascimentocli.Text & "',103) where codcli = " & txtcodcli.Text)
Case 3
'excluir registro
comando.CommandText = ("delete from clientes where codcli = " & txtcodcli.Text)
End Select
Try
conexao.Open()
comando.ExecuteNonQuery()
conexao.Close()
Catch ex As Exception
MsgBox("Erro: " & Err.Number & "-" & Err.Description, MsgBoxStyle.Critical, "Aviso:")
Página
End Try
cmdcancelar_Click(sender, e)
End Sub
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Private Sub cmdcancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdcancelar.Click
pnlchave.Enabled = True
pnlcampos.Enabled = False
txtnomecli.Text = ""
cbosexocli.Text = ""
txtsalariocli.Text = ""
msknascimentocli.Text = ""
cmdcadastrar.Enabled
cmdalterar.Enabled =
cmdexcluir.Enabled =
cmdconsultar.Enabled
= True
True
True
= True
cmdconfirmar.Visible = False
cmdcancelar.Visible = False
txtcodcli.Focus()
End Sub
Private Sub cmdok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdok.Click
cmdcancelar_Click(sender, e)
cmdok.Visible = False
End Sub
34.4 – Carregando dados de tabela em Caixas de Listagens
Em alguns momentos precisaremos carregar alguns dados de um registro em uma caixa de combo, ou
caixa de listagem, afim de exibí-los para o usuário, ou até mesmo como formas de pesquisas avançadas.
Para exemplificar, vamos inserir uma caixa de listagem e um label a mais, no formulário de clientes,
criado anteriormente. Para a caixa de listagem e o label inseridos, devemos alterar as seguintes propriedades:
OBJETO
PROPRIEDADE NAME
PROPRIEDADE LIST
PROPRIEDADE SORTED
PROPRIEDADE TEXT
Lblclientescadastrados
“Clientes Já
Cadastrados”
Lstclientes
“”
TRUE
A medida que novos clientes forem cadastrados, ou excluídos, ela deverá ser atualizada.
Curso de Informática – Cti / UniVap
Página
Esta caixa de listagem exibirá os nomes de todos os clientes que estão cadastrados no sistema.
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Veja a nova aparência do seu formulário de cadastro de clientes, depois de desenhada a caixa de
listagem:
Figura 157
O PROCEDIMENTO ABAIXO, mostrará os nomes de clientes cadastrados na tabela “clientes” do
banco de dados “LOJA.MDF”.
Private Sub atualizalistaclientes()
'criando objeto conexao para estabelecer a conexão com o banco de dados, diante do caminho
estabelecido em caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
'criando o objeto comando para executar a busca do registro no banco de dados que está
conectado
Dim comando As New SqlCommand("select count(*) from clientes ", conexao)
'Com a linha abaixo estamos informando ao objeto comando que tipo de
'instrução será utilizada para acessar o registro
comando.CommandType = CommandType.Text
lstclientes.Items.Clear()
Try
'abrindo o banco de dados
conexao.Open()
Curso de Informática – Cti / UniVap
Página
'executanto o comando sql para contar quantos registros possuem o código informado
'na caixa de texto txtcodcli
comando.ExecuteNonQuery()
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'se a quantidade de registro filtrados for maior ou igual a 1, significa que já existem
'registros gravados com o código digitado na caixa de texto txtcodcli
If comando.ExecuteScalar >= 1 Then
'criando uma nova instrução sql para filtrar os dados do registro existente
comando.CommandText = "select * from clientes "
'A linha abaixo cria a tabela temporária chamada registro.
'Ela será criada quando o método ExecuteReader (Executar leitura)do objeto comando for
executado
Dim registro As SqlDataReader = comando.ExecuteReader()
Try
'vai para o registro lido, visto que na tabela só existe um registro
'com o código informado
While registro.Read()
'movendo o registro da comando temporária para a tela
lstclientes.Items.Add(registro.Item("nomecli"))
End While
Catch ex As Exception
MsgBox("erro:" & ex.ToString)
End Try
End If
Catch ex As Exception
MsgBox("erro:" & ex.ToString)
End Try
conexao.Close()
End Sub
PARA O PROCEDIMENTO ACIMA FUNCIONAR LEMBRE-SE:
•
Copie o procedimento acima para dentro da classe Form1 do projeto criado.
•
DESENHE NO FORMULÁRIO DO PROJETO “LOJA” UMA CAIXA DE LISTAGEM e a nomeie como
“lstclientes”.
•
Em seguida, basta escrevermos o nome do procedimento “atualizalistaclientes”, no ponto desejado do
programa. Como proposta, chame-o no final da programação do botão “CMDCONFIRMAR”, e
também, no evento FORM1_LOAD.
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
34.5 – Objetos de acesso a bancos de dados ADO.NET
Vamos falar um pouco sobre os objetos de acesso a banco de dados, usados no projeto programado
anteriormente (CLIENTES).
Todos os exemplos de uso dos objetos foram dados no projeto que cadastra CLIENTES, abordado
nesta apostila.
34.5.1 – Objetos Connection
Estes objetos são usados para estabelecer a conexão com um banco de dados. O único truque é que
temos que usar corretamente uma string de conexão.
Os métodos OPEN() E CLOSE() são usados por este objeto para abrir e fechar a conexão,
respectivamente.
34.5.2 – Objetos Command
Estes objetos são usados para declarações de instruções SQL. Usaremos as seguintes sintaxes SQL
para manipulação de registros em tabelas:
SINTAXE: INSERT – CADASTRO DE REGISTROS
Insert into <tabela>(campo1, campo2,...,campon) values (dado1, dado2,...,dadon)
SINTAXE: UPDADE – ALTERAÇÃO DE REGISTROS
Update
<tabela>
set
<campo1>=<novovalor>,<campo2>=<novovalor>,...,<campo3>=<novovalor>
where <condição(ões)>
SINTAXE: DELETE – EXCLUSÃO DE REGISTROS
Delete from <tabela> where <condição(ões)>
SINTAXE: SELECT – CONSULTA DE REGISTROS
Select <campo1>, <campo2>, ..,<campon> from <tabela> where <condição(ões)>
Os métodos usados para executar os comandos SQL são os seguintes :
ExecuteReader - executa declarações SQL que retornam linhas de dados, tais como SELECT
•
ExecuteNonQuery - executa declarações SQL que não retornam dados , tais como: INSERT,
UPDATE , DELETE e SET
•
ExecuteScalar - retorna um valor único como resultado de uma função agregada : SUM , AVG,
COUNT , MAX E MIN.
Curso de Informática – Cti / UniVap
Página
•
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
34.5.3 – Objetos DataReader
O objeto DataReader é uma das maneiras mais fáceis para ler os dados retornados pelos objetos
Command . Eles permitem acessar e percorrer os registros no modo de somente leitura e somente para frente
- forward-only . Não oferecem acesso desconectado e não permitem alterar ou atualizar a fonte de dados
original sendo usado para obter rapidamente dados de apenas leitura. Apresenta poucos recursos mas seu
desempenho é muito melhor do que o oferecido pelos DataSet.
As propriedades e métodos mais usadas dos objetos DataReader são :
1. FieldCount - informa o número de colunas da linha de dados atual
2. IsClosed - Indica se o objeto DataReader esta fechado.
3. RecordsAffected - especifica o número de linhas alteradas , excluídas ou incluídas na execução de
uma declaração SQL
4. Item (n) - obtêm o valor da n-ésima coluna no seu formato nativo.
5. Close - Método que fecha o objeto
6. GetName - Método que retorna o nome da n-ésima coluna.
7. Read - método que permite ao DataReader avançar para o próximo registro
8. IsDbNull - método que informa se a n-ésima coluna possui um valor nulo.
Este objeto deve ser utilizado no seu programa quando deseja executar leitura de registros das
tabelas do banco de dados.
Vale ressaltar que existem dois tipos de DataReader:
•
SqlDataReader (otimizado para banco de dados do SQL Server)
•
OleDbDataReader (para provedores OLE DB – Outros bancos de dados)
Para criar o objeto DataReader é necessário usar o método ExecuteReader do nosso objeto command,
explicado anteriormente.
Após a execução da leitura dos registros desejados, será necessário nos movimentarmos entre eles,
afim de exibí-los na tela ou realizar algum processamento desejado. Para acessarmos os registros filtrados
devemos usar o método READ(), do objeto reader. Veja exemplos abaixo:
Dim reader as sqldatareader = cmd.ExecuteReader()
Do while reader.read()
Loop
Reader.close
Conexao.close
Curso de Informática – Cti / UniVap
Página
‘trabalhamos com o registro corrente
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
OBSERVAÇÃO IMPORTANTE SOBRE O MÉTODO READ( ):
No vb.net, não usamos os métodos movenext (para posicionar num próximo registro) e nem os de testes de
final e início de arquivos. O método READ() já executa estas duas tarefas ao mesmo tempo.
35 – Caixas de Diálogos
Estes objetos são conhecidos no ambiente do windows por permitirem ao usuário definir locais para
gravações/abertura de arquivos, em meios de armazenamento de informações (HD/pen drives / cd/ etc.),
definição de cores, definição de fontes e definições de impressão de documentos.. Veja abaixo um exemplo de
caixa de diálogo “Salvar Como...”, usada no WORD:
Figura 158
Existem no vb.net, vários tipois de caixas de diálogos. Estudaremos agora como utilizar as seguintes
caixa de diálogos, disponíveis na guia DIALOGS do vb.net 2008:
Figura 159
principio de utilização é o mesmo que as citadas acima.
Curso de Informática – Cti / UniVap
Página
Vale ressaltar que exite ainda a caixa de diálogo de IMPRESSÃO. Não a estudaremos, pois seu
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
CURIOSIDADE: Quando for necessário usar uma caixa de diálogo no seu projeto, perceberá que a
mesma não será inserida na área do formulário, pois seu principio de funcionamento é igual ao do objeto
TIMER, ou seja, devemos programar seu funcionamento para o usuário. Veja abaixo como aparecerá inserida
no formulário:
Figura 160
35.1 – Caixa de Diálogo ABRIR (OpenFileDialog)
Curso de Informática – Cti / UniVap
Página
Figura 161
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Esta caixa de diálogo permitirá ao usuário localizar um arquivo para sua devida abertura.
Vale
ressaltar que deveremos escrever a programação para o arquivo selecionado ser aberto. A caixa de diálogo
servirá somente para tornar o processo mais agradável e no padrão conhecido por qualquer usuário do
windows.
Vamos conhecer as principais propriedades da caixa de diálogo “ABRIR”(OpenFileDialog) :
PROPRIEDADE
PARA QUE SERVE
Name
Dar nome ao objeto. Este nome será usado na programação.
AddExtension
Controla se as extensões são ou não automaticamente adicionadas aos nomes de
arquivos.
CheckFileExists
Verifica se o arquivo especificado esiste, antes de retornar do diálogo.
CheckPathExists
Verifica se o caminho especificado existe, antes de retornar do diálogo.
DefautExt
A extensão padrão do nome dos arquivos que deverão aparecer na caixa de
diálogo. Ao digitar o nome do arquivo, esta extensão será adicionada
automaticamente ao seu final, caso não seja especificada.
FileName
Caminho e nome do arquivo selecionado pelo usuário, quando o usuário clicar no
botão “Abrir” (open) da caixa de diálogo
FileNames
Armazena o nome de todos os arquivos selecionados na caixa de diálogo. OBS: só
poderá ser utilizada quando a propriedade MULTISELECT estiver com valor “true”.
Filter
Determina os tipos dos arquivos que poderão ser escolhidos pelo usuário.
FilterIndex
Indica o índice do tipo de arquivo selecionado pelo usuário. LEMBRE-SE QUE O
PRIMEIRO TIPO DE ARQUIVO POSSUI ÍNDICE 1.
InitialDirectory
Determinar a pasta que deverá ser mostrada INICIALMENTE para o usuário quando
a janela de diálogo aparecer.
MultiSelect
Permite (true) ou não (False) que o usuário possa selecionar vários arquivos ao
mesmo tempo.
Title
Definir a string da barra de título da janela de diálogo
35.2 – Caixa de Diálogo SALVAR (SaveFileDialog)
Página
Figura 162
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Esta caixa de diálogo permite ao usuário definir caminho e nome dos arquivos que deseja gravar. Esta
caixa é comum no ambiente do windows. Como exemplo, podemos citar a janela que o próprio Word abre,
quando você clica no ícone do diskete, para salvar o arquivo que está aberto naquele momento.
Basicamente todas as propriedades das caixas de diálogos que serão conhecidas são as mesmas.
Vamos conhecer as principais propriedades deste objeto:
PROPRIEDADE
PARA QUE SERVE
Name
Dar nome ao objeto. Este nome será usado na programação.
AddExtension
Controla se as extensões são ou não automaticamente adicionadas aos nomes de
arquivos.
CheckFileExists
Verifica se o arquivo especificado esiste, antes de retornar do diálogo.
CheckPathExists
Verifica se o caminho especificado existe, antes de retornar do diálogo.
DefautExt
A extensão padrão do nome dos arquivos que deverão aparecer na caixa de
diálogo. Ao digitar o nome do arquivo, esta extensão será adicionada
automaticamente ao seu final, caso não seja especificada.
FileName
Caminho e nome do arquivo selecionado pelo usuário, quando o usuário clicar no
botão “Abrir” (open) da caixa de diálogo
Filter
Determina os tipos dos arquivos que poderão ser escolhidos pelo usuário.
FilterIndex
Indica o índice do tipo de arquivo selecionado pelo usuário. LEMBRE-SE QUE O
PRIMEIRO TIPO DE ARQUIVO POSSUI ÍNDICE 1.
InitialDirectory
Determinar a pasta que deverá ser mostrada INICIALMENTE para o usuário quando
a janela de diálogo aparecer.
Title
Definir a string da barra de título da janela de diálogo
35.3 – Caixa de Diálogo CORES (ColorDialog)
Figura 163
Usa-se esta caixa de diálogo num projeto, para permitir ao usuário escolher uma cor. Vale dizer que
dependendo da cor selecionada.
Curso de Informática – Cti / UniVap
Página
quando o usuário clicar no botão “OK” , será retornado o nome da cor ou o código hexadecimal da mesma,
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Entretanto, poderemos usar a propriedade COLOR, pois ela retornará as características da cor
selecionada, para utilizarmos no programa do projeto que está sendo desenvolvido.
Suas principais propriedades são:
PROPRIEDADE
PARA QUE SERVE
Name
Dar nome ao objeto. Este nome será usado na programação.
AllowFullOpen
Ativa (True) ou não (False) o botão “Definir cores personalizadas>>” da caixa de
diálogo
AnyColor
Controlar se qualquer cor pode ser selecionada pelo usuário
Color
Retornar as caracteristicas da cor selecionada pelo usuário, quando o botão “OK” for
pressionado
Color.Name
Retornar o nome da cor selecionada. Para algumas cores, retorna o código
HEXADECIMAL da mesma.
35.4 – Caixa de Diálogo FONTE (FontDialog)
Figura 164
A janela de fonte, como o próprio nome já diz, permite ao usuário configurar as fontes que serão
utilizadas no seu projeto, definindo propriedades para outros objetos. Esta janela é normalmente utilizada
quando desejamos definir as fontes de uma caixa de texto, por exemplo.
Vejamos as propriedades mais utilizadas desta janela:
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
PROPRIEDADE
PARA QUE SERVE
Name
Dar nome ao objeto. Este nome será usado na programação.
AllowSimulations
Tornar disponível os vários estilos de fontes, além da opção “Normal”.
Color
Definir a cor da fonte do texto
Font
Retornar as caracteristicas da fonte selecionada pelo usuário
MaxSize
Definirmos o valor máximo para as fontes selecionáveis (0 – desativa)
MinSize
Definirmos o valor mínimo para as fontes selecionáveis (0 - desativa)
ShowApply
Para permitir (True) ou não (false) que o botão “Aplicar” fique visível na caixa de
diálogo
ShowColor
Para permitir (true) ou não (False) a exibição das opções de cores da fonte na
janela.
ShowEffects
Para permitir (True) ou não (False) a exibição das opções Sublinhado / Sobrescrito /
Cor de Fonte, na janela de diálogo
35.5 – Programa Caixas de Diálogo
Vamos desenvolver um programa para ilustrar o uso das caixas de diálogo ensinadas até o momento.
Para isso, vamos construir o seguinte formulário em um novo projeto:
Figura 165
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Em seguida vamos alterar as seguintes propriedades para os objetos desenhados no formulário:
OBJETO
PROPRIEDADE NAME
PROPRIEDADE TEXT
Lblfrase
“Digite uma frase
qualquer”
Txtfrase
“”
Cmdcor
“Cor”
Cmdfonte
“Fonte”
Cmdabrir
“Abrir”
Cmdsalvar
“Salvar”
NESTE EXEMPLO NÃO
-------
VOU NOMEÁ-LOS.
Em seguida, vamos escrever o seguinte código dentro do botão “cmdcor”:
Figura 166
Escreveremos também o seguinte código dentro do botão fonte:
Página
Figura 167
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
No botão “cmdabrir” escreveremos a seguinte programação:
Figura 168
Por fim, no botão “cmdsalvar” deverá ser escrito a seguinte programação:
Figura 169
- OBSERVE NA PROGRAMAÇÃO ACIMA, QUE FOI UTILIZADO O MÉTODO ShowDialog(). Este método é
utilizado para exibir a caixa de diálogo desejada.
- Cada linha de comando escrita, possui uma linha de comentário, explicando o que está acontencendo.
Curso de Informática – Cti / UniVap
Página
OBSERVAÇÃO IMPORTANTE:
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
36 – Objeto WebBrowser
Com este objeto poderemos criar nosso próprio navegador Web. Este objeto está disponível na guia
“Common Controls” e recebe o nome de WebBrowser. Ele tem a seguinte aparência:
Figura 170
Quando o controle WebBrowser for arrastado para o formulário, ele ocupará toda a sua área. Para
poder utilizá-lo melhor você deverá localizar a guia Smart Tag e clicar na opção Undock Parent Container,
conforme figura abaixo, para poder arrastar os demais controles para o formulário.
Figura 171
Os principais eventos deste controle são:
EVENTO
QUANDO É EXECUTADO
Navigating
Antes da navegação iniciar
Navigated
Após a navegação
ProgressChanged
Durante um download. Podemos programá-lo para saber quantos bytes foram
baixados e quantos ainda são esperados
Quando a página foi completamente carregada.
StatusTextChanged
Executado sempre que altera-se o texto da barra de status.
Curso de Informática – Cti / UniVap
Página
DocumentCompleted
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Já os métodos mais utilizados para este objeto são os seguintes:
MÉTODOS
PARA QUE SERVEM
Navigate()
Usado para carregar uma página indicada no objeto WebBrowser
GoBack()
Usado para voltar para página visitada anteriormente.
GoForward()
Usado para avançara para página visitada posteriormente.
GoHome()
Usado para voltar para a página principal de um site que se está navegando.
GoSearch()
Mostrar no WebBrowser o site padrão de busca, definido como padrão no windows.
Algumas propriedades importantes do objeto WebBrowser:
PROPRIEDADE
PARA QUE SERVE
Name
Dar nome ao objeto. Este nome será usado na programação.
StatusText
Exibe/Armazena o conteúdo da barra de status, no momento que for usado.
Url
Usada para armazenar o endereço da página que está carredada no objeto.
Para um melhor entendimento das funcionalidades do objeto WebBrowser, vamos desenhar o seguinte
formulário:
Figura 172
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Agora vamos alterar as seguintes propriedades dos objetos desenhados no formulário:
OBJETO
PROPRIEDADE
PROPRIEDADE
PROPRIEDADE
NAME
TEXT
BORDERSTYLE
Webbrowser1
“”
---
Lblstatus
“”
FIXED SINGLE
Lblurl
“Digite o endereço
---
(manteremos o
nome padrão. Se
desejar altere.)
da página desejada”
Txturl
“”
---
Cmdnavegar
“navegar”
---
Cmdposterior
“Avançar”
---
Cmdvoltar
“Voltar”
---
Cmdhome
“Home deste site”
---
cmdpadrao
“Página padrão de
---
busca”
cmdatual
“Página Atual”
---
Agora sim, podemos programar os objetos desenhados no formulário.
Vamos escrever o seguinte código no botão “navegar”:
Figura 173
No botão “Avançar” escreva o seguinte programa:
Curso de Informática – Cti / UniVap
Página
Figura 174
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
No botão “Voltar”, vamos escrever as seguintes linhas de programa:
Figura 175
No botão “Home deste site”, escreva o programa abaixo:
Figura 176
No botão “Página padrão de busca”, escreva:
Figura 177
No botão “Página Atual”, escreva:
Figura 178
Para finalizar, vamos escrever um código para atualizar a barra de status, sempre que uma página
estiver sendo carregada. Para tal, escreva o seguinte trecho de programa no evento “StatusTextChanged” do
objeto WebBrowser:
Curso de Informática – Cti / UniVap
Página
Figura 179
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
37 – Manipulação de arquivo texto no vb.net
Quando programamos em uma linguagem qualquer, faz-se necessário conhecer a forma de
manipulação de arquivo do tipo texto.
Um arquivo do tipo texto é um tipo de arquivo não formatado. Como exemplos temos os arquivos
gravados no Bloco de Notas do Windows, ao contrário dos arquivos gravados no word, que são formatados.
No word também podemos criar arquivos do tipo texto, porém devemos ter o cuidado, de no momento
da gravação, definirmos o tipo do arquivo como “Texto”. Caso contrário, não poderemos manipulá-lo utilizando
os comandos que aprenderemos neste capítulo.
Este tipo de manuseio de dado (em arquivo texto) é muito utilizado em programação de computadores.
Existem programas, por exemplo, que geram arquivos html. Apesar de conterem códigos HTML são do tipo
texto.
Antes de criarmos um programa para manipular um arquivo texto qualquer, vamos conhecer alguns
comandos que iremos precisar para este fim.
37.1 – A classe System.IO
Vamos programar o formulário acima. Porém, para manuseio de arquivos textos devemos importar,
antes de tudo, a classe System.IO. Veja o exemplo de linha de programa para importar a classe citada:
Figura 181
37.2 – Criando o arquivo texto
Para criarmos o arquivo texto devemos usar a seguinte sintaxe:
Onde:
variavel – representa um objeto que representará o arquivo a ser aberto;
Curso de Informática – Cti / UniVap
Página
Dim variavel As New StreamWriter(“caminho_e_nomedoarquivo”, [True])
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
StreamWriter – cria o objeto StreamWriter, que referenciará o arquivo que será aberto para
criação/escrita.
caminho_e_nomedoarquivo – indicaremos o caminho do arquivo, bem como seu nome (como
string);
[True] – este parâmetro é opcional, porém quando escrito (sem os colchetes), indica que qualquer
dado escrito no arquivo texto, será inserido após a última linha já gravada.
37.3 - Escrevendo num arquivo texto
È bom lembrar que para escrever um conteúdo num arquivo texto, o mesmo já deve estar aberto.
Use a sintaxe abaixo para escrever no arquivo texto:
variavel.WriteLine(“Conteudo”)
Onde:
Varivel – representa o objeto que representará o arquivo que já foi aberto anteriormente;
“Conteúdo” – representa o que você quer escrever no arquivo. Podemos usar variáveis neste local;
37.4 – Abrindo um arquivo para leitura
Para abrirmos um arquivo texto para leitura do seu conteúdo devemos usar a seguinte sintaxe:
Dim variavel As New StreamReader("caminho_e_nome_do_arquivo")
Onde:
variavel – representa o objeto que representará o arquivo a ser aberto para leitura;
StreamReader – cria o objeto StreamReader, que servirá unicamente para ler o arquivo referenciado
em caminho_e_nome_do_arquivo.
caminho_e_nome_do_arquivo – indicaremos neste local o caminho e nome do arquivo que será aberto
para leitura;
37.5 – Lendo um arquivo texto SEQUENCIALMENTE (Método ReadLine)
Para lermos um arquivo sequencialmente usaremos o método ReadLine. Este método lê uma linha do
Para utilizarmos este método, use a seguinte sintaxe:
linhalida = variavel.ReadLine
Curso de Informática – Cti / UniVap
Página
arquivo aberto. Portanto, será necessário utilizá-lo dentro de uma estrutura de repetição.
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Onde:
Linhalida – refere-se a variável do tipo string que armazenará o conteúdo da linha lida.
Variavel – refere-se ao arquivo aberto como StreamReader
37.6 – Lendo TODO arquivo texto (Método ReadToEnd)
Para lermos um arquivo inteiro, basta utilizarmos o método ReadToEnd. Este irá ler o arquivo desde o
primeiro caractere, contido na primeira linha, até o último caractere gravado na última linha do texto aberto.
Portanto não devemos usar este método dentro de estruturas de repetições.
Para utilizar esta forma de leitura de arquivo texto, utilize a seguinte sintaxe:
Arquivotodo = variavel.ReadToEnd
Onde:
Arquivotodo – indica o nome de uma variável do tipo string, usada para armazenar todo o texto lido.
variavel – refere-se ao arquivo aberto como StreamReader
37.7 – Programa GeraArquivoTexto
Vamos criar um programa para manipular um arquivo texto. Para isso, vamos criar o seguinte
formulário:
Página
Figura 180
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Vamos alterar as seguintes propriedades dos objetos do formulário:
OBJETO
PROPRIEDADE NAME
PROPRIEDADE TEXT
PROPRIEDADE
MULTILINE
Txttexto
“”
True
Cmdgerar
“gerar arquivo texto”
---
Cmdlerarquivo
“Ler arquivo texto”
---
Cmdconcatenação
“concatenação na
---
seleção”
Cmdselecionando
“selecionando todo o
---
texto”
Cmdselecionar10
“Selecionando 10
---
primeiros caracteres”
Cmdqtdeselecionada
“Qtde de caracteres
---
selecionados”
Vamos abrir o botão “cmdgerar” e escrever a seguinte programação:
Figura 181
Curso de Informática – Cti / UniVap
Página
Vamos escrever também a programação para o botão “cmdlerarquivo”, veja a seguir:
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Figura 182
REPARE NO CÓDIGO ACIMA
Poderemos usar a rotina de repetição, para ler linha a linha do arquivo texto
OU
a linha destacada em azul, que lê todo o arquivo de uma só vez.
Dando continuidade, vamos escrever a programação para o botão “cmdconcatenação”:
Figura 183
No programa acima repare na PROPRIEDADE SelectText DA CAIXA DE TEXTO
Esta propriedade armazena o texto selecionado pelo usuário na caixa de texto.
Escreveremos agora a programação para o botão “cmdselecionado”
Figura 184
seleciona todo o texto digitado na caixa de texto.
Esta propriedade não terá efeito se o método FOCUS não for escrito.
Curso de Informática – Cti / UniVap
Página
Nas linhas programadas acima usamos a propriedade SELECTALL da CAIXA DE TEXTO. Esta propriedade
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
A programação a seguir deve ser escrita no botão “cmdselecionar10”:
Figura 185
Nas linhas programadas acima usamos a propriedade SELECT() da CAIXA DE TEXTO.
Esta propriedade seleciona parte do texto digitado, iniciando da posição 0 (primeiro caractere)
até o caractere 9, ou seja, os 10 primeiros caracteres estarão selecionados.
Esta propriedade não terá efeito se o método FOCUS não for escrito.
Por fim, programaremos agora o botão “cmdqtdeselecionada”:
Figura 186
Na programação acima usamos a propriedade SELECTIONLENGTH da CAIXA DE TEXTO.
Esta propriedade RETORNA a quantidade de caracteres selecionados na caixa de texto.
Por esta razão criamos uma variável numérica para receber a quantidade de retornada pela
propriedade SelectionLength.
38 – Classe FileSystem (manipulando arquivos) e executanto arquivos .exe
Podemos também manipular arquivos, pastas ou diretórios, e até mesmo o sistema operacional
usando a classe FileSystem. Com ela podemos por exemplo usar os comandos relacionados abaixo:
'cria a pasta teste2 na raiz da unidade c:
FileSystem.MkDir("c:\teste\")
Curso de Informática – Cti / UniVap
Página
'verificando se a pasta teste já está criada na raiz da unidade c:
If FileSystem.Dir("c:\teste", FileAttribute.Directory) <> "" Then
MsgBox("Pasta já existe")
End If
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'verificando se o arquivo teste.txt já existe na pasta teste na raiz da unidade c:
If FileSystem.Dir("c:\teste\teste.txt", FileAttribute.Archive) <> "" Then
MsgBox("Arquivo já existe")
End If
'remove a pasta teste2 (se ela estiver vazia)
FileSystem.RmDir("c:\teste2\")
'apaga todos os arquivos cujo nome seja debug, localizados na
'pasta teste2
FileSystem.Kill("c:\teste2\debug.*")
'retornará qual a pasta aberta naquele momento
MsgBox(FileSystem.CurDir)
'renomear um arquivo existente
FileSystem.Rename("c:\teste\teste1.txt", "c:\teste\texte2.txt")
'faz com que a unidade de armazenamento "e:" seja a unidade corrente (que será usada)
'FileSystem.ChDrive("e:\")
MsgBox(FileSystem.CurDir)
'copiando o arquivo teste.txt, localizado na pasta c:\teste, para a raiz da unidade d:\
FileSystem.FileCopy("c:\teste\teste.txt", "d:\teste.txt")
Outro código importante, além dos mostrados anteriomente, refere-se a execução de arquivos
executável (.EXE). A linha de comando abaixo fará o bloco de notas ser executado, e ao mesmo tempo será
carregado o arquivo “teste.txt” que está gravado na raiz da unidade c:\
System.Diagnostics.Process.Start("C:\WINDOWS\notepad.exe", “C:\teste.txt")
Poderíamos somente executar o bloco de notas, para isso escreveríamos a seguinte linha de comando:
System.Diagnostics.Process.Start("C:\WINDOWS\notepad.exe")
39 – Criação de Barras de Menu
Para criação de uma barra de menu no vb.net, usamos o objeto MenuStrip. Este objeto está localizado
na guia “MENU & TOOLBARS”, conforme mostrado na figua abaixo:
Figura 187
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Quando inserirmos este objeto num formulário, você terá a seguinte aparência:
Figura 188
Repare que o objeto não foi desenhado diretamente no formulário. Somente uma barra de menu vazia,
com o texto “TYPE HERE” está disponível na área do formulário.
Siga os passos abaixo para começar a criar um menu simples para seu programa:
1º passo:
Clique sobre “Type Here” e selecione a opção “MenuItem” no menu que for aberto, conforme ilustra
figura abaixo:
Figura 189
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
2º passo:
Sua tela deverá ficar parecida com a tela abaixo:
Figura 190
3º passo:
Dê um clique com o mouse sobre “ToolStripMenuItem1”, para escrever o rótulo do menu que deverá
aparecer para o usuário. Neste caso, por exemplo, digitarei “&Arquivo”. Veja o que acontece:
Figura 191
Repare acima que foi criado um MINEMÔNICO abaixo da letra “A” do rótulo “Arquivo”. Isso facilitará o
acesso ao menu pelo usuário, utilizando as teclas de acesso “ALT+A”
4º passo:
Vamos criar agora uma opção “Novo” para o menu “Arquivo”. Para isso, vamos clicar no centro da área
“Type Here”, localizada abaixo do menu “Arquivo”. Desta forma o curso irá piscar neste local, indicando que um
submenu poderá ser criado. Veja o que deverá acontecer:
Página
Figura 192
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
5º passo:
Repare que o cursor estará piscando na área onde você clicou e novas opções de sub menu foram
abertas automaticamente. Agora digite “&Novo” e pressione a tecla “Enter”. Você deverá obter o seguinte
resultado:
Figura 193
6º passo:
Vamos criar uma combinação de teclas de atalhos para a opção “Novo”. Para isso, dê um simples
clique sobre a opção “Novo”. Em seguida, veja que a caixa de propriedades estará exibindo as características
da opção do menu “Novo”. Abra a propriedade “ShortcutKeys”, marque a opção “CTRL” e selecione na combo
Key um caracter para servir de atalho. Veja na figura abaixo a referida propriedade:
Vamos criar o atalho “CTRL+N”. A próxima figura demonstra como ficará o resultado obtido:
Curso de Informática – Cti / UniVap
Página
Figura 194
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Figura 196
Para programar a opção “Novo”, basta dar um duplo clique sobre esta opção. Desta forma será aberta
a seguinte área de programação:
Figura 197
Os mesmos passos seguidos até aqui, poderão ser repetidos para criar novos menus e suas opções.
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
ANEXO 1
NOVO PROJETO CLIENTES (3º BIMESTRE)
Este projeto reduz a programação exposta na apostila, pois não será necessária a programação dos
botões: CADASTRAR e CONSULTAR.
A nova tela de CLIENTES deverá ter a seguinte aparência:
Página
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
Vejamos agora a programação para cada evento da nova tela de CLIENTES:
'importanto a classe SYSTEM.DATA.SQLCLIENT, para manipularmos registros
'do sql server
Imports System.Data.SqlClient
Public Class Form1
'CRIANDO A VARIÁVEL BOTAO PARA INDICARMOS FUTURAMENTE
'QUAL A OPERAÇÃO ESTAREMOS REALIZANDO NO BANCO DE DADOS
Dim BOTAO As Integer
'CRIANDO A VARIÁVEL SEXO, PARA ARMAZENAR M=MASCULINO / F=FEMININO
Dim sexo As String
FORM_LOAD
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ESTIPULANDO O CAMINHO DA CONEXÃO
caminhoconexao = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\3bim\projeto_Loja\projeto_Loja\LOJA.mdf;Integrated
Security=True;User Instance=True"
End Sub
TXTCODCLI_KEYPRESS
Private Sub txtcodcli_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles
txtcodcli.KeyPress
If e.KeyChar = Convert.ToChar(13) Then
If Not IsNumeric(txtcodcli.Text) Then
MsgBox("Digite um código numérico para o cliente.", MsgBoxStyle.Critical, "Aviso:")
txtcodcli.Focus()
Exit Sub
End If
Dim conexao As New SqlConnection(caminhoconexao)
Dim comando As New SqlCommand("Select count(*) from clientes where codcli = " & txtcodcli.Text, conexao)
comando.CommandType = CommandType.Text
Try
conexao.Open()
comando.ExecuteNonQuery()
'SE EXISTIR PELO MENOS 1 REGISTRO NA TABELA COM CÓDIGO INFORMADO PELO USUÁRIO
If comando.ExecuteScalar >= 1 Then
'CRIANDO O SQL PARA BUSCAR O REGISTRO EXISTENTE
comando.CommandText = "select * from clientes where codcli = " & txtcodcli.Text
'EXECUTANTO O SQL PARA BUSCAR O REGISTRO EXISTENTE E CRIANDO A TABELA
'TEMPORÁRIA (OU OBJETO) CHAMADA REGISTRO
Dim registro As SqlDataReader = comando.ExecuteReader()
'EXIBINDO O REGISTRO NA TELA
txtnomecli.Text = registro.Item("nomecli")
txtsalariocli.Text = registro.Item("salariocli")
If registro.Item("sexocli") = "M" Then
cbosexocli.Text = "Masculino"
Else
Curso de Informática – Cti / UniVap
Página
Try
'LENDO O PRIMEIRO REGISTRO FILTRADO(NESTE CASO O ÚNICO REGISTRO)
registro.Read()
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
If registro.Item("sexocli") = "F" Then
cbosexocli.Text = "Feminino"
End If
End If
msknascimentocli.Text = registro.Item("nascimentocli")
'BOTÕES ALTERAR, EXCLUIR e CANCELAR DEVEM APARECER NA TELA PARA O USUÁRIO
cmdalterar.Visible = True
cmdexcluir.Visible = True
cmdcancelar.Visible = True
Catch ex As Exception
MsgBox("Erro:" & Err.Number & ": " & Err.Description)
End Try
registro.Close()
Else
'CASO O CLIENTE NÃO ESTEJA CADASTRADO
'PROTEGENDO O CÓDIGO DO CLIENTE, TRAVANDO O CAMPO CHAVE
pnlchave.Enabled = False
'LIBERAR OS CAMPOS PARA DIGITAÇÃO DOS DADOS DO NOVO CLIENTE
pnlcampos.Enabled = True
'BOTÃO CONFIRMA E CANCELA FICAM VISIVEIS
cmdconfirmar.Visible = True
cmdcancelar.Visible = True
'VAMOS FAZER CADASTRO, PORTANTO A VARIÁVEL BOTAO = 1
BOTAO = 1
'POSICIONANDO O CURSOR NO CAMPO TXTNOMECLI
txtnomecli.Focus()
End If
Catch ex As Exception
MsgBox("Erro:" & Err.Number & ": " & Err.Description)
End Try
conexao.Close()
End If
End Sub
CMDCANCELAR_CLICK
Private Sub cmdcancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcancelar.Click
'VOLTANDO A TELA PARA O ESTADO INICIAL, QUANDO A RODAMOS PELA PRIMEIRA VEZ
pnlchave.Enabled = True
pnlcampos.Enabled = False
txtcodcli.Text = ""
txtnomecli.Text = ""
txtsalariocli.Text = ""
cbosexocli.Text = ""
msknascimentocli.Text = ""
Página
cmdalterar.Visible = False
cmdexcluir.Visible = False
cmdconfirmar.Visible = False
cmdcancelar.Visible = False
txtcodcli.Focus()
End Sub
Curso de Informática – Cti / UniVap
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
CMDALTERAR_CLICK
Private Sub cmdalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdalterar.Click
'PROTEGENDO O CÓDIGO DO CLIENTE CONTRA ALTERAÇÃO
pnlcampos.Enabled = True
'LIBERANDO OS CAMPOS DA TELA PARA ALTERAÇÃO DO REGISTRO EXIBIDO
pnlchave.Enabled = False
'TORNANDO OS BOTÕES ALTERAR e EXCLUIR INVISÍVEIS
cmdalterar.Visible = False
cmdexcluir.Visible = False
'TORNANDO VISÍVEL O BOTÃO CONFIRMAR
cmdconfirmar.Visible = True
'VAMOS FAZER ALTERAÇÃO, PORTANTO A VARIÁVEL BOTAO = 2
BOTAO = 2
'COLOCANDO O CURSOR NO CAMPO TXTCODCLI
txtcodcli.Focus()
End Sub
CMDEXCLUIR_CLICK
Private Sub cmdexcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdexcluir.Click
'PROTEGENDO O CÓDIGO DO CLIENTE CONTRA ALTERAÇÃO
pnlcampos.Enabled = False
'PROTEGENDO OS CAMPOS DA TELA PARA NÃO PERMITIR ALTERAÇÃO DOS DADOS
pnlchave.Enabled = False
'TORNANDO OS BOTÕES ALTERAR e EXCLUIR INVISÍVEIS
cmdalterar.Visible = False
cmdexcluir.Visible = False
'TORNANDO VISÍVEL O BOTÃO CONFIRMAR
cmdconfirmar.Visible = True
'VAMOS FAZER EXCLUSÃO, PORTANTO A VARIÁVEL BOTAO = 3
BOTAO = 3
End Sub
CMDCONFIRMAR_CLICK
Private Sub cmdconfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdconfirmar.Click
'FAZENDO OS TEXTES DE CONSISTÊNCIAS DE DADOS PARA O NOVO REGISTRO DE CLIENTES
'VERIFICANDO SE O CAMPO DO NOME DO CLIENTE FOI PREENCHIDO
If txtnomecli.Text.Trim = "" Then
MsgBox("Informe o nome do cliente.", MsgBoxStyle.Information, "Aviso:")
txtnomecli.Focus()
Exit Sub
End If
Curso de Informática – Cti / UniVap
Página
'VERIFICANDO SE O SALÁRIO É UM NÚMERO
If Not IsNumeric(txtsalariocli.Text) Then
MsgBox("Informe corretamente o salário do cliente.", MsgBoxStyle.Exclamation, "Aviso:")
txtsalariocli.Focus()
Exit Sub
End If
Vb.net 2008 – Professor Alberson Wander Sá dos Santos
'VERIFICANDO SE O COMBO DO SEXO NÃO ESTÁ VAZIO
If cbosexocli.Text.Trim = "" Then
MsgBox("Selecione o sexo do cliente.", MsgBoxStyle.Exclamation, "Aviso")
cbosexocli.Focus()
Exit Sub
End If
'VERIFICANDO SE A DATA DE NASCIMENTO É UMA DATA VÁLIDA
If Not IsDate(msknascimentocli.Text) Then
MsgBox("Informe corretamente a data de nascimento.", MsgBoxStyle.Information, "Aviso:")
msknascimentocli.Focus()
Exit Sub
End If
'criando conexão com o banco, diante do caminho indicado na variável caminhoconexao
Dim conexao As New SqlConnection(caminhoconexao)
Dim comando As SqlCommand = conexao.CreateCommand
Dim sexo As String
sexo = cbosexocli.Text.ToUpper.First
'TROCANDO A VÍRGULA (CASO APAREÇA) DO SALÁRIO, POR PONTO
txtsalariocli.Text = Replace(txtsalariocli.Text, ",", ".")
Select Case BOTAO
Case 1
'criando a instrução SQL para cadastrar o registro digitado
comando.CommandText = ("insert into clientes(codcli, nomecli, salariocli, sexocli, nascimentocli) values(" & txtcodcli.Text & ",'" &
txtnomecli.Text & "'," & txtsalariocli.Text & ",'" & sexo & "',CONVERT(datetime,'" & msknascimentocli.Text & "',103))")
Case 2
'criando a instrução SQL para alterar o registro exibido
comando.CommandText = ("update clientes set nomecli = '" & txtnomecli.Text & "',salariocli= " & txtsalariocli.Text & ", sexocli= '" &
sexo & "', nascimentocli= CONVERT(datetime,'" & msknascimentocli.Text & "',103) where codcli = " & txtcodcli.Text)
Case 3
'criando a instrução SQL para excluir o registro exibido
comando.CommandText = ("delete from clientes where codcli = " & txtcodcli.Text)
End Select
Try
'estabelecendo a conexão com o banco de dados
conexao.Open()
'executando o comandtext definido(operação: cadastro, alteração ou exclusão)
comando.ExecuteNonQuery()
'encerrando a conexão com o banco de dados
conexao.Close()
Catch ex As Exception
MsgBox("Erro: " & Err.Number & "-" & Err.Description, MsgBoxStyle.Critical, "Aviso:")
End Try
'executando a programação do botão cancelar, ou seja,
'limpando a tela e voltando-a para o estado inicial
cmdcancelar_Click(sender, e)
End Sub
End Class
Página
Curso de Informática – Cti / UniVap
Download