aulavb
TRANSCRIPT
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 1/63
Programação Estruturada
Visual Studio 2005
VB.Net
Prof. Carlos Bueno
Versão 1.2 – 15/09/2009
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 2/63
Programação Estruturada – VB.Net
1
Olá Mundo
Quase todos os autores de livros e artigos sobre programação, seja qual for a
linguagem, utilizam um programa muito conhecido para demonstrar os primeiros
passos do desenvolvimento, o clássico “Ola Mundo...” (“Hello World!” em inglês),
que tem por objetivo exibir uma mensagem com este texto no monitor. Comigo não
será diferente, após instalar o Visual Studio 2005 você já pode desenvolver suas
aplicações em VB.Net, portanto, vamos ao nosso primeiro programa.
Nota: Antes de começarmos, vamos criar um diretório na pasta raiz do sistema, ou
do seu PenDrive , com o seguinte nome: aulasvbnet. Dentro desse diretório vamos
criar todos os nossos exercícios.
Vamos começar executando o Visual Studio 2005, ele fica localizado no menu
Iniciar > Programas> Microsoft Visual Studio 2005 .
Ao executar o programa, na tela inicial, clicar no menu File > New > Project .
Na tela seguinte escolha:
Tipo do projeto: Visual Basic
Modelo: Windows Application
Nome: OlaMundo
Localização: c:\aulasvbnet (se na sua versão não aparece essa opção, não se
preocupe, ele irá perguntar o caminho quando salvar pela primeira vez)
Deixe marcada a opção: Create directory for solution
Depois clique no botão OK conforme imagem abaixo.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 3/63
Programação Estruturada – VB.Net
2
Na tela seguinte, note que automaticamente ele cria um formulário de nome
Form1. Localize nesta tela as seguintes janelas: Toolbox , Solution Explorer e
Properties . Caso já não estejam visíveis, acesse-as pelo menu View . A janela
Toolbox possui todos os objetos disponíveis para criar seu programa. A janela
Solution Explorer mostra todos os arquivos envolvidos no seu programa, como
formulários, classes e módulos. A janela Properties exibe as propriedades dos
objetos selecionados.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 4/63
Programação Estruturada – VB.Net
3
Com o formulário Form1 selecionado, clique na janela Toolbox e escolha o
objeto Label, depois com um clique no formulário principal, posicione o objeto label1,
mais ou menos no centro.
Selecione o Label que acabou de criar. Note que na janela Properties está
aparecendo o nome Label1. Procure a propriedade Text do objeto Label1 e escreva“Ola Mundo...!”.
Vamos salvar nosso projeto clique no menu File > Save All , ou clique no
botão na barra de ferramentas que tem um símbolo com vários disquetes.
Para rodar seu primeiro programa clique no menu Debug > Start Debugging ou
ainda escolha o ícone da barra de ferramentas conhecido como Play >, ou também
pressionar a tecla de funções F5.
Se você não cometeu nenhum erro, seu programa será compilado e uma
janela com a mensagem “Ola Mundo...!” aparecerá.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 5/63
Programação Estruturada – VB.Net
4
Execício:
Para se familiarizar com as propriedades dos objetos, selecione o label1 e
procure a propriedade Font, clique no botão [...] que aparece na frente para abrir a
janela de configuração de fonte e faça ai algumas alterações a seu gosto, depois
execute o programa para testar.
Dica: Dentro do diretório Bin\Debug tem um arquivo com a extensão .EXE que é o
executável do seu programa, que pode ser distribuído.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 6/63
Programação Estruturada – VB.Net
5
Trabalhando com objetos em VB.NET (Classes)
Tipo Projeto: Windows Application
Nome do Projeto: aula002
Local do Projeto: c:\aulasvbnet\aula002
Create directory for solution Marcado
A Classe form. Ao ser iniciado um novo projeto "Windows Application" no
VB.Net, um formulário chamado de Form1 é adicionado automaticamente ao seu
projeto. Vamos ver algumas propriedades do objeto.
1º - Rode a aplicação (F5) e veja como o formulário se apresenta, faça alguns
testes, do tipo minimizar, maximizar, redimensionar e fechar [ X ];
2º - Vamos alterar algumas propriedades e testar:
Propriedade Valor
Name frmPrincipal
Text Testando o Formulário
WindowsState Maximized
3º - Mude a cor do fundo para amarelo, propriedade BackColor , teste o seu
formulário.
4º - Mude a propriedade StartPosition para CenterScreen , teste e veja o que
aconteceu. Tente solucionar o problema.
5º - Vamos colocar um ícone em nosso formulário. Copie um arquivo de ícone(extensão .ico) para uma pasta de trabalho definido por você (pode ser a do próprio
projeto). Mude a propriedade Icon do formulário clicando nos três pontinhos [...] e
apontando para o arquivo do icone a ser usado.
Neste exemplo utilizei um ícone de uma engrenagem. O seu resultado deve
parecer com a figura abaixo.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 7/63
Programação Estruturada – VB.Net
6
Agora vamos colocar um outro objeto dentro do objeto form:
Na janela toolbox , procure o objeto button e o inclua no formulário principal,
em seguida altere as seguintes propriedades:
Propriedade Valor
Name
btnSair
Text &Sair (para que serve esse &?)
BackColor System / Control
Execute o seu programa e clique no botão Sair para finalizar o programa. Não
funcionou? Que estranho! O que está faltando? Mais pra frente vocês irão aprender
alguma coisa sobre eventos para solucionar esse problema.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 8/63
Programação Estruturada – VB.Net
7
Maximize seu formulário e veja que o local onde o botão btnSair está não
ficou muito legal, alias ficou horrível. Temos uma propriedade do objeto Button que
resolve esse problema: Anchor.
Inverta a marcação conforme a imagem, clicando no local destacado para
marcar e clicando no local sinalizado com cinza para desmarcar.
Execute e maximize ou redimensione o formulário para poder testar esse
recurso.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 9/63
Programação Estruturada – VB.Net
8
Você deve ter notado que até o momento não escrevemos uma linha de
código sequer e já temos uma aplicação windows rodando com vários recursos.
Bem vindos ao VB.NET.
Exercício:
Na pasta \bin\Debug tem um arquivo com a extensão .exe, faça algumas
alterações, na tela, a seu gosto e rode o seu aplicativo, agora você pode levar esse
arquivo aula002.exe para outra maquina e testar. Isso chama-se distribuir a
aplicação.
Distribua sua aplicação windows para um colega seu. Ah! Ele não pode fazeralterações no seu projeto. Que pena. Isso quer dizer que quem tem o código fonte é
você e apenas você pode alterar o programa.
Dicas:
- O nome dos objetos é definido por você, mas os programadores usam
algumas simbologias para facilitar a identificação dos objetos no código fonte.
Por exemplo:
btn - Objeto button
frm - Objeto form
lbl - Objeto label
txt - Objeto text
mnu - objeto menu
E assim por diante, isso não é uma regra, mas é bastante utilizado.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 10/63
Programação Estruturada – VB.Net
9
Trabalhando com eventos
Tipo Projeto: Windows Application
Nome do Projeto: eventos
Local do Projeto: c:\aulasvbnet\aula003
Eventos - Os eventos são funções executadas em um determinado momento,
dependendo de seu tipo. Por exemplo, o evento Load do formulário é executado
assim que o formulário é executado (antes deste ser exibido), o evento MouseDown
quanto o botão é pressionado, MouseUp quando o botão é solto e assim por diante.Nem todos os componentes possuem os mesmos eventos. O evento Load ,
por exemplo, é usado apenas no form.
Abaixo segue uma relação dos principais eventos e suas respectivas funções:
- Click: É um evento que executa quando alguém clica sobre algum objeto.
- Dblclick: Executa ações quando alguém clica duas vezes sobre algum
objeto.- Resize: Executa algum comando pré-estabelecido quando o usuário
redimensiona o form.
- Load: Executa ordens sempre que o programa for carregado na memória.
- Gotfocus: Quando um objeto apenas ganha o foco (fica selecionado).
- Lostfocus: Executa algum comando quando o foco passa para um outro
objeto.
-
Keypress: Quando é pressionada alguma tecla ele é acionado.- Mousemove: Sempre que se move o mouse.
Não se preocupe com esses nomes todos, vamos aprendendo a usar aos pouco,
não é preciso decorar nada.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 11/63
Programação Estruturada – VB.Net
10
Vamos a um exemplo prático no projeto que foi criado para essa parte:
Objetos Propriedade = Valor
Form
Name = frmPrincipal
Text = Trabalhando com Eventos
Button1
Name = btnSair
Text = &Sair
Coloque o seguinte código no evento click do botão: btnsair
Me.Close()
Teste o programa e veja o evento click funcionando.
Continuando. No evento DoubleClick do formulário frmPrincipal, coloque o
seguinte código:
Messagebox.Show("Clicando duas vezes no formulário!")
Execute e dê um duplo clique no formulário.
No evento FormClosing do formulário frmPrincipal, coloque o seguinte
código:
MessageBox.Show("Estou Saindo!!!")
Execute e dê um duplo clique no [X] ou no botão Sair.
Dicas:
- Para colocar o código em um evento click do botão, em tempo de criação
do projeto, basta dar dois cliques no botão e você vai parar no editor de código já
com o evento criado.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 12/63
Programação Estruturada – VB.Net
11
Exercício:
Vamos a mais um exemplo usando evento, e aproveitamos para aprofundarnossos conhecimentos de propriedades.
Crie um novo projeto em VB.NET com as especificações abaixo e coloque os
seguintes objetos no formulário:
Tipo Projeto: Windows Application
Nome do Projeto: exeventos
Local do Projeto: c:\aulasvbnet\aula003
Objetos Propriedade = Valor
FormName = frmPrincipal
Text = Trabalhando com Eventos
ButtonName = btnIncluir
Text = &Incluir
TextBoxName = txtNome
Text =
Label Text = Nome:
Listbox Name = lstNomes
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 13/63
Programação Estruturada – VB.Net
12
No evento Load do formulário vamos colocar o seguinte código:
txtNome.Text = ""Me.lstNomes.Items.Clear()
E no evento Click do botão incluir, o seguinte código:
lstNomes.Items.Add(txtNome.Text)
Teste o seu exercício, ele deve estar como na figura abaixo:
Dicas:
- Seria bom incluir uma instrução para limpar o texto já processado e fazer ofoco da próxima ação parar no local de digitação. Para isso inclua o seguinte código
no botão incluir:
txtNome.Text = ""
txtNome.Focus()
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 14/63
Programação Estruturada – VB.Net
13
Trabalhando com Variáveis, constantes e
outros conceitos
Constantes, Variáveis e Tipos de Dados
Variáveis e constantes são os elementos básicos que um programa manipula.
Uma variável é um espaço reservado na memória do computador para armazenar
um tipo de dado determinado.
Variáveis devem receber nomes para poderem ser referenciadas e
modificadas quando necessário. Um programa deve conter declarações queespecificam de que tipo são as variáveis que ele utilizará e às vezes um valor inicial.
Os tipos podem ser, por exemplo: inteiros, reais, caracteres, etc. As expressões
combinam variáveis e constantes para calcular novos valores.
Constantes
Constante é um determinado valor fixo que não se modifica ao longo do
tempo durante a execução de um programa. Conforme o seu tipo, a constante éclassificada como sendo numérica, lógica e literal.
Exemplo de constantes:
Variáveis
Variável é a representação simbólica dos elementos de certo conjunto. Cada
variável corresponde a uma posição de memória, cujo conteúdo pode se alterado ao
longo do tempo durante a execução de um programa. Embora uma variável (um
endereço de memória) possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 15/63
Programação Estruturada – VB.Net
14
Tipos de Variáveis
As variáveis e as constantes podem ser basicamente de três tipos:
Numéricas, Alfanuméricas ou lógicas.
Numéricas - Específicas para armazenamento de números, que
posteriormente poderão ser utilizados para cálculos. Podem ser ainda classificadas
como Inteiras ou Reais. As variáveis do tipo inteiro são para armazenamento de
números inteiros e as Reais são para o armazenamento de números que possuam
casas decimais.
Alfanuméricas - Específicas para dados que contenham letras e/ou números.Pode em determinados momentos conter somente dados numéricos ou somente
literais. Se usado somente para armazenamento de números, não poderá ser
utilizada para operações matemáticas.
Lógicas - Armazenam somente dados lógicos que podem ser Verdadeiro ou
Falso.
Declaração de Variáveis
As variáveis só podem armazenar valores de um mesmo tipo, de maneira que
também são classificadas como sendo numéricas, lógicas e literais.
Decidindo sobre o nome das variáveis:
Um nome de variável não pode ter espaços, em vez disso use o caractere
sublinhado para conectar as palavras:
Ex.: Saldo, Saldo_da_Conta, ou TotalRelatorio
Algumas linguagens são sensiveis à distinção entre maiúsculas e minúsculas.
Ex.: XYZ, xyz (são duas variáveis em C, mas são as mesmas em VB,
portanto cuidado ao criar variáveis).
Utilizando números em nomes de variáveis. Você pode usar números em
qualquer parte do nome de uma variável exceto como primeiro caractere.
Ex.: windows_98, Saldo1, caixa2
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 16/63
Programação Estruturada – VB.Net
15
Identificadores proibidos:
Nas linguagens de programação, determinadas palavras-chave são básicas
às funções do compilador. Você não pode utilizar estas palavras reservadas comonome de variáveis.
Ex.: for, while, do (do Visual Basic), begin, end, program (no Delphi ).
O tipo da variável
Após decidir sobre o nome da variável, você também deve decidir sobre o tipo
da variável. Um tipo descreve como uma variável será utilizada e que tipo de
informação ela pode armazenar.Todas as declarações de variáveis devem vir antes do código onde são
utilizadas.
Nota: Algumas linguagens não possuem declarações de variáveis ou
consideram a declaração opcional, na primeira vez que o compilador vê uma
variável, ele determina tanto baseado no contexto como na primeira letra da variável
que tipo ela é e qual o valor ela deve ter quando for utilizada pela primeira vez.
A declaração das variáveis impede o uso de variáveis de forma errada ou que
não existem, pois o compilador encontra essas variáveis e emite um aviso de erro
durante a compilação.
Exemplos de variáveis e atribuição de conteúdos
Debito = 0
Saldo_inicial = 0
Contador = 1000
Mensagem = "Você tem certeza ? "
Saldo = Credito - Debito
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 17/63
Programação Estruturada – VB.Net
16
Exercícios
1) Declare duas variáveis numéricas atribuindo valores a elas no evento Load doformulário.
2) Qual das variaveis está com conteúdo errado
1. ( ) Nome = 154
2. ( ) Cliente = "Ana Maria"
3. ( ) Valor = 1200
4. ( ) Divida = Cliente + Valor
Para declarar variáveis em VB.Net usamos a instrução Dim seguida do nome
da variável, do tipo e o valor inicial da mesma. Com isso estamos dizendo ao VB.Net
que reserve um local da memória para guardar valores.
Exemplos:
Variáveis
Dim AvisoErro As String
AvisoErro = "Nome não encontrado..."
Dim Idade As Integer = 30
Constantes
Const AnoBase As Integer = 2005
Const LOCAL_DADOS As String = "c:\prog\Dados"
Dicas:- Não esqueça de fazer os exercícios das aulas e praticar.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 18/63
Programação Estruturada – VB.Net
17
Exemplo:
Crie o projeto abaixo e coloque os objetos como indicado.
Tipo Projeto: Windows Application
Nome do Projeto: Calculadora
Local do Projeto: c:\aulasvbnet
Objetos Propriedade = Valor
FormName = frmPrincipal
Text = Calculadora
ButtonName = btnSomar
Text = &Somar
TextBoxName = txtvalor1
Text =
TextBoxName = txtvalor2
Text =
LabelName = lblTotal
Text = 0
Label Text = Valor 1:
Label Text = valor 2:
Label Text = SOMA:
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 19/63
Programação Estruturada – VB.Net
18
Agora, no evento Click do botão Somar coloque o seguinte código:
Dim intTotal As IntegerintTotal = Integer.Parse(txtValor1.Text) + Integer.Parse(txtValor2.Text)
lblTotal.Text = intTotal.ToString
A função destacada Integer.Parse tem o objetivo de converter o texto
passado de string para Inteiro e a propriedade ToString tem a função de converter
para string o valor calculado na variável intTotal antes de mostrar no label.
Veja que em VB.NET todas as variáveis são tratadas como objetos.
ATENÇÂO: Veja a tabela de Operadores aritméticos e a ordem de precedência dos
mesmos.
Praticando:
1 – Faça o seguinte programa:
Crie um formulário que peça a Idade de pessoa e calcule:
a. Quantos Dias de vida a pessoa tem;
b. Quantas Horas de vida a pessoa tem;
Formulas:
DiasVida = Idade * 365
HorasVida = (Idade * 365 ) * 24
2 – Faça um programa que:
Ao ser informado o valor da compra e o valor do desconto (em porcentagem)dessa compra, informe na tela, destacado, o total a ser pago pelo cliente.
Formula: ValorCompra = ValorCompra - (ValorCompra * Desconto) / 100
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 20/63
Programação Estruturada – VB.Net
19
Trabalhando com estruturas de controle (If /
Case)
A Instrução IF THEN ELSE
A instrução IF pode ser usada para executar uma instrução quando a
condição for verdadeira (If/Then Se/Então), ou para escolher entre duas opções (If-
Then-Else, Se-então-senão). A condição deve ser uma expressão booleana (lógica).
Sintaxe:
IF condição [ THEN ]
[ ação ]
Else
[ ação ]
End If
Veja no final da apostila a tabela de operadores relacionais / Lógicos usados
nas condições do comando IF.
A Instrução SELECT CASE
A instrução SELECT CASE foi projetada para tornar fácil testar vários valores
possíveis de uma determinada variável ou expressão.
Entretanto ela não permite que sejam avaliados os valores possíveis para
mais do que uma expressão, como a instrução IF faz. A sintaxe é a seguinte:
Select Case Expressão
Case valor1
' Instruções a serem executadas
Case valor2
' Instruções a serem executadas
Case valor3
' Instruções a serem executadas
Case Else
' Instruções a serem executadas
End Select
A sintaxe é simples, mas há algumas opções e escolhas sutis que osdesenvolvedores devem levar em consideração quando estiverem codificando.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 21/63
Programação Estruturada – VB.Net
20
Primeiro, a expressão de teste deve ter mais de dois resultados, caso
contrário, a instrução IF seria a melhor escolha.
Em segundo lugar, a instrução CASE será avaliada até que uma condiçãoverdadeira tenha sido encontrada ou CASE ELSE seja executada. Com isso em
mente, você deve colocar as instruções case em ordem de probabilidade, ou seja,
as que têm mais chance de ocorrer são codificadas primeiro. A instrução case pode
conter expressões bastante complexas, e possui diversas variações, como ilustrado
a seguir:
Expressão simples
Case 8
Varios ítens
Case 8,4,0
Intervalos
Case 6 to 19
Expressão de comparação:
Case Is > 12
Expressão composta:
Case 5, 8, 11 To 14, Is > 40
Exercícios:
Considerando para esse exercício que o valor que define maioridade seja 18
anos, vamos fazer um programa que pergunte o nome e a idade de uma pessoa e
informe na tela se a mesma é Maior ou Menor de idade.
Crie o projeto abaixo e coloque os objetos no mesmo:
Tipo Projeto: Windows Application
Nome do Projeto: Verificador
Local do Projeto: c:\aulasvbnet
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 22/63
Programação Estruturada – VB.Net
21
Objetos Propriedade = Valor
FormName = frmPrincipal
Text = Verificador de Idade
ButtonName = btnVerificar
Text = &Verificar
TextBoxName = txtNome
Text =
TextBoxName = txtIdade
Text =
LabelName = lblSituacao
Text =
Label Text = Nome:Label Text = Idade:
Label Text = Situação:
Com um exemplo simples em VB.NET podemos mostrar como trabalhar com
instruções condicionais.
No evento Click do botão Verificar coloque o seguinte código:
If Integer.Parse(txtIdade.Text) > 18 Then
lblSituacao.Text = "Maior"
Else
lblSituacao.Text = "Menor"
End If
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 23/63
Programação Estruturada – VB.Net
22
O seguinte código pode ser colocado no evento Validating do objeto txtIdade
para evitar que se tente entrar com uma idade que não seja numérica.
If Not IsNumeric(txtIdade.Text) Then
MessageBox.Show("Favor digitar um valor no campo idade")
txtIdade.Text = ""
e.Cancel = True
End If
O importante nesse exercício é você perceber que o seu programa pode
tomar uma decisão, ou seja, adotar um caminho a seguir.
Praticando:
1 – Faça um programa que receba vários números e imprima qual é o maior.
2 – Um empresário resolveu dar descontos nas vendas conforme a seguinte tabela:
De: 1,00 até 100,00 - 5% Desconto
De: 101,00 até 500,00 - 8% Desconto
De: 501,00 até 1.000,00 - 10% Desconto
Acima de 1.001,00 - 15% Desconto
Faça um programa que o usuário entre com o valor da compra e a tela
informe o desconto e o valor a cobrar.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 24/63
Programação Estruturada – VB.Net
23
Trabalhando com Sub e Functions
Os métodos são ações que um objeto executa. Há dois tipos de métodos no
VB.Net: Os procedimentos (mais conhecidos como SUBs) e as funções.
Um recurso de organizar um código é uso de SUBROTINAS ou FUNÇÕES. O
uso de Function é essencialmente igual a funções embutidas, tipo isNumeric ou
CDate , só que cada programador pode criar de acordo com sua necessidade. A
estrutura básica de uma função é:
[ Private/Public ] Function nome([ arglista ]) [ As tipo ]
[ ação ]
[ Exit Function ]
[ ação ]
End Function
[ Private/Public ] Sub nome([ arglista ])
[ ação ]
[ Exit Sub ]
[ ação ]
End Sub
Function é o tipo de subprocedimento que podemos criar com o VB. Elas se
diferem das Subs porque retornam um valor.
Aqui, NOME é o nome da função que o programador define. (arglista) são
argumentos da função, [As tipo] é o tipo de valor retornado pela função.
Exemplo:
Function SomaAB(ByVal a As Double, ByVal b As Double) As Double
Return (a + b)
End Function
Sub - A característica principal das subs é o não retorno de valores.
Exemplo:
Sub MessagemOk()
MessageBox.Show("Operação realizada com sucesso!")
End Sub
Sub Messagem(ByVal strMsg As String)MessageBox.Show("Msg: " & strMsg)
End Sub
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 25/63
Programação Estruturada – VB.Net
24
Exercícios:
Crie o projeto abaixo e coloque os objetos como descrito:
Tipo Projeto: Windows Application
Nome do Projeto: Funcoes
Local do Projeto: c:\aulasvbnet
Objetos Propriedade = Valor
FormName = frmPrincipal
Text = Exemplo de Funções
ButtonName = btnCalcular
Text = &Calcular
TextBoxName = txtNumero1
Text =
TextBoxName =txtNumero2
Text =
TextBoxName =txtNumero3
Text =
Label Text = Numero-1
Label Text = Numero-2
Label Text = Numero-3
Label Text = Soma:
Label Text = Média:
Label
Text =
name = lblSoma
Fonte = Tahoma, Negrito, 12, vermelho
Label
Text =
name = lblmedia
Fonte = Tahoma, Negrito, 12, vermelho
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 26/63
Programação Estruturada – VB.Net
25
Antes aproveite e digite as funções abaixo, fora da sub btnCalcular_Click:
Private Function Soma3(ByVal Valor1 As Double, ByVal Valor2 As Double,
ByVal Valor3 As Double) As Double
Return (Valor1 + Valor2 + Valor3)
End Function
Private Function Media3(ByVal Valor1 As Double, ByVal Valor2 As Double,
ByVal Valor3 As Double) As Double
Return Soma3(Valor1, Valor2, Valor3) / 3
End Function
No evento Click do botão Calcular coloque o seguinte código:
Dim n1, n2, n3 As Double
n1 = Double.Parse(txtNumero1.Text) ' Converte para double
n2 = Double.Parse(txtNumero2.Text)
n3 = Double.Parse(txtNumero3.Text)
lblSoma.Text = Soma3(n1, n2, n3).ToString
lblMedia.Text = Media3(n1, n2, n3).ToString
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 27/63
Programação Estruturada – VB.Net
26
Trabalhando com Estruturas de repetição -
Laços
For - O loop for no VB baseia-se estritamente em um contador, o qual pode
ser aumentado ou diminuído cada vez que o loop for executado. O contador é
inicializado e o loop irá se repetir enquanto o contador não chegar ao fim da
contagem. O seu formato básico é:
For contador [ As TipoDado ] = Inicio To Fim [ Step passo ][ Instruções ]
[ Exit For ]
[ Instruções ]
Next [ contador ]
Exemplo For :
Dim i As Integer
For i = 1 To 30
lstLista.Items.add(i.ToString)
Next i
While - é um comando de repetição que não possui controle de um contador
e que testa a condição antes de executar o loop . Este loop irá se repetir enquanto a
condição seja verdadeira, existe a possibilidade de que ele nunca venha a ser
executado. A sua forma básica é:
While Condição
[ Instruções ]End While
Exemplo While:
Dim contador As Integer = 0
While contador < 20
contador = contador + 1 ' ou contador += 1
If contador = 10 Then
Messagebox.Show("Valor do contador: " & contador.tostring
End If
End While
MessageBox.Show("Final do contador: " & contador.ToString)
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 28/63
Programação Estruturada – VB.Net
27
Dicas:
- Quando utilizamos laços numéricos (for ) é muito comum que a variável do
laço seja específica para esta finalidade. Então, ao invés de fazermos um dim comuma variável específica para isso podemos declarar a variável diretamente na
instrução do laço, veja como fica:
For i As Integer = 1 To 100
[ Código ]
Next i
A variável “i” se torna uma variável com escopo de bloco, então ela só éválida dentro do laço, fora do laço a variável não existe.
Exercícios:
Vamos criar um exemplo usando a instrução (comando) for. Crie o projeto
abaixo e coloque os objetos como descrito:
Tipo Projeto: Windows Application
Nome do Projeto: Repeticao
Local do Projeto: c:\aulasvbnet
Objetos Propriedade = Valor
FormName = frmPrincipal
Text = Exemplo FOR
Button
Name = btnIniciar
Text = Iniciar
ListBoxName = lstLista
Text =
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 29/63
Programação Estruturada – VB.Net
28
No evento Click do botão Iniciar coloque o seguinte código:
Dim intInd As Integer
lstlista.Items.clear() ' Limpa a lista
For intInd = 1 To 10
' Monta a linha de detalhe
lstLista.Items.add(intInd.ToString & " X 3 = " & (intInd * 3).ToString)
Next
Observe que você pode montar uma string (conteúdo alfa numérico) usando o
& para conectar duas ou mais Strings. Por exemplo:
var1 = "Ola "
var2 = "Mundo...!"
var1 & var2 vai ter como conteúdo: Ola Mundo...!
O mesmo exemplo usando a instrução While
Dim intInd As Integer
lstlista.Items.clear() ' Limpa a lista
While intInd <= 10
' Monta a linha de detalhe
lstLista.Items.add(intInd.ToString & " X 3 = " & (intInd * 3).ToString)
intInd = intInd + 1 ' conhecido em programação como contador
End While
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 30/63
Programação Estruturada – VB.Net
29
Praticando:
1 – Faça um programa que mostre todos os números pares entre 7 e 46, use For.2 – Altere o programa acima para mostrar também a soma total desses valores.
3 – Faça um programa que mostre todas as tabuadas do 1 ao 10.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 31/63
Programação Estruturada – VB.Net
30
Criando um pequeno Editor em VB.NET
Tipo Projeto: Windows Application
Nome do Projeto: Editor
Local do Projeto: c:\aulasvbnet
Crie o projeto acima e coloque os seguintes objetos no mesmo:
Objetos Propriedade = Valor
Form Name = frmPrincipalText = Editor Simples de textos
TextBox
Name = txtTexto
Multiline = True
Text =
Button
name = btnSalvar
Text = &Salvar
Label Text = Arquivo:
TextBox
Name = txtArquivo
Text =
Distribua os objetos como na figura abaixo:
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 32/63
Programação Estruturada – VB.Net
31
1) No início do programa, acima da linha Public Class frmPrincipal , coloque o
seguinte:
Imports System.IO ' Isso habilita o sistema de Entrada e Saida
2) No evento clique do botão Salvar coloque o seguinte código:
Dim oeditor As StreamWriter
oeditor = File.CreateText(txtTexto.Text)
oeditor.Write(txtarquivo.Text)
oeditor.Close()
Dicas:
- Pesquise como ler o conteúdo de um arquivo, usando o tipo streamreader .
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 33/63
Programação Estruturada – VB.Net
32
Um pouco de matemática
Detectamos que em seu acompanhamento do curso você aprendeu bem o
Copiar / Colar, a partir dessa parte do curso, o famoso Ctrl+C e o Ctrl+V, já não vão
ser tão úteis assim.
1) Faça um programa que calcule o Delta da fórmula de Bháskara:
Todas as informações vistas na imagem acima devem aparece no seu
programa.
Os fontes desse programa não foram colocados aqui de propósito.
Dicas:
- No final desta apostila tem várias tabelas úteis para você resolver os
problemas.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 34/63
Programação Estruturada – VB.Net
33
Trabalhando com banco de dados
Iremos ver agora uma visão geral do extenso suporte a bancos de dados do
VB.NET.
Conceitos Básicos
Antes de iniciarmos é preciso conhecer os conceitos básicos relacionados aos
bancos de dados. Não pretendo esgotar o assunto, mas dar uma visão geral para
facilitar a compreensão dos próximos tópicos.
Sistema gerenciador de banco de dados (SGBD): Programa usado para
guardar, organizar e recuperar dados. Ex.: MS-SQL Server, Oracle, Sybase, etc.
Estrutura lógica do banco de dados: Definição dos dados que o banco de
dados vai conter, especificando tabelas, colunas, relacionamentos, etc (M.E.R. e
D.E.R).
Estrutura física do banco de dados: Arquivos onde os dados são gravados.
Ex.: No Paradox cada tabela corresponde a um arquivo com extensão *.db; no
Access várias tabelas são agrupadas em um único arquivo com extensão *.mdb.
Tabela: Tabelas são agrupamentos de dados afins dentro da estrutura lógica.
As tabelas são divididas em linhas e colunas. Ex.: Uma tabela de clientes agrupadados de todos os clientes cadastrados. Cada linha da tabela de clientes contém
dados de um cliente específico. Cada coluna da tabela de clientes representa um
atributo dos clientes – o nome, o código, o logradouro, etc.
Abaixo vemos o fluxo básico dos passos e objetos necessários para integrar
uma aplicação VB.NET ao banco de dados.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 35/63
Programação Estruturada – VB.Net
34
CONEXÃO
COMANDO
LISTA
Aplicação VB.NETAplicação VB.NET
Bancode
Dados
O primeiro passo é criar um objeto que fará a conexão com o banco dedados. Este objeto fará a ponte para o envio de comandos da aplicação para o
banco de dados. Para isso, devemos informar a este objeto todas as informações de
como achar o banco, tais como tipo de provedor de acesso, endereço do servidor,
usuário e senha. Estas informações são passadas através da String de Conexão
(ou Connection String). O formato típico de uma “string de conexão” é:
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=nomeDatabase;User ID
= meuUsuario; Password = minhaSenha;".Com o objeto devidamente configurado, devemos abrir a conexão, e se todos
os dados estiverem corretos, a ligação com o banco de dados será bem sucedida.
Em segundo, para executarmos modificações e consultas no banco de dados,
precisamos criar um objeto de Comando. Este objeto é o responsável por enviar as
instruções SQL ao banco e retornar os resultados da execução. Para saber em qual
banco de dados o comando será executado, ele utiliza o objeto de conexão como
ponte. Se os comandos forem de modificação no banco (INSERT, UPDATE,
DELETE), o objeto de comando retorna um número inteiro contendo quantas linhas
foram afetadas na tabela. Se a instrução for uma consulta, o comando retorna um
objeto do tipo Lista (similar à tabela) contendo todas as linhas e colunas referentes à
consulta executada. Com este objeto Lista, podemos exibir os dados em tela como
um grid ou nos campos.
Dicas:
- Leia o capítulo de Instruções SQL no final desta apostila.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 36/63
Programação Estruturada – VB.Net
35
ADO.NET
A partir desse ponto vamos tratar do acesso a dados em VB.NET, fazendouso do novo modelo de acesso a dados incluído na plataforma .NET, o ADO.NET.
Vamos aprender as tarefas básicas para acesso a dados com aplicações baseadas
em formulários windows, empregando a tecnologia ADO.NET.
O que é ADO.NET ?
- Nova biblioteca de acesso a banco de dados;- Desenvolvida especialmente para a plataforma .NET (DotNet);
- Acessivel de qualquer linguagem da plataforma.
É importante observar que o ADO.NET não é obrigatorio para acesso a base
de dados, você pode usar outras tecnologias, como o ADO tradicional.
Vantagens do ADO.NET
- Acesso a banco de dados desconectados;
- Excelente integração com o padrão XML (facilita a troca de informaçõs
com outros programas);
- Melhor performance;
- Acesso direto a banco de dados SQL Server e Oracle (sem passar por
drivers).
As classes ADO.NET pode ser divididas em dois grandes grupos:
Data Classes - Contém dados
As Data Classes, contém os dados mas não sabem nada a respeito de como
obter os dados, não estão conectadas ao banco de dados.
A principal classe que contém dados é a classe DataSet , que funciona como
um banco de dados em memória. Ele contém objetos do tipo DataTable que refletem
as tabelas do banco de dados, com linhas e colunas.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 37/63
Programação Estruturada – VB.Net
36
Managed Provider - Acessam os dados
Usadas para ler e escrever em banco de dados.
As classes do Manager Provider são usadas para acessso direto aoSQLServer e bancos OLEDB.
As classes têm sempre um prefixo que identifica a família a qual pertencem:
Classe Descrição
SqlCommand
OleDbCommand
Classe que representa um comando SQL (INSERT,
SELECT, Etc.)
SqlConectionOleDbConection
Classe que representa a etapa de cneção com umprovedor de dados.
SqlCommandBuilder
OleDBCommandBuilder
Gerador de comandos SQL de inclusão, alteração e
exclusão através de uma consulta SQL de seleção de
dados.
SqlDataReader
OleDbDataReader
Um leitor de dados forward only (somente para frente),
conectado à base de dados.
SqlDataAdapter
OleDbDataAdapter
Classe adaptadora entre um objeto DataSet e seusopcionais físicos na base de dados (select, insert, update
e delete).
SqlParameter
OleDbparameter
Define os parâmetros usados na chamada a
procedimentos armazenados no banco (store
procedures ).
SqlTransaction
OleDbtransaction
Gerenciamento de transações a serem realizadas em
uma base de dados.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 38/63
Programação Estruturada – VB.Net
37
Trabalhando com banco de dados – Na prática
Agora vamos definir um problema fictício e a partir dele será criado um
programa para exemplificar o acesso ao banco de dados no VB.NET.
Vamos considerar um sistema para movimentação de estoque, onde o
objetivo é cadastrar os produtos de um estabelecimento e controlar entrada e saída
dos mesmos.
Após a escolha do sistema vamos definir a estrutura inicial do nosso Banco
de Dados. Essa fase é muito importante, pois um banco de dados projetado de
forma errada faz com que a aplicação não tenha um bom resultado.
PRODUTO
CD_PRODUTO
DS_PRODUTO
DS_UNIDADE
PRECO_CUSTO
PRECO_VENDA
QT_ESTOQUE
QT_MINIMO
NUMERIC(4)
CHAR(50)
CHAR(2)
NUMERIC(8,2)
NUMERIC(8,2)
NUMERIC(8,2)
NUMERIC(8,2)
<pk>
MOVIMENTO
CD_MOVIMENTO
CD_PRODUTO
DATA_MOVIMENTO
TIPO
QUANTIDADE
NUMERIC(4)
NUMERIC(4)
DATETIME
CHAR(1)
NUMERIC(8,2)
<pk>
<fk>
Criamos estas tabelas em um banco de dados Access de nome
estoque.mdb.Feito isso temos a base de dados para trabalhar com nosso sistema, agora
vamos criar nosso programa com as seguintes características:
Tipo Projeto: Windows Application
Nome do Projeto: AdmEstoque
Local do Projeto: c:\aulasvbnet
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 39/63
Programação Estruturada – VB.Net
38
Agora vamos vincular um banco de dados à nossa aplicação. Para isto abra a
janela de fonte de dados pelo menu Data>Show Data Sources . Abrirá uma janela
como a da figura abaixo:
Clique no link Add New Data Source para abrir a janela de escolha do tipo de
conexão.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 40/63
Programação Estruturada – VB.Net
39
Escolha Database e clique em Next .
Depois clique em New Connection para escolher o banco de dados.
Escolha Microsoft Access Database File e clique em Continue .
Procure o banco de dados access, criado anteriormente, pelo botão Browse .
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 41/63
Programação Estruturada – VB.Net
40
Clique em OK para concluir a conexão. Ao voltar para a tela de escolha de
conexão, clique em Next .
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 42/63
Programação Estruturada – VB.Net
41
Obs.: Para as conexões que usam arquivos, como o access, o .net pergunta se
você quer incluir este arquivo na sua solução. O único problema é que quandoexecutamos a aplicação, o .net copia esta arquivo para a pasta de execução,
limpando o bando de dados que havíamos modificado pela aplicação. Portanto, ao
perguntar se deseja copiar, cliquem em No.
Clique em Next para salvar a string de conexão.
Selecione agora as tabelas que iremos usar e então Finish .
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 43/63
Programação Estruturada – VB.Net
42
Sua janela de Data Sources ficará mais ou menos assim:
Um novo arquivo foi adicionado à sua solução, o app.config. Este arquivo é
formatado em XML e agora armazena a sua string de conexão (tag
<connectionStrings> ).
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 44/63
Programação Estruturada – VB.Net
43
Com nosso banco de dados criado e vinculado à nossa aplicação, podemos
começar a montar as telas.
Renomeie o formulário padrão, de Form1 para frmPrincipal, na janela
Solution Explorer . Abra-o e altere a propriedade isMdiContainer para True . Adicione
ao formulário um objeto do tipo MenuStrip e monte o menu de nossa aplicação(digite na área indicada com Type Here ) com a seguinte hierarquia:
- Cadastros
o Produtos
- Movimentação
o Entrada
o Saída
- Sair
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 45/63
Programação Estruturada – VB.Net
44
Com um duplo clique no menu Sair, cria-se automaticamente o evento clique
do mesmo. Codifique a saída do sistema como segue.
Private Sub SairToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
SairToolStripMenuItem.Click
Application.Exit()
End Sub
Agora adicione mais um formulário à solução, pelo menu Project>Add
Windows Form e dê o nome de frmCadProduto . Codifique o evento click do menu
Produtos para executar este novo formulário.
Private Sub ProdutosToolStripMenuItem_Click( ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ProdutosToolStripMenuItem.Click
frmCadProduto.MdiParent = Me
frmCadProduto.Show()
End Sub
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 46/63
Programação Estruturada – VB.Net
45
Monte os campos de acordo com o que foi modelado na tabela e adicione um
botão Salvar . Não se esqueça de nomear todos os objetos.
Como o objetivo é demonstrar o acesso ao banco de dados, não vamos nos
preocupar em validar os campos neste momento, mas é uma ótima hora parapraticar.
Para usarmos os objetos de acesso a dados, precisamos importa-los para
dentro do formulário, para isso colocamos na primeira linha do código o comando
Imports com a biblioteca que iremos usar. Para acessar o access, usamos as
coleções OleDb e para Sql Server as SqlClient . O comando então é este, para o
nosso exemplo.
Imports System.Data.OleDb
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 47/63
Programação Estruturada – VB.Net
46
Para facilitar a reutilização do código, vamos criar funções que executam
tarefas repetitivas. Como sempre precisamos abrir a conexão, vamos criar uma
função que faça esta parte e daremos o nome de ConectaBanco. Tambémdeclaramos uma variável de conexão no contexto do form, para ser utilizada em
todas as funções que criarmos.
Imports System.Data.OleDb
Public Class frmCadProduto
'Declaramos um objeto de conexão comum ao formulario todo
Dim objConexao As OleDbConnection
Agora o código da função ConectaBanco.
'Sub rotina para conectar no banco de dados Private Sub ConectaBanco()
'Criamos o objeto na memória para uso
objConexao = New OleDbConnection
'Carregamos esse objeto com a string de conexao
'configurada no app.config de nome estoqueConnectionString
objConexao.ConnectionString = My.Settings.estoqueConnectionString
'Usamos o Try para capturar um erro caso ele ocorra
Try
'Abrimos a conexão
objConexao.Open()
Catch ex As Exception
'O erro é capturado pelo objeto ex
MessageBox.Show("Ocorreu um erro: " & ex.Message)End Try
End Sub
Por enquanto vamos programar somente a inserção dos dados. Portanto
vamos ao evento click do botão salvar. Nosso comando insert ficará assim:
INSERT INTO PRODUTO(CD_PRODUTO, DS_PRODUTO, DS_UNIDADE, PRECO_CUSTO,
PRECO_VENDA, QT_ESTOQUE, QT_MINIMO) VALUES(VALOR, ‘VALOR’, ‘VALOR’, VALOR,
VALOR, VALOR, VALOR)
Trocaremos as palavras “Valor” pelo valor informado pelo usuário.
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSalvar.Click
'Chama o método de conexão
Call ConectaBanco()
'Declaramos um objeto de comando
Dim objComando As OleDbCommand
'Criamos o objeto na memória
objComando = New OleDbCommand
'Configuramos a conexão
objComando.Connection = objConexao
'Montamos o comandoobjComando.CommandText = "INSERT INTO PRODUTO(CD_PRODUTO,
DS_PRODUTO, DS_UNIDADE, PRECO_CUSTO, PRECO_VENDA, QT_ESTOQUE, QT_MINIMO)
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 48/63
Programação Estruturada – VB.Net
47
VALUES(" & txtCodigo.Text & ", '" & txtDescricao.Text & "', '" &
txtUnidade.Text & "', " & txtCusto.Text.Replace(",", ".") & ", " &
txtVenda.Text.Replace(",", ".") & ", " & txtEstoque.Text.Replace(",", ".")
& ", " & txtMinimo.Text.Replace(",", ".") & " )"
'Precisaremos de uma variavel para guardar o retorno do comandoDim intQtd As Integer
'Novamente o Try para evitar erro na aplicação
Try
'Executamos o comando e guardamos o resultado
'Usamos o metodo ExecuteNonQuery para insert, update e delete
intQtd = objComando.ExecuteNonQuery
'Se o retorno for maior que 0 o comando fez alguma coisa
If intQtd > 0 Then
MessageBox.Show("Salvo com sucesso!")
End If
Catch ex As Exception
MessageBox.Show("Ocorreu um erro: " & ex.Message)
End Try'Desconecta do banco
objConexao.Close()
End Sub
Ao concatenar os campos numéricos precisamos trocar o caracter “,” por “.”,
pois senão o comando entende que é outro valor após a virgula. Então usamos a
função Replace da classe String, ficando txtMinimo.Text.Replace(",", ".").
Pronto, podemos executar o programa e inserir os registros no banco de
dados, mas lembrem-se, não validamos os dados, portanto para teste informemcorretamente os campos numéricos com números.
Os comandos Update e Delete utilizam o mesmo código, mudando somente a
propriedade CommandText do objeto de comando. Mais uma vez, para reutilizarmos
código, podemos montar uma função que recebe o texto do comando e o execute no
banco de dados. A chamaremos de ExecutaComando.
Private Sub ExecutaComando(ByVal strComando As String)
'Chama o método de conexão
Call ConectaBanco()
'Declaramos um objeto de comando
Dim objComando As OleDbCommand
'Criamos o objeto na memória
objComando = New OleDbCommand
'Configuramos a conexão
objComando.Connection = objConexao
'O comando foi montado ao chamar a função
'e passado para a variavel strComando
objComando.CommandText = strComando
'Precisaremos de uma variavel para guardar o retorno do comando
Dim intQtd As Integer
'Novamente o Try para evitar erro na aplicação
Try
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 49/63
Programação Estruturada – VB.Net
48
'Executamos o comando e guardamos o resultado
'Usamos o metodo ExecuteNonQuery para insert, update e delete
intQtd = objComando.ExecuteNonQuery
'Se o retorno for maior que 0 o comando fez alguma coisa
If intQtd > 0 ThenMessageBox.Show("Salvo com sucesso!")
End If
Catch ex As Exception
MessageBox.Show("Ocorreu um erro: " & ex.Message)
End Try
'Desconecta do banco
objConexao.Close()
End Sub
Para chamar o método basta usar o prefixo Call e passar os parâmetros
necessários. Para o insert chamamos assim:
'Chama a função ExecutaComando passando o texto do comando insertCall ExecutaComando("INSERT INTO PRODUTO(CD_PRODUTO, DS_PRODUTO,
DS_UNIDADE, PRECO_CUSTO, PRECO_VENDA, QT_ESTOQUE, QT_MINIMO) VALUES(" &
txtCodigo.Text & ", '" & txtDescricao.Text & "', '" & txtUnidade.Text & "',
" & txtCusto.Text.Replace(",", ".") & ", " & txtVenda.Text.Replace(",",
".") & ", " & txtEstoque.Text.Replace(",", ".") & ", " &
txtMinimo.Text.Replace(",", ".") & " )")
Para praticar, coloque mais 2 botões, um Atualizar e um Apagar e programe o
click dos dois para chamar os comandos de Update e Delete.
Ate agora somente alteramos os registros, vamos então aprender comorecuperar os dados da tabela usando o comando Select. O funcionamento é
praticamente o mesmo, o que muda é o retorno da execução do comando, que irá
montar um objeto Lista com os dados do select executado. Coloque um botão
Selecionar na frente do textbox código. Este botão irá consultar na tabela o produto
correspondente ao código digitado pelo usuário. O evento click fica assim.
Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnPesquisar.Click
'Chama o método de conexão
Call ConectaBanco()
'Declaramos um objeto de comando
Dim objComando As OleDbCommand
'Criamos o objeto na memória
objComando = New OleDbCommand
'Configuramos a conexão
objComando.Connection = objConexao
'O comando foi montado ao chamar a função
'e passado para a variavel strComando
objComando.CommandText = "SELECT * FROM PRODUTO WHERE CD_PRODUTO="
& txtCodigo.Text'Precisaremos de uma variavel para guardar o retorno do comando
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 50/63
Programação Estruturada – VB.Net
49
'O retorno será uma lista de registros
Dim objLista As OleDbDataReader
'Novamente o Try para evitar erro na aplicação
Try
'Executamos o comando e guardamos o resultado'Usamos o metodo ExecuteReader para consultas
objLista = objComando.ExecuteReader
'Se o retorno contiver linhas, podemos usar
If objLista.HasRows = True Then
'Posicionamos o cursor do objeto para a proxima linha
'Como temos somente uma devido ao where no nosso select
'Lemos uma vez só
objLista.Read()
'Agora preenchemos os objetos em tela com o da lista
'Cada item é uma coluna da tabela
txtDescricao.Text = objLista.Item("DS_PRODUTO")
txtUnidade.Text = objLista.Item("UNIDADE")
txtCusto.Text = objLista.Item("CUSTO")txtVenda.Text = objLista.Item("VENDA")
txtEstoque.Text = objLista.Item("ESTOQUE")
txtMinimo.Text = objLista.Item("MINIMO")
End If
Catch ex As Exception
MessageBox.Show("Ocorreu um erro: " & ex.Message)
End Try
'Desconecta do banco
objConexao.Close()
End Sub
Notem a clausula Where no comando para filtrar somente o produto
informado. Execute, cadastre um produto e depois o consulte para testar.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 51/63
Programação Estruturada – VB.Net
50
Com o cadastro de produtos terminado, vamos programar a tela de
movimentação de estoque.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 52/63
Programação Estruturada – VB.Net
51
Tabelas úteis
Operadores Aritméticos - Ordem de precedência:
Operador Aritmético /Concatenação Ordem
^ Exponenciação
– Negação
*, / Multiplicação e Divisão
\ Divisão Inteira
Mod Modulo Aritmético - Resto da divisão
+, - String +
Adição subtração - Concatenação
String
& Concatenação String
<<, >> Bit Shift - Aritmético
Obs.: Você pode usar os parênteses para alterar a ordem de precedência.
Por exemplo: ValorCompra - ((ValorCompra * Desconto) / 100)
Operadores Relacionais / Lógicos - Retornam um valor booleano True / False:
Operador Descição
= Igual
<> Diferente
< Menor
> Maior
<= Menor ou Igual
>= Maior ou Igual
Operador Lógico Descrição
AND Operador E
OR Operador OU
NOT Operador NÃO
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 53/63
Programação Estruturada – VB.Net
52
Instruções SQL
O SQL foi desenvolvido para ser uma linguagem padrão para operações com
Banco de Dados. A lingüagem SQL foi elaborada para ser independente de
hardware ou do software. Ao usar o SQL, você não precisa saber a respeito do
software de banco de dados ou do hardware envolvido em uma operação. Tudo o
que você precisa conhecer são os comandos/instruções SQL padrão para solicitar
informações, que obrigatoriamente é o mesmo em todos os sistemas que utilizam o
SQL.
Nota: Na prática existem pequenas diferenças entre o SQL dos diferentes
bancos de dados, como o Microsoft Access, Microsoft SQL Server 2000, ORACLE,
etc.
INSERT – Este comando permite adicionar um ou vários registros a uma tabela do
Banco de Dados. A sintaxe para a execução é:
INSERT INTO nome-tabela [(nome-coluna, ...)]VALUES (relação dos valores a serem incluídos)
onde:
nome-tabela - Representa o nome da tabela onde será incluída o registro.
nome-coluna - Representa o nome da(s) coluna(s) terão conteúdo no
momento da operação de inclusão.Relação dos valores - Representa os valores a serem incluídos na tabela.
Obs.: Este comando pode ser executado de duas maneiras:
Quando todos os campos da tabela terão conteúdo - Neste caso não é
necessário especificar as colunas, entretanto a relação dos valores a serem
incluídos deverão obedecer a mesma seqüência da definição da tabela. Por
exemplo:
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 54/63
Programação Estruturada – VB.Net
53
INSERT INTO Alunos
VALUES (1, "Carlos Bueno", "123456789", "R. Aliviere 480", 06/07/1980, "14-
5423006")
Quando apenas parte dos campos da tabela terão conteúdo - Neste caso
devem ser especificadas todas as colunas que terão conteúdo e os valores
relacionados deverão obedecer esta seqüência. Para os campos que não tem
conteúdo especificado será preenchido o valor NULL, como mostra o exemplo
abaixo:
INSERT INTO Alunos (cod, nome, rg, endereco)
VALUES (1, "Renato", "123467980", "R. Canavial, 105”)
UPDATE - Esse comando permite atualizar os dados de um ou um grupo de
registros em uma tabela do Banco de Dados. Sua sintaxe é:
UPDATE nome-tabela
SET <nome-coluna> = <novo conteúdo para o campo>
[,nome-coluna = <novo conteúdo para o campo>]
WHERE condição
onde:
nome-tabela - Representa o nome da tabela cujo conteúdo será alterado.
nome-coluna - Representa o nome da(s) coluna(s) terão seus conteúdos
alterados com o novo valor especificado.
condição - Representa a condição para a seleção dos registros que serão
atualizados. Esta seleção poderá resultar em um ou vários registros. Neste
caso a alteração irá ocorrer em todos os registros selecionados.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 55/63
Programação Estruturada – VB.Net
54
UPDATE é especialmente útil quando se quer alterar muitos registros. É
possível alterar vários campos ao mesmo tempo. O exemplo abaixo altera a
descrição de um determinado curso.
UPDATE Curso SET Descricao = ‘Análise de Sistemas’ WHERE codigo = 2
DELETE - Essa instrução permite remover (deletar) um ou um grupo de registros em
uma tabela do Banco de Dados. Sintaxe:
DELETE FROM nome-tabela WHERE condição
onde:
nome-tabela - Representa o nome da tabela cujos registros serão deletados.
condição - Representa a condição para a deleção dos registros. Este seleção
poderá resultar em um ou vários registros. Neste caso a operação irá ocorrer
em todos os registros selecionados.
Uma consulta de exclusão exclui registros inteiros e não apenas dados em
campos específicos. Se quiser excluir valores de um campo específico, crie uma
consulta atualização que mude os valores para Null.
Exemplo de instrução DELETE
Esse exemplo exclui todos os registros de Professores cujo código seja 1.
DELETE FROM Professores WHERE codigo=1
Se fosse necessário excluir um professor de nome específico a estrutura seria
assim
DELETE FROM Professores WHERE nome=’nome professor’
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 56/63
Programação Estruturada – VB.Net
55
SELECT - A instrução SELECT é a mais poderosa da linguagem SQL. Ela permite
selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma
determinada condição definida pelo comando. Sua sintaxe é:
SELECT * FROM nome-tabela [AS APELIDO] [,nome-tabela]
WHERE condição
GROUP BY nome-coluna
ORDER BY nome-campo [ASC/DESC]
onde:nome-tabela - Representa o nome da(s) tabela(s) que contem as colunas que
serão selecionadas ou que serão utilizadas para a execução da consulta.
Apelido - Os nomes que serão usados como títulos de colunas em vez dos
nomes originais das colunas na tabela.
condição - Representa a condição para a seleção dos registros. Este seleção
poderá resultar em um ou vários registros.
nome-coluna - Representa a(s) coluna(s) cujos resultados são grupados para
atender à consulta.
(*) - Opção default. Mostra todos os valores (campos) obtidos na seleção.
WHERE - Especifica o critério de seleção dos registros nas tabelas
especificadas.
GROUP BY - Especifica o(s) campo(s) que serão grupados para atender a
consulta.
ORDER BY - Esta opção quando utilizada apresenta o resultado da consulta
ordenado de forma crescente (ASC) ou decrescente (DESC) pelos campos
definidos.
Para executar esta operação, o programa principal de banco de dados
procura a tabela ou tabelas especificadas, extrai as colunas escolhidas, seleciona as
linhas que satisfazem o critério e classifica ou agrupa as linhas resultantes na ordem
especificada.
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 57/63
Programação Estruturada – VB.Net
56
A instrução SELECT não muda os dados no banco de dados. SELECT é
normalmente a primeira palavra em uma instrução SQL. A maior parte das
instruções SQL são instruções SELECT. A sintaxe mínima da instrução SELECT é:
SELECT <campos> FROM <tabela>
Você pode usar um asterisco (*) para selecionar todos os campos na tabela.
O exemplo abaixo seleciona todos os campos na tabela Alunos:
SELECT * FROM Alunos
A Clausula WHERE
Freqüentemente é necessário localizar registros em um banco de dados que
satisfaçam certos critérios de seleção. O SQL utiliza a clausula WHERE para
especificar os critérios de seleção para a consulta. O formato mais simples para uma
consulta com critérios é:
SELECT * FROM nome-tabela WHERE condição
SELECT * FROM Alunos WHERE ano_nascimento < 1984
A condição da cláusula WHERE pode conter os operadores <, >, <=, >=, <> e
LIKE. O operador LIKE é utilizado para coincidência de padrão, o que permite a
busca de valores semelhantes ao digitado utilizando os caracteres curinga (* e ?). O
asterisco indica qualquer número de caracteres em seqüência na posição do
asterisco dentro do padrão. Já a interrogação indica um único caracter na posição.
Por exemplo, em uma tabela que temos os alunos Anderson, Andre e Manoel.
SELECT * FROM Alunos WHERE nome LIKE ‘?n*’
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 58/63
Programação Estruturada – VB.Net
57
No SELECT acima o retorno será Anderson e Andre, uma vez que buscamos
apenas os valores iniciados por qualquer letra, tendo a segunda letra um “n” e
finalizado por qualquer seqüência
SELECT * FROM Alunos WHERE nome LIKE ‘*n*’
Nesse SELECT procuramos qualquer aluno que tenha a letra “n” em seu
nome, no caso Anderson, Andre e Manoel.
A clausula ODER BY
ORDER BY é opcional. Entretanto, se você quiser exibir seus dados na ordem
classificada, você deve utilizar ORDER BY. O padrão ordem de classificação é
ascendente (A a Z, 0 a 9). Os dois exemplos abaixo classificam os nomes dos
funcionários pelo sobrenome.
SELECT Sobrenome, Nome FROM Funcionarios ORDER BY Sobrenome
SELECT Sobrenome, Nome FROM Funcionarios ORDER BY Sobrenome
ASC
Para classificar em ordem descendente (Z a A, 9 a 0), adicione a palavra
reservada DESC ao final de cada campo que você quiser classificar em ordem
descendente. O exemplo abaixo seleciona salários e os classifica em ordem
descendente.
SELECT Sobrenome, Salário FROM Funcionarios ORDER BY Salário DESC,
Sobrenome
ORDER BY é normalmente o último item em uma instrução SQL. Você pode
incluir campos adicionais na cláusula ORDER BY. Os registros são classificados
primeiro pelo primeiro campo listado depois de ORDER BY. Os registros que tiverem
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 59/63
Programação Estruturada – VB.Net
58
valores iguais naquele campo são classificados pelo valor no segundo campo listado
e assim por diante.
A Clausula GROUP BY
Os dados resultantes de uma seleção podem ser agrupados de acordo com
um critério específico. Este procedimento é realizado usando a cláusula GROUP BY.
Apenas uma linha do grupo é apresentada.
Como condição de agrupamento somente poderão aparecer itens do SELECTou funções do grupo. Por exemplo, deseja-se saber o total de créditos cursados
pelos alunos. Para resolver esse problema usamos uma função SUM (explicada
mais adiante) e a clausula GROUP BY.
SELECT cod_alu, SUM(credito) AS [Total de Aula]
FROM Disciplinas
GROUP BY cod_alu;
Nesse exemplo a quantidade de créditos está na tabela disciplinas, para cada
aluno soma-se a quantidade de créditos das disciplinas que ele cursa.
Algumas funções utilizadas no comando SELECT.
a. COUNT(*) (nome-campo)
Retorna a quantidade de registros existentes no campo especificado. Quando
a opção * é utilizada o resultado é a quantidade de registros existentes. Quando é
referenciado o nome de um campo retorna a quantidade de valores existentes na
coluna. Por exemplo, deseja-se saber quantos alunos estão matriculados na
disciplina de Analise de Sistemas I (código da disciplina igual a 1).
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 60/63
Programação Estruturada – VB.Net
59
SELECT COUNT(cod_alu) AS Total FROM cursa WHERE cod_dis=1
Outro exemplo deseja-se saber quantas disciplinas são cursadas pelosalunos.
SELECT cod_alu, count(*) AS [Total Disciplinas]
FROM Cursa
GROUP BY cod_alu
b. SUM (nome-campo)
Retorna a soma dos valores existentes no campo especificado. Por exemplodeseja-se saber quantos créditos (aulas por semana) o aluno Carlos (código igual a
1) cursa, para que se possa calcular a sua mensalidade.
SELECT SUM(credito) AS [Total de Aula]
FROM Disciplinas
WHERE cod_alu=1
Outro exemplo, deseja-se calcular a mensalidade que os alunos pagam
sabendo que o valor do crédito é R$7,00.
SELECT cod_alu, SUM(credito * 7.0)
AS [Total de Aula]
FROM Disciplinas
GROUP BY cod_alu
c. AVG (nome-campo)
Retorna a média dos valores existentes no campo especificado. Por exemplo,
deseja-se saber quantas aulas em média um aluno assiste por dia.
SELECT AVG(Disciplinas.credito) AS [Media de Aulas]
FROM Disciplinas
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 61/63
Programação Estruturada – VB.Net
60
d. MAX (nome-campo)
Retorna o maior valor existente no campo especificado. Por exemplo, deseja-
se saber qual aluno teve a nota mais alta na primeira prova da disciplina da Analisede Sistemas I (código da disciplina igual a 1) no semestre 2009.1.
SELECT MAX(nota1) AS [Maior Nota], nome
FROM Cursa
WHERE cod_dis=1 AND semestre=’2009.1’
GROUP BY cod_Alu, nome
e. MIN (nome-campo)
Retorna o menor valor existente no campo especificado. Por exemplo, deseja-
se saber qual aluno teve a nota mais baixa na primeira prova da disciplina da
Analise de Sistemas I (código da disciplina igual a 1) no semestre de 2009.1.
SELECT MIN(nota1) AS [Menor Nota], nome
FROM Cursa
WHERE cod_dis=1 AND semestre=’2009.1’
GROUP BY cod_Alu, nome
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 62/63
Programação Estruturada – VB.Net
61
Dicas de códigoVarias Dicas e Artigos - servem como fonte de pesquisa e informação, para
quem já está programando.
Como forçar a digitação apenas de números ou letras
Permitir ao usuário digitar apenas letras ou números.
Se for para digitar apenas números coloque esse código no evento KeyPress
If (Char.IsDigit(e.KeyChar) = False) Then
e.Handled = TrueEnd If
Para somente letras é só inverter
If (Char.IsDigit(e.KeyChar) = True) Then
e.Handled = True
End If
Mas veja bem, no primeiro caso você. só poderá digitar números, nada de
ponto ou vírgula.
Como pegar o caminho onde está rodando sua aplicação em VB.NET
Se você precisar do caminho atual onde está rodando o seu executável .EXE
Faça o seguinte:
Dim strCaminho As String
strCaminho = Directory.GetCurrentDirectory()
'Por exemplo para mostrar no formulário
lblLocal.Text = strCaminho
Observação: Você vai precisar do NameSpace: Imports System.IO
5/12/2018 AulaVB - slidepdf.com
http://slidepdf.com/reader/full/aulavb 63/63
Programação Estruturada – VB.Net
62
Varias dicas para trabalhar com strings / TextBox
1) Para converter um texto para Minúsculas faça o seguinte:Dim strNomeCliente As String
strNomeCliente = "Carlos Renato Rocha Bueno"
lblNomeCliente.Text = strNomeCliente.ToLower()
2) Para converter um texto para Maiúsculas faça o seguinte:
Dim strNomeCliente As String
strNomeCliente = "Carlos Renato Rocha Bueno"
lblNomeCliente.Text = strNomeCliente.ToUpper()
3) Para Saber o tamanho de uma string:Dim intTamanho As Integer
intTamanho = txtNome.Text.Trim().Length
4) Para verificar se foi digitado um valor numérico em um TextBox :
If IsNumeric(txtIdade.Text) = False Then
MessageBox.Show("Você precisa digitar um número nesse campo!")
End If
Uma função Sim ou Não em VB.NET
' Vb.Net
' Função SimOuNao( "Pergunta" ) ---> Retorna True se responder sim
' e False ser responder não
Function SimOuNao(ByVal strPergunta As String) As Boolean
If MessageBox.Show(strPergunta, "Pergunta...",
MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Return True
Else Return False
End If
End Function
- Você pode chamar a função assim:
If SimOuNao("Tem certeza que deseja sair?") = True Then
Me.Close()
End If