Apostila VB

217
Agacir José Cardoso Assessoria e Consultoria em T.I. apítulo 1 1.1 INICIANDO E ai pessoal tudo bem? O objetivo deste livro será apresentar conceitos sobre a operação e programação da ferramenta de desenvolvimento de aplicativos VISUAL BASIC 6.0. Será explorado o aprendizado de programações básicas indo até o desenvolvimento de aplicativos com suporte a Banco de Dados e Consulta SQL. É super importante que, além da prática em sala de aula, você possa exercitar o conteúdo do livro em sua casa, ou em algum lugar onde você possa ter acesso a um computador e naturalmente ao Visual Basic 6.0. Para uma boa iniciação em linguagem de programação, é ideal que você possua conhecimentos em relação a técnicas básicas de lógica de programação, e também conceitos sobre: variáveis, constantes, tipos de dados, estruturas condicionais, operadores lógicos, operadores relacionais, laços de repetição, etc... 1.2 UM POUCO DE HISTÓRIA Bem! Tudo começou no ano de 1965 quando foi lançada uma linguagem de programação exclusiva para estudantes denominada BASIC – que significa: Begginner’s All-purpose Symbolic Instruction Code – e que podemos ter a seguinte tradução: Código de Instrução simbólica para principiantes e todas as finalidades. O principal objetivo dessa linguagem foi o de tornar mais fácil o aprendizado de programação de computadores, o que com certeza aconteceu. Com o passar do tempo o BASIC foi perdendo espaço, e outras linguagens de programação foram assumindo o seu lugar, como por exemplo as linguagens PASCAL e C, lá por volta dos anos 1970 e 1972, respectivamente. Depois do lançamento do Sistema Operacional Windows, a Microsoft lançou em 1991, a primeira versão da linguagem Visual Basic. Agindo sobre a plataforma do sistema Operacional Windows, o Visual Basic passou a fazer uso de recursos gráficos (visuais), além da estrutura orientada a eventos. Na versão do Visual Basic 3.0, a Microsoft implementou novos recursos à linguagem, como por exemplo: acesso à banco de dados nativo, como por exemplo, o Access. Logo após o lançamento do Sistema Operacional Windows 95 (no ano de 1995), seria lançada a versão 4.0 do Visual Basic. Além de um visual um pouco diferente, esta versão permite o desenvolvimento de aplicativos com C

Transcript of Apostila VB

Page 1: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

apítulo 1 1.1 INICIANDO

E ai pessoal tudo bem? O objetivo deste livro será apresentar conceitos sobre a operação e programação da ferramenta de desenvolvimento de aplicativos VISUAL BASIC 6.0. Será explorado o aprendizado de programações básicas indo até o desenvolvimento de aplicativos com suporte a Banco de Dados e Consulta SQL. É super importante que, além da prática em sala de aula, você possa exercitar o conteúdo do livro em sua casa, ou em algum lugar onde você possa ter acesso a um computador e naturalmente ao Visual Basic 6.0. Para uma boa iniciação em linguagem de programação, é ideal que você possua conhecimentos em relação a técnicas básicas de lógica de programação, e também conceitos sobre: variáveis, constantes, tipos de dados, estruturas condicionais, operadores lógicos, operadores relacionais, laços de repetição, etc...

1.2 UM POUCO DE HISTÓRIA Bem!

Tudo começou no ano de 1965 quando foi lançada uma linguagem de programação exclusiva para estudantes denominada BASIC – que significa: Begginner’s All-purpose Symbolic Instruction Code – e que podemos ter a seguinte tradução: Código de Instrução simbólica para principiantes e todas as finalidades. O principal objetivo dessa linguagem foi o de tornar mais fácil o aprendizado de programação de computadores, o que com certeza aconteceu.

Com o passar do tempo o BASIC foi perdendo espaço, e outras linguagens de programação foram assumindo o seu lugar, como por exemplo as linguagens PASCAL e C, lá por volta dos anos 1970 e 1972, respectivamente.

Depois do lançamento do Sistema Operacional Windows, a Microsoft lançou em 1991, a primeira versão da linguagem Visual Basic. Agindo sobre a plataforma do sistema Operacional Windows, o Visual Basic passou a fazer uso de recursos gráficos (visuais), além da estrutura orientada a eventos.

Na versão do Visual Basic 3.0, a Microsoft implementou novos recursos à linguagem, como por exemplo: acesso à banco de dados nativo, como por exemplo, o Access. Logo após o lançamento do Sistema Operacional Windows 95 (no ano de 1995), seria lançada a versão 4.0 do Visual Basic. Além de um visual um pouco diferente, esta versão permite o desenvolvimento de aplicativos com

C

Page 2: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

suporte a plataforma de 32 bits. Estes aplicativos são compatíveis com os ambientes do Sistema Operacional Windows 95 e até mesmo Windows 98 e NT. Lançada no mês de março de 1997 (Brasil), a versão 5.0 do Visual Basic nos traz novidades no que diz respeito ao desenvolvimento de aplicações Cliente/Servidor, ou seja, é possível desenvolver de uma maneira mais rápida aplicações voltadas a plataformas deste tipo. Já no ano seguinte (final de 1998), a Microsoft lança o Microsoft Visual Basic 6.0, trazendo muitas novidades entre as quais podemos citar:

• Acesso a Banco de Dados através de objetos ADO (ActiveX Data Objects) o qual suporta acesso a banco de dados superiores.

• Visual Basic WebClass Designer o qual permite criação de aplicativos para servidores Web.

• Melhor desempenho, pois utiliza o mesmo núcleo para compilação que o do Visual C++.

• Help voltado a desenvolvedores profissionais (MSDN Library).

Em cima desse breve relato podemos constatar a poderosa ferramenta de desenvolvimento que é o Visual Basic. Quando o Sistema Operacional Windows tornou-se o Sistema Operacional da grande maioria dos computadores imaginava-se que a programação para esta plataforma só seria possível com ferramentas como a linguagem C, sendo assim praticamente impossível que alguém com pouca experiência desenvolvesse um aplicativo, sendo ele o mais simples possível. Foi ai que surgiu o Visual, com uma estrutura de programação não tão confusa como o Basic. O Visual Basic tornou-se uma das ferramentas de desenvolvimento mais utilizada no mundo, fazendo com que hoje em dia exista milhões de programadores em VB no mundo inteiro.

1.3 OBJETIVOS DO DESENVOLVIMENTO DE UM APLICATIVO Bom galera! Antes de fazermos nosso primeiro contato com o ambiente do Visual

Basic, vamos comentar a respeito de um tema super importante que nos auxiliara no bom desenvolvimento de um aplicativo. Quando desenvolvemos um programa temos que ter em mente que o aplicativo terá que:

� Gerar soluções em tecnologia para que, indiferente do local onde o aplicativo desenvolvido seja empregado, o mesmo traga mais organização e conseqüentemente maior produção e competitividade ao estabelecimento informatizado.

Lembre-se: Devemos informatizar e não complicar.

Page 3: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

1.4 VISÃO GERAL DO VISUAL BASIC 6.0 Podemos ter um conceito geral do Visual Basic como uma linguagem de

programação, para o ambiente Windows, orientada a eventos. Você deve estar pensando, bom, primeiro preciso saber o que é um evento pra depois falar mais sobre esse Visual Basic. Um pouquinho só de calma que tudo ficará muito claro. OK?

Os objetos (ferramentas utilizadas no desenvolvimento de aplicativos), normalmente possuem vários eventos, os quais são executados nas determinadas ações exercidas pelo usuário. Complicou mais ainda?

Então tudo bem! Preste atenção na demonstração a seguir:

A demonstração acima nos dá uma idéia perfeita de como podemos imaginar o Visual Basic, e a maneira de como devemos proceder para utilizar esta poderosa ferramenta de desenvolvimento a partir da idéia de um aplicativo. A explicação da seqüência é a seguinte:

APLICATIVO

OBJETOS

x ڤ -

FORMULÁRIOS

CLASSES

PROPRIEDADES

MÉTODOS

EVENTOS

Page 4: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

� Aplicativo: Toda e qualquer utilização do Visual Basic se dará a partir da idéia do desenvolvimento de um aplicativo.

� Formulários: Os formulários serão o centro da aplicação gráfica, ou seja, serão as janelas de contato com o usuário após o desenvolvimento do aplicativo.

� Objetos: Conjunto de controles a serem utilizados junto com o formulário (inserimos objetos dentro do formulário), para a criação do aplicativo.

� Classes: Os objetos são divididos em classes e cada objeto em sua determinada classe possui: Propriedades, Métodos e Eventos.

� Propriedades: São as formatações de um objeto, ou seja, o conjunto de características que define o objeto tanto na aparência quanto na posição do mesmo no formulário.

� Métodos: Podemos conceituar o método de um objeto como uma função definida pelo Visual Basic em relação àquilo que desejamos que o objeto execute.

� Eventos: São os procedimentos codificados que serão executados a partir de uma ação do usuário sobre o objeto.

1.5 CONHECENDO O AMBIENTE DO VISUAL BASIC Para ter acesso ao Visual Basic faça o seguinte:

1. Clique no botão Iniciar, 2. Em seguida selecione Programas,

3. Selecione o item Microsoft Visual Studio 6.0,

4. E por último clique no item Microsoft Visual Basic 6.0.

Page 5: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

A caixa de diálogo a seguir será apresentada, onde você poderá escolher a tarefa desejada. Entre estas tarefas está a de criar um novo projeto (Standard EXE), criar um controle ActiveX (ActiveX EXE), criar Bibliotecas de Ligação Dinâmica ActiveX DLL) entre outros.

As três guias existentes (New, Existing e Recent) se referem ao seguinte:

� New: Esta guia nos dá a opção de selecionar o tipo de projeto desejado e criá-lo NOVO.

� Existing: Selecione esta guia para abrir um projeto já existente. � Recent: Esta guia exibe o caminho dos últimos projetos trabalhados. Para nossos primeiros exemplos selecione Standard EXE e clique no

Botão ABRIR. A próxima janela a ser exibida é o ambiente de programação do Visual

Basic. Repare que inicialmente são apresentados cinco componentes. São eles:

� A janela de Projetos (Project), � A janela de Propriedades (Properties), � A janela de Layout (Form Layout), � A janela do Formulário (Form) e � A janela da Caixa de Ferramentas (General). Observe a janela a seguir:

Page 6: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

A seguir veremos o funcionamento de cada componente do ambiente de

programação do Visual Basic, pois cada um tem sua função super importante no desenvolvimento de um aplicativo.

A janela do ambiente de programação do Visual Basic.

O componente Project Explorer (janela de projetos), exibe todos os arquivos que o projeto atual possui, ou seja, os formulários, os módulos, as classes, os grupos, etc.... Esta janela possui uma barra de ferramentas onde se localizam os botões:

� View Code: Clicando neste botão será exibida a área de

codificação do programa. � View Object: Utilizado para

exibir o formulário selecionado

na janela de projetos.

� Toggle Folders: Exibe e esconde as pastas

apresentadas no projeto.

Page 7: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

Esta janela exibe as propriedades que podemos formatar no objeto inserido no formulário. Repare na caixa de combinação com o nome: Form1 Form. Clicando no botão desta caixa, você poderá visualizar todos os controles (objetos) que tenham sido inseridos no formulário, inclusive o próprio formulário. Abaixo da caixa temos as guias: Alphabetic e Categorized as quais podem ser usadas para ordenar as propriedades dos objetos por ordem alfabética ou por ordem de categoria.

A janela FormLayout exibe de que maneira será exibido um formulário na tela do computador assim que o projeto for executado. Posicione o cursor do mouse

sobre a figura Form1 . Clique e arraste a figura para o local onde você deseja que o formulário apareça no monitor quando o aplicativo for executado.

A janela General será a nossa caixa de ferramentas, onde se encontram os componentes que podemos usar para criação de nossos aplicativos. Existem vários componentes dentro da ToolBox como por exemplo: Botão de Comando, Caixa de Texto, Rótulo, Caixa de Combinação, e tantos outros. Outros componentes poderão ser inseridos nesta coleção de objetos, porem, veremos isso mais a frente. OK?

Page 8: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

A janela do formulário caracteriza-se como sendo o centro da aplicação gráfica, ou seja, é nesta janela que vamos criar o LayOut do nosso aplicativo, a maneira como ele se comunicará com o usuário final. Na figura do exemplo a seguir foram inseridos alguns objetos no formulário.

Para você inserir um objeto no formulário, faça o seguinte: 1. Selecione com um clique o objeto desejado na caixa de

ferramentas – ToolBox (General). 2. Posicione o cursor do mouse sobre qualquer lugar da área

pontilhado do formulário. O cursor do mouse deverá esta com o

aspecto de cruz . 3. Execute a ação: Clique, Segure e Arraste com o botão de ação

do mouse (geralmente o esquerdo), redimensionando o objeto na área desejada do formulário. Fácil não é mesmo?

Você poderá também inserir um componente no formulário dando um

duplo clique no objeto desejado na caixa de objetos (ToolBox), porém, existe um pequeno problema nesta maneira. Quando você executa esta ação, o objeto é inserido para dentro do formulário, e em determinadas situações, alguns objetos devem ser inseridos (vinculados) a outros objetos (por exemplo o componente FRAME) e não diretamente ao formulário.

Se você por acaso fechar alguma janela dos componentes visto anteriormente, não se preocupe. No menu View do Visual Basic você achará todas as opções para visualização das janelas novamente.

Page 9: Apostila VB

Agacir José Cardoso Assessoria e Consultoria em T.I.

1.6 NOMENCLATURA DE OBJETOS Quando inserimos objetos na janela do formulário do nosso projeto, é extremamente aconselhável que este objeto possua um nome, pois é através deste nome que vamos tratá-lo durante a programação. Os nomes dos objetos devem ser sempre condizentes com a função que o mesmo irá executar. O nome do objeto deve ser informado assim que o objeto for inserido ao formulário, ou seja, antes de codificar algum linha a algum evento do objeto. Existem algumas abreviações iniciais para cada componente do Visual Basic. Estas abreviações ou letras iniciais servem para identificar os objetos na hora da programação. Observe o exemplo a seguir:

Para os objetos Botões de Comando (CommandButton ) a nomenclatura inicial desse componente é: Cmd, ou seja, usaremos a abreviação do objeto CommandButton para criar o nome do nosso objeto. No caso da necessidade de um botão para executar a rotina da gravação de registros poderemos usar o nome deste botão como: CmdGravar.

Entendeu? Bem! A seguir veremos as nomenclatura inicias de outros objetos que

usaremos freqüentemente em nossos projetos.

Label (Rótulo) → Lbl

TextBox (Caixa de Texto) → Txt

Frame (Agrupamento de objetos) → Fra

Option Button (Botão de Opção) → Opt

ComboBox (Caixa de Combinação) → Cbo

CheckBox (Botão de Checagem) → Chk

Form (Formulário) → Frm Muito bem pessoal... Ficamos por aqui.

No próximo capítulo faremos nosso primeiro contato com o editor de programação do Visual Basic.

Valeu e até mais...

Page 10: Apostila VB

apítulo 2 2.1 FORMATANDO OBJETOS E SALVANDO PROJETO

E ai galera! Prontos para o primeiro contato com a programação em Visual Basic? Bom! Prontos ou não...Lá vamos nós... Vamos iniciar o Visual Basic e formatar as seguintes propriedades no formulário que é carregado automaticamente quando iniciamos o Visual Basic. Procure as propriedades a seguir na janela de propriedades e configure-as da maneira como pede: Name: FrmTeste Caption: Primeiro teste de Visual Basic. MaxButton: False MinButton: False StartUpPosition: 2 - CenterScreen Estas propriedades que formatamos se referem ao seguinte:

Name Caption MaxButton MinButton StartUpPosition

Nome do objeto

formulário

Título da barra de

formulário

O Valor False indica que não haverá botão

de maximizar/restaurar janela no formulário

O Valor False indica

que não haverá botão

minimizar janela no formulário

O valor formatado

centraliza o formulário

quando ele for executado

Com o formulário formatado, veremos agora como fazer para salvar o nosso primeiro projeto em Visual Basic. Os arquivos que serão pedidos para serem salvos são:

• O arquivo do formulário (cuja extensão de arquivo é FRM – que é abreviação de Form).

• O arquivo do projeto (extensão de arquivo VBP – que é abreviação de Visual Basic Project).

Para salvar seu projeto clique no ícone na barra de ferramentas do Visual Basic.

Em seguida será apresentada a janela de diálogo Save File As para você indicar em que pasta serão salvos seus arquivos do projeto.

Uma dica importante para você! Salve cada projeto seu em pastas diferentes para que os arquivos de

projetos distintos não se misturem e acabe dando algum problema.

C

Page 11: Apostila VB

Pronto! Seu projeto está salvo. Duvida? Ache a pasta que você informou para salvar o projeto e confirme seus

dois arquivos dentro dela.

Selecione a pasta desejada e em seguida

informe o nome do seu arquivo

FRM. Você poderá usar o mesmo nome que o Visual

Basic sugere, ou seja, o

mesmo nome definido na propriedade

Name. Clique no botão Salvar para confirmar.

Em seguida a mesma janela

de diálogo será apresentada

para você informar o nome do arquivo VBP

(Projeto). Informe e clique novamente no botão Salvar

para confirmar.

Page 12: Apostila VB

2.2 COMPILANDO O PROJETO Veremos a seguir a ferramenta que faz que com possamos executar nosso projeto e verificar como o mesmo está ficando. Trata-se do compilador de projeto do Visual Basic. Primeiramente vamos ver como podemos dividir nosso projeto em Visual Basic.

O nosso projeto se define em duas partes: 1. Tempo de Projeto e 2. Tempo de Execução.

Quando o aplicativo que está sendo desenvolvido se encontra em tempo de projeto significa que podemos usar as ferramentas a nossa disposição para “mexer” com o projeto, ou seja, não podemos executar, nem fazer funcionar nada, somente configurar e programar.

Para podermos executar e testar como está ficando nosso aplicativo, desde a formatação de objetos até mesmo as linhas de codificação teremos que executar o compilador do Visual Basic e passar do estágio de projeto para o estágio de aplicativo executável.

Tudo o que fazemos em tempo de projeto estamos operando em linguagem humana, porém o computador não entende a linguagem humana. O sistema que o computador entende é o sistema binário, portanto o compilador faz justamente isto. Transforma nosso projeto que desenvolvemos em linguagem humana para linguagem de máquina.

Para você compilar o seu projeto em Visual Basic faça o seguinte:

Na barra de ferramentas clique no botão Start . Você poderá usar também a tecla de atalho F5, que com certeza irá te

economizar um bom tempo. Compilado o projeto, verifique como está o seu formulário com as

formatações realizadas anteriormente. Dá pra notar uma diferença bem grande não é mesmo? Para finalizar o tempo de execução faça o seguinte:

O formulário em tempo de execução.

Page 13: Apostila VB

• Clique no botão para fechar a janela (formulário).

• Ou clique no botão End na barra de ferramentas do Visual Basic.

Fazendo isto você estará novamente em tempo de projeto.

2.3 ATRIBUIÇÃO DE VALORES A OBJETOS Dos exemplos que fizemos até agora em relação a propriedades e objetos podemos concluir que toda propriedade está relacionada a um objeto. Define-se como propriedade o fato de uma janela estar maximizada ou minimizada. A janela é o objeto e ela estar maximizada ou minimizada é a sua propriedade.

Usando-se uma sintaxe de atribuição de valores indica-se primeiramente o objeto e depois a sua propriedade. Repare a seguir:

Objeto.Propriedade Para que um valor possa ser atribuído a uma propriedade de um objeto

utiliza-se a seguinte sintaxe: Objeto.Propriedade = Valor Este valor atribuído poderá ser um dado numérico, string (caracteres) ou o valor de uma constante. Podemos também passar o valor de um método a um objeto, porem, a atribuição de um método a um objeto se diz exclusivamente a ele e não a propriedade do objeto. Observe a sintaxe: Objeto.Método Se o conteúdo da matéria estiver meio confuso pra você, fique tranqüilo! Na prática é mais fácil que na teoria. OK?

2.4 COMEÇANDO A PROGRAMAR Agora que já sabemos como atribuir um valor a uma propriedade de um objeto nos resta somente colocar isto em prática, ou seja, programar. No formulário que acabamos de formatar você irá inserir os seguintes componentes (objetos): 01 Caixa de Texto (TextBox). 01 botão de Comando (CommanButton) 01 Rótulo (Label) Formate os objetos da seguinte maneira:

Page 14: Apostila VB

TextBox CommandButton Label

Name: TxtNome Name: CmdOk Name: LblNome Text: Selecione o

conteúdo e delete.(para o objeto

entrar sem valor nenhum).

Caption: &Ok BackColor: Verde Claro. (Clique na caixa de combinação desta

propriedade e selecione a guia Palette para selecionar a Cor de Fundo do objeto.)

Caption: Selecione o conteúdo e delete.(para

o objeto entrar sem valor nenhum)

Repare a propriedade Caption do objeto CommandButton. Existe o E-Comercial (&) antes do O da palavra Ok. Sabe para que isto serve? Certos objetos possuem teclas de atalho (principalmente os botões) o que favorece o usuário na hora de operar o aplicativo com o teclado. Neste nosso caso específico a combinação da tecla ALT + O, terá o mesmo efeito do clique sobre o botão, depois que ele estiver programado. O botão terá a letra O sublinhada. Se você optar pela letra K ser a tecla de atalho então a propriedade Caption deveria ser formatada dessa maneira: O&K. Entendeu? Salve o seu programa clicando no botão de disquete na barra de ferramentas do Visual Basic. Não esqueça de salvar o seu aplicativo freqüentemente pois pode acontecer algum problema no seu computador e acabar perdendo algumas boas linhas de programação. Daí não adianta ficar nervoso. Repare na figura a seguir e observe como deve ficar o seu formulário: Bem! A idéia desta programação é a seguinte:

1. Fornecer um nome na caixa de texto, 2. Clicar no botão Ok e 3. Apresentar este nome no Rótulo.

Page 15: Apostila VB

Para fazer isto precisamos programar o objeto que irá disparar a linha de programação. Você sabe qual é? Isto mesmo o botão de comando. Então faça o seguinte: Dê um duplo clique sobre o botão de comando e em seguida será exibida a janela de codificação do Visual Basic (Code). Observe a figura a seguir:

Esta é a janela de codificação do Visual Basic. Quando você deu um duplo clique sobre o botão de comando, o Visual Basic abriu esta janela imaginando que a programação será efetuada no Evento Click do objeto CmdOk. O evento Click é responsável pela ação do usuário com um clique sobre um determinado objeto. As instruções de codificação deverão estar entre as palavras reservadas, Private Sub e End Sub. Preste bem atenção! Todo objeto programado possui uma Private Sub e uma End Sub. OK? Insira a linha de codificação abaixo no evento clique do botão OK. LblNome.Caption = TxtNome.Text Isto funciona da seguinte maneira: Está sendo atribuído o conteúdo da caixa de texto (deve ser inserido um nome), para o conteúdo vazio do rótulo. Dúvidas em relação às propriedades Caption e Text. Muito bem... A propriedade Caption é responsável pelo conteúdo do objeto Label e a propriedade Text é responsável pelo conteúdo do objeto TextBox. Simples não? Execute agora o programa e faça o seguinte:

• Digite um nome qualquer no objeto Caixa de Texto,

Nesta caixa de combinação estão os objetos existentes

neste formulário.

Nesta caixa de combinação estão os eventos relativos

ao objeto selecionado.

Page 16: Apostila VB

• Depois do nome digitado, dê um clique sobre o Botão de Comando.

• A figura a seguir nos mostra como deverá ficar o formulário após o teste:

Pode finalizar o aplicativo clicando no X do formulário ou no botão End. Salve o seu projeto.

Muito bem! Daqui pra frente o processo de montagem dos nossos programas exemplos ficarão mais fáceis. Basta você seguir as instruções anteriores e tudo andará nas mais perfeitas condições. Beleza? Ótimo......

2.5 CONCATENANDO VALORES

Neste exemplo iremos mostrar não só o nome de uma pessoa mas também o seu sobrenome, porem, o nome e o sobrenome serão informados em objetos diferentes (TextBox). Esta junção de Strings recebe op estranho nome de concatenação. Vamos montar nosso formulário então? Primeiramente inicie um novo projeto executando os seguintes passos:

1. Clique no Menu File e clique no item New Project, 2. Na janela a seguir selecione a opção Standard EXE e clique no

botão OK

Page 17: Apostila VB

No formulário fornecido com o novo projeto, configure-o conforme a seguir:

Name: FrmTeste Caption: Primeiro teste de Visual Basic. MaxButton: False MinButton: False StartUpPosition: 2 - CenterScreen Depois de formatar as propriedades iniciais do seu formulário, salve o seu projeto seguindo os mesmos procedimentos vistos anteriormente. Insira um componente Label ao formulário e altere as seguintes propriedades do mesmo:

A janela New Project.

Caption: Informe o seu nome:

Name: LblNome

Page 18: Apostila VB

Proceda da mesma forma e insira um outro objeto Label, abaixo deste que você já criou e formate as seguintes propriedades:

Name: LblSobrenome Caption: Informe o seu Sobrenome: Ótimo! Agora faça o seguinte: Ao lado direito de cada objeto Label será colocado um componente

TextBox, que deverão ser formatados da seguinte maneira:

1º TEXTBOX 2º TEXTBOX Name: TxtNome Name: TxtSobrenome Text: Selecione o conteúdo e delete Text: Selecione o conteúdo e delete

Insira agora abaixo dos objetos já existentes dois objetos

CommandButton (Botão de Comando) – um ao lado do outro – e formate as propriedades dos mesmos conforme a seguir:

1º BOTÃO 2º BOTÃO

Name: CmdConcatenar Name: CmdLimpar Caption: &Concatenar Caption: &Limpar

E por último insira um outro objeto Label abaixo dos botões de controle. Este Label será usado para a junção do nome com o sobrenome que serão informados nas caixas de texto. Formate o Label conforme a seguir.

Name: LblResultado BackColor: Amarelo Claro (procure na paleta de cores) Caption: Selecione o conteúdo e delete (não escreva isso hein?)

Se você quiser usar a nossa grande ferramenta de ajuda de cópias CTRL + C e CTRL + V para facilitar em relação aos objetos, fique a vontade. Porem, no momento que você for colar o objeto copiado no seu formulário fique atento para a seguinte mensagem:

Observe a figura ao lado e veja como deve ficar

inicialmente o seu

formulário:

Page 19: Apostila VB

You already have a control named ‘nome do objeto sendo copiado’. Do you want to create a control array? Esta mensagem informa que você já tem um controle em seu formulário com o determinado nome. E a pergunta que faz é se você quer criar um control array. Se você clicar no botão Sim na mensagem será criado um objeto com o mesmo nome daquele que você está copiando, e será criado um índice para o nome deste objeto. O que isto muda? Na hora de programar alem de informar aquilo que já vimos até agora (Objeto.Propriedade = Valor), você terá que informar também o índice do objeto através do método Item. Ficaria com a seguinte sintaxe: Objeto.item(índice do objeto).Propriedade = Valor Se você quiser uma dica, na hora que for copiar e colar um objeto, na mensagem vista acima clique sempre no botão Não. Ficará mais fácil a programação, com certeza! Não esqueça de ir salvando o seu projeto! Antes de começar a programar vai ai mais uma dica: Quando você estiver codificando e informar o nome do objeto seguido

pelo . (ponto) será exibida uma caixa com as propriedades e métodos que o objeto suporta. Digitando apenas algumas letras e aparecendo a propriedade requerida selecionada, basta você pressionar a barra de espaço do teclado que será preenchida automaticamente a propriedade à frente do objeto.

Observe ao lado como deve

ficar o seu formulário após

inserir os objetos e

formatá-los.

Preste atenção! Se ao informar o

nome do objeto não aparecer a caixa de

propriedades e métodos, vá até ao

formulário e verifique o nome do objeto

(propriedade Name), pois o nome que

você informou não está correto.

Observe a figura ao lado:

Page 20: Apostila VB

Estando com o formulário pronto, vamos programar o evento click do botão Concatenar. Dê um duplo clique sobre o botão concatenar para acessar a janela de codificação do Visual Basic. Digite a linha de codificação conforme a seguir (em negrito):

Private Sub CmdConcatenar_Click() LblResultado.Caption = TxtNome.Text + TxtSobrenome.Text End Sub

Já podemos executar o aplicativo e verificar o efeito da junção dos

objetos das caixas de texto. Depois de clicar no botão concatenar notaremos que não ficou muito boa a codificação, pois não demos espaço entre o nome e o sobrenome. Para corrigir isto é muito simples. Basta adicionar no meio das duas Strings (Caixas de texto) um espaço em branco.

Faça alteração na sua linha de codificação conforme o exemplo a seguir:

Private Sub CmdConcatenar_Click() LblResultado.Caption = TxtNome.Text + " " + TxtSobrenome.Text End Sub

Execute o seu aplicativo. O espaço entre o nome e o sobrenome se deu através dos caracteres " ". Repare que existe um espaço entre as duas aspas, forçando com que se crie um espaço em branco entre as duas Strings.

Agora vamos programar o botão Limpar. Dê um duplo clique no botão Limpar e acesse a janela de codificação o

Visual Basic. Verifique se você está no evento Click. Está? Então OK! Digite a codificação a seguir (negrito): Private Sub CmdLimpar_Click() TxtNome.Text = "" TxtSobrenome.Text = "" LblResultado.Caption = "" End Sub

Concatenção (junção) entre duas strings.

Page 21: Apostila VB

Repare na codificação: Tanto nos objetos TextBox quanto no objeto Label, está sendo aplicado uma string sem conteúdo, ou seja, não há espaço entre as aspas. Isto fará com que os objetos sejam “limpos” sem haver espaço de caractere em branco nos mesmo. O próximo passo agora é, alem de limpar os objetos, é enviar o “Foco” para a primeira caixa de texto. Enviar o foco a um determinado objeto significa determinar para onde o cursor irá depois de executar as linhas de codificação. Para executar esta operação usaremos o nosso primeiro Método no Visual Basic. Este método chama-se SetFocus.

Atualize a sua programação no botão limpar conforme a seguir: Private Sub CmdLimpar_Click() TxtNome.Text = "" TxtSobrenome.Text = "" LblResultado.Caption = "" TxtNome.SetFocus End Sub

O método Setfocus na última linha fará com que o cursor seja posicionado na caixa de texto TxtNome depois da rotina de limpeza dos objetos. Salve o seu projeto. Teste o mesmo e faça-o funcionar perfeitamente OK? Valeu novamente e até a próxima. Fuiiiiiiiiii.

Page 22: Apostila VB

apítulo 3 3.1 TRABALHANDO COM GRUPOS DE OPÇÕES

Este nosso próximo exercício será para firmar a compreensão da sintaxe de atribuição de valores a objetos. Objeto.Propriedade = Valor. Neste projeto usaremos outros objetos em nosso formulário como, por exemplo, objetos de botões de opção (OptionButton) e Frames (objeto usado para definir grupos de objetos) e outros componentes. Vamos iniciar o Visual Basic e formatar o nosso formulário. Name: FrmFormas Caption: Exemplo Atribuição de Valores Desabilitar botões Maximizar e Minimizar do formulário Centralizar o formulário Depois de formatar o formulário, não esqueça, SALVE O SEU PROJETO. Insira agora no formulário um objeto FRAME e formate as seguintes propriedades: Name: FraFormas Caption: Opções das formas Como vimos anteriormente o objeto Frame neste exemplo servirá para separar um grupo de botões de opção.

C

Observe o formulário com

o Frame.

Page 23: Apostila VB

3.2 BOTÃO DE OPÇÃO Preste atenção!

O objeto OptionButton é o objeto onde você, dentro de um grupo de opções, seleciona a opção desejada e somente uma opção poderá ser selecionada. Vamos tomar o seguinte exemplo: Você está preenchendo um cadastro via computador e de repente você tem que informar o sexo. No formulário haverá duas opções que poderão ser dois botões de opção. Se você clicar na opção Masculino e estiver marcado o botão com a opção Feminino, este será desmarcado automaticamente, selecionando aquele que você clicou e vice-versa. O nosso exercício funcionará de uma maneira bem parecida. Teremos dois grupos de botões de opções, onde somente um botão em cada grupo poderá ser selecionado. Voltando a configuração do formulário, insira dentro do objeto Frame 03 (três) objetos OptionButton. Só não esqueça de confirmar se estes três objetos realmente estão vinculados ao nosso primeiro frame. Formate as propriedades dos objetos OptionButton conforme a seguir:

1º Objeto 2º Objeto 3º Objeto Name: OptRetangulo Name: OptQuadrado Name: OptCircunf Caption: Retângulo Caption: Quadrado Caption: Circunferência Value: True

A propriedade Value é atribuída como True somente ao primeiro objeto, pois neste grupo de opções, o primeiro objeto entrará selecionado. Observe na figura a seguir:

Page 24: Apostila VB

Ótimo! Agora vamos criar um outro grupo de opções aonde vamos trabalhar com algumas opções de cores. Insira um novo Frame ao formulário e vincule a ele 06 (seis) objetos botão de opção (OptionButton). Com base na formatação das propriedades efetuada nos objetos vistos anteriormente, formate também estes objetos de modo que os mesmos fiquem com a aparência da figura a seguir: Não esqueça de definir a propriedade Valeu como True para o botão de opção da cor branca.

3.3 ALINHANDO OBJETOS NO FORMULÁRIO

Você pode também utilizar a ferramenta de alinhamento de objetos caso queira alinhar alguns objetos em posição igual um ao outro. Para isso execute os seguintes passos:

1. Selecione os objetos a serem alinhados (Com a tecla Shift pressionada vá clicando nos objetos que deseja alinhar).

2. Clique no menu Format no Visual Basic. 3. Selecione o item Align e em seguida a opção de alinhamento

desejada. Será alinhado pelo último objeto selecionado.

Lembre-se! As opções de alinhamento estarão habilitadas somente

depois de você selecionar os objetos a serem alinhados.

Page 25: Apostila VB

Agora vamos adicionar ao formulário outros objetos que farão parte do

nosso exemplo. Localize na caixa de objetos (General) o objeto Shape e adicione o mesmo ao formulário. Este objeto controlará as opções de formas do nosso exemplo. Este objeto inicialmente deverá ter a forma de um retângulo. Formate o objeto Shape da seguinte maneira:

Name BackStyle BorderStyle BackColor ShpFormas 1 - Opaque 0 – Transparent Selecione Cor Branco

A propriedade BackStyle define o estilo de fundo do objeto e a propriedade BorderStyle define o estilo da borda. A propriedade que utilizaremos para programar a forma do objeto é a propriedade Shape. Repare os valores da mesma. Na hora da codificação basta você informar os valores dessa propriedade para que o objeto mude a forma de ser apresentado. Utilizaremos os seguintes valores.

• 0 – Para a forma Retangular. (rectangle) • 1 – Para a forma Quadrada. (square) • 3 – para a forma Circunferência. (circle)

Adicione também dois botões (objetos CommandButton) e formate-os conforme a seguir:

Page 26: Apostila VB

Botão 1 Botão 2

Name: CmdFechar Name: CmdMensagem Caption: &Fechar Caption: &Mensagem

O botão Fechar será programado para finalizar o aplicativo quando clicando, e o botão Mensagem será usado para “DISPARAR” uma mensagem através de uma função. Veja a seguir como deverá ficar o seu formulário com todos os objetos necessários para o exercício.

3.4 CODIFICAÇÃO DOS OBJETOS

Tudo pronto? Então vamos começar a codificação do nosso formulário. A nossa primeira programação será em cima da opção quadrado do primeiro grupo de opções . Dê um duplo sobre o botão de opção quadrado para acessar a janela de codificação do Visual Basic e insira o seguinte código (em negrito). Private Sub OptQuadrado_Click()

ShpFormas.Shape = 1 End Sub

Repare que usamos a sintaxe de atribuição de valores a objetos nesta programação, ou seja, atribuímos o valor 1 (valor da forma quadrado) para a propriedade Shape (responsável pela forma do objeto) do objeto Shape cujo

Page 27: Apostila VB

nome é ShaFormas (propriedade Name). Execute o seu programa ( ou F5) e faça o teste clicando sobre o objeto programado. Fácil não é mesmo? Ótimo. Agora faça o seguinte: Programe agora as opções: Retângulo e Circunferência. Estando pronto (programado) o primeiro grupo de opções, vamos programar o grupo das cores. Devemos seguir o mesmo conceito da programação anterior, porém não é a forma do objeto que vai mudar e sim a cor de fundo (Propriedade BackColor). Para lidar com cores no Visual Basic, podemos usar algumas constantes existentes na própria linguagem de programação. Para usar estas constantes é bem simples. Basta adicionar a frente do nome da cor (o nome da cor em língua inglesa) a palavra reservada VB. Observe os valores das constantes a seguir:

• Cor Branco → vbWhite • Cor Vermelho → vbRed • Cor Azul → vbBlue • Cor Preto → vbBlack • Cor Verde → vbGreen • Cor Amarelo → vbYellow

Dê um duplo clique sobre o botão da opção de cor vermelha e insira a codificação a seguir (em negrito). Private Sub OptVermelho_Click() ShpFormas.BackColor = vbRed End Sub

Execute o seu programa ( ou F5) e faça o teste clicando sobre o objeto programado. Muito bem! Agora, utilizando as constantes das cores, programe o evento Click dos outros botões de opções das cores. Para o botão Fechar utilizaremos o comando no Visual Basic que finaliza uma aplicação. Acesse o evento click do botão fechar e codifique conforme a seguir: (em negrito) Private Sub CmdFechar_Click()

End End Sub O comando End é utilizado para encerrar um aplicativo em qualquer

situação. Teste o programa.

3.5 FUNÇÃO MSGBOX

Page 28: Apostila VB

O botão Mensagem será utilizado para o teste da nossa primeira Função no Visual Basic. Uma função no Visual Basic é um procedimento que retorna um valor. Por exemplo:

Em determinadas situações dentro de um aplicativo, o programador deverá alertar o usuário através de mensagens informativas, mensagens de erros, mensagens de escolha de opções, etc sobre alguma situação ocorrida no programa. Para isso ele poderá usar a função MsgBox a qual retornará uma caixa de mensagem sobre a janela ativa. Para usar a função MsgBox você deverá seguir a seguinte sintaxe. (sintaxe é maneira da disposição das palavras envolvidas na codificação).

Preste bastante atenção nas aspas (“) e nas virgulas (,), pois as mesmas devem existir exatamente no local informado na sintaxe para a função MsgBox funcionar”. A mensagem da caixa de mensagem é a frase que você deseja que apareça ao usuário. O titulo da mensagem seria o Caption da caixa de mensagem. Em relação ao ícone de informação você poderá usar as seguintes constantes:

VbIformation VbExclamation VbCritical VbQuestion

Vamos testar a função MsgBox diretamente no botão mensagem do nosso aplicativo, OK? Bem! Então acesse o evento click no botão e codifique conforme a seguir: (em negrito).

Private Sub CmdMensagem_Click() MgBox " Teste da Função MsgBox.", vbInformation, "Visual Basic." End Sub

Execute o aplicativo e teste, clicando no botão mensagem. Deverá ser apresentada a caixa de mensagem a seguir: Funcionou?...

Tenho certeza que sim! Então parabéns e até a próxima!

Msgox “Mensagem da caixa de mensagem”, ícone de informação, “Título da caixa de mensagem”

Page 29: Apostila VB

apítulo 4 4.1 OPERADORES MATEMÁTICOS

Neste capítulo veremos sobre os operadores matemáticos, praticando exemplos de programação com a utilização dos mesmos. Tanto variáveis como constantes e objetos poderão ser utilizados na elaboração de cálculos matemáticos com a utilização dos operadores matemáticos. Podemos classificar os operadores matemáticos conforme a seguir:

Operador Operação + Adição - Subtração (e indicação de números

negativos) * Multiplicação / Divisão ^ Exponenciação

Dentro da programação você verá que será indispensável se trabalhar com expressões matemáticas, uma vez que, na maioria das vezes, todo trabalho voltado ao computador está relacionado a utilização de cálculos. Para que as expressões aritméticas possam ser executadas no computador, deverão ser executadas de modo diferente como as conhecemos na matemática. Observe o exemplo da expressão a seguir: X = {53 . [65 : (60 + 4)]} Será escrito como: X = (53 * (65 / (60 + 4))) Note que os colchetes e as chaves não são utilizados. No seu lugar utiliza-se somente os parênteses. Observe este outro exemplo: Para se calcular a área de um triângulo, cujo calculo se dá através da multiplicação da base pela altura e depois dividir pela constante 2, ou seja: Area = Base x Altura 2 Na programação deverá se codificado da seguinte maneira: Área = (Base * Altura) / 2 Com esta base teórica acredito que conseguiremos criar um aplicativo teste e codificarmos algumas operações matemáticas. Não é mesmo? Então faça o seguinte: Inicie um novo projeto e formate o formulário e objetos da maneira conforme a figura a seguir:

C

Page 30: Apostila VB

Os nomes dos objetos que serão utilizados como exemplos são: Txt1, Txt2 e Lbl1. Insira também um botão de comando e formate-o da maneira como esta sendo apresentado. A idéia deste exemplo é inserir um valor numérico para cada caixa de texto, somá-los e apresentar o resultado no objeto label clicando no botão calcular: Então, insira a linha de codificação a seguir no evento click do botão calcular (em negrito): Private Sub cmdcalcular_Click()

Lbl1.Caption = Txt1.Text + Txt2.Text End Sub

Execute o programa e insira o valor 2 na caixa1 e 2 na caixa2. Clique no botão calcular. Qual foi o resultado? Bom, se foi quatro está errado. Como resultado deverá aparecer o valor 22. Você sabe o porque? É que é o seguinte: Todo valor inserido em uma caixa de texto o programa interpreta como texto (string), e o que ele fez foi simplesmente juntar (concatenar) o valor da caixa1 com o valor da caixa2. Para solucionar este problema utilizaremos outra função do Visual Basic.chamada Val. A função Val tem a finalidade de transformar em valor numérico uma seqüência de números armazenados dentro de uma string (neste nosso caso, as caixas de texto). Então não se esqueça...Daqui pra frente quando estiver sendo feito uso de um valor numérico, será usada a função Val. Faça a alteração a seguir na sua linha de codificação do botão calcular (em negrito). Private Sub cmdcalcular_Click()

Lbl1.Caption = Val(Txt1.Text) + Val(Txt2.Text) End Sub

Execute o aplicativo e faça o teste. Agora sim o resultado será 4. Salve o seu projeto e guarde-o como exemplo para os próximos aplicativos.

Objetos TextBox Definir ropriedades:

Name e limpar o conteúdo da

propriedade Text

Objeto Label Definir propriedades:

Name, BackColor e limpar o conteúdo da propriedade

Caption

Page 31: Apostila VB

4.2 PRATICANDO PROGRAMAÇÃO COM CÁLCULOS Para demonstrar o uso de todas as operações matemáticas, vamos iniciar um novo projeto e formatar o formulário com seus objetos conforme é exibido na figura a seguir: Para você definir a ordem de tabulação dos objetos inseridos no formulário utilize a propriedade TabIndex. (a ordem quando você pressiona a tecla Tab para se movimentar entre os objetos). Neste nosso exemplo podemos definir esta propriedade para os objetos TextBox e CommandButton. O valor da propriedade TabIndex começa pelo valor 0. Neste exemplo temos dois grupos de opções. O primeiro será para efetuar o cálculo das operações matemáticas: Soma, Subtração, Multiplicação, Divisão e Exponenciação. O segundo grupo de opção será para efetuar o cálculo da raiz quadrada de um valor informado. Para os códigos de programação a seguir, serão usados nomes de objetos criados para este exemplo. Preste bastante atenção nos nomes dos objetos que você informou na propriedade Name dos mesmos para não confundir com os da codificação a seguir.

O botão de comando com o caption deverá conter o código a seguir (em negrito): Private Sub CmdSoma_Click() Lbl1.Caption = Val(TXt1.Text) + Val(Txt2.Text) End Sub Execute o aplicativo e teste a operação da soma. Depois do teste e do funcionamento codifique as outras operações matemáticas.

Formate as propriedades Name e Caption dos objetos Frame. Formate as propriedades Name e Text (limpar o conteúdo) dos objetos TextBox. Formate as propriedades Name, Caption (limpar o conteúdo) e BackColor dos objetos Label. Formate as propriedades Name e Caption dos objetos CommandButton (botões de comando)

Page 32: Apostila VB

O botão de comando com o caption deverá conter o código a seguir (em negrito): Private Sub CmdSub_Click() Lbl1.Caption = Val(TXt1.Text) - Val(Txt2.Text) End Sub

O botão de comando com o caption deverá conter o código a seguir (em negrito): Private Sub CmdMulti_Click() Lbl1.Caption = Val(TXt1.Text) * Val(Txt2.Text) End Sub

O botão de comando com o caption deverá conter o código a seguir (em negrito): Private Sub CmdDivi_Click() Lbl1.Caption = Val(TXt1.Text) / Val(Txt2.Text) End Sub

O botão de comando com o caption deverá conter o código a seguir (em negrito): Private Sub CmdExpo_Click() Lbl1.Caption = Val(TXt1.Text) ^ Val(Txt2.Text) End Sub Em seguida vamos codificar a operação da raiz quadrada. Programe o

botão com o seguinte código (em engrito): Private Sub CmdRaiz_Click() Lbl2.Caption = Sqr(Txt3.Text) End Sub Repare a função Sqr. Esta função retorna a raiz quadrada de um número informado. O que fizemos foi atribuir o valor da terceira caixa de texto (Txt3) juntamente com a função Sqr para o objeto Label (Lbl2). Execute alguns testes no aplicativo e verifique se tudo está funcionando corretamente. Salve o seu programa, e o guarde bem, pois vamos utilizá-lo nos próximos exemplos.

Page 33: Apostila VB

4.3 VARIÁVEIS Variável é uma área reservada na memória do computador para armazenar informações (valores) temporariamente. Uma variável se caracteriza por ser uma região da memória, previamente identificada através de um nome, que tem por finalidade armazenar as informações de um programa. Cada variável utilizada no programa armazena somente um valor por vez. O conteúdo armazenado em uma variável é considerado o seu valor. O valor está relacionado com o tipo de dado que uma variável pode armazenar.

4.4 TIPOS DE VARIÁVEIS (DADOS)

os tipos de variáveis (OS DADOS) são representados pelas informações a serem processadas por uma máquina (computador). A linguagem de programação Visual Basic fornece ao programador um conjunto de tipos de variáveis já predefinidos como será mostrado a seguir:

• Variáveis de dados do TIPO NUMÉRICO:

� BYTE : Utilizado para definir tipo de valores inteiros positivos pequenos. Estes valores estão concentrados no intervalo de 0 até 255. Este tipo de variável utiliza um espaço de 1 byte de memória.

� INTEGER : Define o tipo de valores para números inteiros

pequenos. Estes valores se concentram no intervalo de -32.768 (negativos) até 32.767 (positivos). Ocupa um espaço de 2 bytes de memória e tem como caractere de declaração (tipo de dado) o sinal % (porcentagem).

VarInteger = 10 � LONG = Tipo de valores para números inteiros grandes,

estando estes valores concentrados no intervalo de -2.147.483.648 (negativo) até 2.147.483.647 (positivos). Ocupa 4 bytes de memória. O caractere de declaração (tipos de dados) é o sinal de & (e comercial).

VarIntegerLong = 123456789

� SINGLE : Utilizada para números de precisão simples, tem como caractere identificador o sinal ! (ponto de exclamação). A variável deste tipo contem números que são aproximações. Podemos ter a precisão de apenas sete dígitos. Ocupa espaço de 4 bytes de memória, permitindo assim que uma variável deste tipo consiga trabalhar com valores na faixa de -3,402823Ee38 até -1,401298e-45. Os valores positivos estão na faixa de 1,401298e-45 até 3,402823e38.

Page 34: Apostila VB

� DOUBLE : as variáveis deste tipo de dado contem números com precisão de 16 dígitos e permitem mais de 300 dígitos. Utiliza como identificador o sinal #. Este tipo de dado ocupa um espaço de 8 bytes de memória permitindo assim que essa variável consiga trabalhar com valores negativos na faixa de -1,79769313486232E308 até -4,94065645841247e-324 (números negativos). Os números positivos aceitos estão na faixa de 4,94065645841247E-324 até 1,79769313486232E308.

• OUTROS TIPOS DE DADOS

� STRING : Este tipo de variável pode armazenar valores alfanuméricos como por exemplo: letras, pontos, números e caracteres especiais do teclado. Esta variável poderá ser configurada de forma que aceite até 64K por seqüência de string, e isto irá ocupar um espaço de 1 byte por caractere. O sinal identificador é o $ (cifrão ou dólar).

� BOOLEAN : Variável do tipo Lógica, ou seja, define um tipo

lógico de dados podendo conter somente os valores True (verdadeiro) ou False (falso). Ocupa espaço de memória de 2 bytes.

� DATE : Este tipo de variável fornece uma maneira

conveniente para armazenar a informação de data e hora para qualquer intervalo de tempo entre meia-noite de 1º de janeiro do ano 0100 até meia-noite de 31 de dezembro de 9999. Este tipo de variável ocupa 8 bytes de memória.

� VARIANT : Este tipo de variável foi acrescentado ao Visual

Basic na versão 2.0 e é utilizado para armazenar qualquer tipo de dado.

4.5 NOMES DE VARIÁVEIS

Para que possamos utilizar uma variável ela deve ser declarada, ou seja, antes de atribuir qualquer valor para ela devemos tratá-la com um nome. O nome de uma variável é utilizado para identificação e posterior o uso dentro de um programa. Para declarar uma variável (atribuir um nome) é necessário que sejam estabelecidas algumas regras. Observe:

• Os nomes de uma variável podem conter um ou mais caracteres. Os nomes das variáveis no Visual Basic podem ter até 255 caracteres;

Page 35: Apostila VB

• O primeiro caractere do nome de uma variável não poderá ser nunca um número, ou seja, o nome deverá começar sempre com uma letra;

• O nome de uma variável não poderá conter espaços em branco; • Também não poderá ser uma palavra reservada do Visual Basic,

seja nome de objeto, nome de função, nome de procedimento, nome de comandos, etc.

• Não poderá ser utilizado nenhum caractere especial para declaração do nome da variável, como por exemplo: @, #, $, %, &. O único caractere que sofre esta exceção é o underline ( _ ), que poderá ser utilizado para simular a separação entre duas palavras, como por exemplo: Valor_1.

4.6 DECLARANDO VARIÁVEIS Para a declaração de variáveis deve-se utilizar a instrução DIM e informar o nome e o tipo da variável. O termo técnico para esta instrução é declaração. Observe a sintaxe a seguir: DIM <nome> AS <tipo> Vamos supor que queiramos declarar uma variável com o nome Valor1 e que a mesma seja do tipo Single. Utilizando a sintaxe de declaração de variáveis teríamos o seguinte resultado: Dim Vlr1 As Single Você pode declarar suas variáveis uma abaixo da outra. Observe o exemplo:: Dim Vlr1 As Single Dim Vlr2 As Single Poderá também colocar uma Linha de Comentário a frente da declaração das variáveis utilizando o caractere ‘ (aspas simples). Isto servirá para você documentar o seu projeto, ou seja, informar, no caso de variáveis, qual o objetivo de declaração das mesmas. Observe o exemplo a seguir: Dim Vlr1 As Single ‘Variável utilizada para armazenar o valor 1 Dim Vlr2 As Single ‘Variável utilizada para armazenar o valor 2 As linhas de comentário ficarão com uma cor diferenciada da declaração das variáveis. Você pode combinar declarações de variáveis (mesmo de tipos diferentes), em uma única linha, por exemplo:

Page 36: Apostila VB

Dim Vlr1 As Single, Vlr2 As Single, Vlr3 As Currency Um erro comum de se cometer é utilizar algo como: Dim Vlr1, Vlr2, as Single Neste caso pressupõe-se que as duas variáveis sejam do tipo Single, porem a variável Vlr1 é do tipo Variant e somente a variável Vlr2 é o tipo Single. Podemos concluir então que, todas as vezes precisamos utilizar o identificador de tipo.

4.7 FORÇANDO A DECLARAÇÃO DE VARIÁVEIS um dos erros mais comuns que podemos constatar em um programa é o nome da variável com erro de ortografia. Se você cometer um erro ortográfico com o nome de uma variável em seu programa o Visual Basic criará uma nova variável que não tem nada a ver com aquela que você queria trabalhar, e conseqüentemente isto provocará um erro inevitavelmente. Para evitar este tipo de situação devemos fazer com que todas as variáveis sejam declaradas. Desta maneira você será notificado se houver erro ortográfico ou até mesmo a não declaração de uma variável de um procedimento. A instrução necessária para exigir a declaração de variáveis chama-se Option Explicit. Para utilizar a instrução Option Explicit execute os seguintes passos:

1. Abra a janela de codificação do Visual Basic (code). 2. Selecione na caixa de objetos (Object) o objeto General. 3. Selecione Declarations na caixa de combinação Procedure. 4. Digite Option Explicit.

Depois de processado o comando Option Explicit, o Visual Basic não permitirá mais que você utilize uma variável sem antes declará-la. Se tentar utilizá-la sem a declaração da mesma, aparecerá uma mensagem de erro, alertando que a variável não está definida. Sem o comando Option Explicit declarando esta mensagem não seria exibida. Observe a figura a seguir:

Forçando a declaração de variáveis no Visual Basic.

Page 37: Apostila VB

Se quiser, você poderá selecionar uma opção no Visual Basic que insira automaticamente o comando Option Explicit em seu código conforme seja necessário: Para esta executar esta opção execute os seguintes passos:

1. Selecione o Menu Tools no Visual Basic.

2. Selecione e clique no item Options...

3. Na janela que será exibida selecione a guia Editor marque a caixa com a opção: Require Variable Declaration.

4. Por fim, clique no botão OK.

Page 38: Apostila VB

4.8 NÍVEIS DE DECLARAÇÃO DE VARIÁVEIS Existe três níveis de declaração de variáveis que você poderá escolher para declarar as suas variáveis. Você poderá declarar suas variáveis nos seguintes níveis:

• NÍVEL DE OBJETO : As variáveis declaradas neste nível poderão ser usadas somente para o objeto declarado, ou seja, outros objetos não reconhecerão a variável declarada a nível de objeto. Esta variável é declarada na Procedure do objeto em que será utilizada. Observe o exemplo a aseguir:

Foi declarado as variáveis Vlr1 e Resultado no procedimento do objeto Cmdsoma, isto significa que elas poderão ser usadas somente neste objeto.

• NÍVEL DE FORMULÁRIO : As variáveis declaradas em nível de

formulário são aquelas declaradas na seção General – Declarations, como visto anteriormente. As variáveis declaradas neste local poderão ser utilizadas por todos os objetos do formulário declarado, inclusive o formulário. Observe o exemplo a seguir:

• NÍVEL DE PROJETO : As variáveis declaradas em nível de projeto poderão ser utilizadas por todos os objetos e todos os formulários pertencentes ao projeto. Só que neste caso a variável terá que ser declarada em um módulo e em vez de usar a instrução DIM terá que ser usada a instrução PUBLIC. Estudaremos sobre módulo mais pra frente, portanto, quando declararmos um variável de nível de projeto será exemplificado da maneira como exemplificamos os outros níveis de declaração. OK?

Bem! Já estamos com um grande conhecimento sobre variáveis, não é?

Page 39: Apostila VB

No próximo capítulo vamos ver como podemos efetuar programação utilizando variáveis. Até lá então....

Page 40: Apostila VB

apítulo 5 4.1 ATRIBUINDO VALORES A VARIÁVEIS

Depois de termos o primeiro contato com variáveis (tipos, declaração, níveis de declaração), chegou à hora de executarmos exemplos de programação com variáveis. Para isto você terá que aprender também a atribuir valores a variáveis. Preste atenção na sintaxe a seguir: <Nome da Variável> = Valor Repare que a atribuição de valor a uma variável é parecida com a atribuição de valor a um objeto. A diferença é que a variável não tem propriedade. Vamos supor que temos uma variável declarada com o nome Valor1 e esta variável é do tipo Integer. Vamos atribuir para esta variável o valor 100. Observe o exemplo a seguir: Valor1 = 100 Simples não é mesmo? Pois é! Atribuição de variável é isto mesmo. É armazenar um valor em uma variável declarada para podermos utilizá-la durante a programação do aplicativo. Bem! Vamos então a um exemplo com variáveis. O exemplo a seguir efetuará o cálculo do salário liquido de um profissional que trabalha por hora. Terá que ser informado o valor da hora de trabalho, o número de horas trabalhadas e um percentual de desconto. Depois destes valores informados deverá ser apresentado: o valor do salário bruto, o valor do desconto e o valor do salário líquido. Inicie um novo projeto e formate o formulário e objetos conforme a seguir:

• FORMULÁRIO : � Name : FrmSalário � Caption : Cálculo de Salário com Variáveis � MaxButton : False � Minbutton : False � StartUpPosition : 2 – CenterScreen

• GRUPO DE OPÇÕES : (Frame – 2)

� Name : FraInf FraResult � Caption : Informações

Resultados

• CAIXAS DE TEXTO (TextBox - 3) : � Name : TxtHoras

TxtValorHora TxtPorcentagem

� Text : Limpar o conteúdo das caixas de texto

C

Page 41: Apostila VB

• RÓTULOS (LABEL - 2) : � Name : LblSalBruto LblSalLiquido � Alignment : 2-Center (Centraliza o caption no centro do

objeto) � Caption : Limpar o conteúdo dos rótulos. � BackColor : Definir uma cor diferente a do formulário.

Os objetos Label usados para informação, deverão ser formatados a propriedade Caption. Observe na figura do formulário a seguir o valor da propriedade Caption de cada um deles.

• BOTÕES DE COMANDO (CommandButton - 1) � Name : CmdCalcular CmdSair � Caption : &Calcular &Sair

Formate também a ordem de tabulação dos objetos através da propriedade TabIndex. E não esqueça de salvar o seu projeto. A aparência do formulário deverá ficar conforme a figura a seguir:

4.2 PROGRAMANDO COM VARIÁVEIS Vamos programar? As variáveis que serão declaradas são as seguintes: HoraTrab (Utilizada para calculo das horas trabalhadas) ValorHora (Utilizada para o valor da hora trabalhada) PercDesc (Utilizada para o percentual do desconto) SalBruto (Utilizada para o Valor do Salário Bruto) TotDesc (Utilizada para o Total de Descontos)

Page 42: Apostila VB

SalLiq (Utilizada o Salário Líquido) Estas variáveis poderão ser declaradas a nível local, pois serão utilizadas somente no botão calcular. Bem! Então acesse o evento click do botão calcular e declare as variáveis conforme a seguir (em negrito): Private Sub CmdCalcular_Click() Dim HoraTrab As Single 'Utilizada para calculo das horas trabalhadas Dim ValorHora As Single 'Utilizada para o valor da hora trabalhada Dim PercDesc As Single 'Utilizada para o percentual do desconto Dim SalBruto As Single 'Utilizada para o Valor do Salário Bruto Dim TotDesc As Single 'Utilizada para o Total de Descontos Dim SalLiq As Single 'Utilizada o Salário Líquido End Sub Repare que foi utilizada a linha de comentário (‘) após a declaração das variáveis. Isto é super importante pra você não esquecer para que serve cada variável. Em seguida vamos atribuir valores às variáveis. Abaixo das variáveis declaradas (neste mesmo objeto) insira a seguinte linha de código: HoraTrab = TxtHoras.Text ValorHora = TxtValorHora.Text PercDesc = TxtPorcentagem.Text Para a variável HoraTrab é atribuído o valor da caixa de texto TxtHoras. Para a variável ValorHora é atribuído o valor da caixa de texto TxtValorHora. Para a variável PercDesc é atribuído o valor da caixa de texto TxtPorcentagem. Depois de atribuir os valores às variáveis, serão efetuados os cálculos necessários. Abaixo da codificação efetuada acima, insira a linha de código a seguir: SalBruto = HoraTrab * ValorHora TotDesc = (PercDesc / 100) * SalBruto SalLiq = SalBruto - TotDesc Observe: Na variável SalBruto é armazenado o cálculo (multiplicação) entre as variáveis HoraTrab e ValorHora. Isto é feito pra saber de quanto será o salário bruto do profissional. Na variável TotDesc é armazenado o tal desconto. Este total de desconto pode ser por exemplo: a porcentagem de desconto do imposto INSS. Divide-se a porcentagem de desconto (PercDesc) por 100 e em seguida multiplica-se pelo salário bruto (SalBruto) do profissional. Repare que a operação de divisão está entre parênteses, pois neste calculo existe duas operações: Divisão e Multiplicação. Na variável SalLiq é armazenado o cálculo (Subtração) das variáveis: SalBruto e TotDesc para se obter o valor do salário liquido do profissional.

Page 43: Apostila VB

Feito isto, agora é só exibir os valores armazenados nas variáveis nos objetos Label. LblSalBruto (mostra o salário bruto) e LblSalLiquido (mostra o salário liquido). Então, abaixo das linhas de programação relativas aos cálculos, insira as seguintes linhas de codificação: LblSalBruto.Caption = SalBruto LblSalLiquido.Caption = SalLiq Execute o seu programa e faça os testes. Perceba que o programa executa todos os cálculos e em seguida são exibidos o salário bruto e o salário líquido do profissional, cujos valores estão armazenados nas variáveis SalBruto e SalLiquido. Repare que os resultados dos salários não aparecem na forma de moeda, ou seja, sem o símbolo do Real (R$) e sem pontos e virgulas nas casas decimais. Para resolver este problema podemos utilizar uma função chamada Format. A função Format retorna uma expressão devidamente formatada do conteúdo de um valor. A sintaxe para esta função é a seguinte: Format(Expressão Numérica, Formato) Preste atenção no exemplo: Vamos formatar o valor 2556 para ser apresentado como valor moeda. Format(2556, "R$ ##,##0.00") Repare que o formato deve estar entre aspas dupla (“). O caractere # utilizado na função Format é usado para se referenciar a números e os zeros ao final da formatação são referentes a formatação moeda. Outro detalhe é que as casas decimais não contem virgula (,) e sim ponto (.). Isto acontece devido a linguagem de programação. Alem de você poder formatar valores numéricos poderá formatar também a apresentação de datas. Vamos voltar ao aplicativo então.

O formulário de calculo de salário com valores calculados.

Page 44: Apostila VB

Para a formatação dos salários (Bruto e Líquido) atualize suas duas ultimas linhas de codificação do botão Calcular conforme a seguir: LblSalBruto.Caption = Format(SalBruto, "R$ ###,##0.00") LblSalLiquido.Caption = Format(SalLiq, "R$ ###,##0.00") Execute o aplicativo e faça novamente os testes. Os resultados dos salários Bruto e Liquido deverão ficar com o formato da figura a seguir: Programe o botão Sair, utilizando o comando End no evento click do mesmo. O comando End irá finalizar a aplicação. SALVE O SEU PROJETO. Gostou de trabalhar com variáveis? As variáveis possuem uma importância fundamental dentro de qualquer linguagem de programação no nosso caso o Visual Basic. Elas armazenam os dados que vão para a memória do computador, e sempre que referenciamos a elas, esses dados retornam da memória. E quando estão na memória podem fazer cálculos e executar determinadas funções. Isto faz com que todos os procedimentos que executamos utilizando variáveis terão um processamento mais rápido e seguro pois estamos lidando com informações armazenadas diretamente na memória da máquina.

4.3 VARIÁVEIS NAS OPERAÇÕES MATEMÁTICAS Depois de praticar o uso de variáveis no projeto salário, vamos agora executar mais alguns testes utilizando um projeto já existente. Utilizaremos o projeto codificado no capítulo 4, o projeto das operações matemáticas. Toda a programação que fizemos naquele projeto sobre os operadores matemáticos e raiz quadrada, foi executada utilizando diretamente os valores das caixas de texto.

Page 45: Apostila VB

A seguir veremos como podemos efetuar os cálculos utilizando variáveis. O primeiro passo é declarar as variáveis que serão utilizadas para os cálculos. As variáveis que utilizaremos aqui serão de nível de formulário, pois utilizaremos as mesmas variáveis para todas as operações matemáticas. Somente para o calculo da raiz quadrada será utilizada uma variável diferenciada. Na seção General – Declarations do formulário crie as seguintes variáveis: As variáveis são do tipo Single visto a operação de divisão poder possuir um resultado de número real, ou seja, com ponto flutuante. Agora faça o seguinte:

No botão da operação soma codifique a seguinte linha de programação no evento click (em negrito): Private Sub CmdSoma_Click()

Abra o projeto das operações

matemáticas.

Option Explicit Dim Vlr1 As Single 'Variável para armazenar valor da 1ª Cx de Texto (Txt1) Dim vlr2 As Single 'Variável para armazenar valor da 2ª Cx de Texto (Txt2) Dim Result As Single 'Variável para armazenar Resultado dos Cálculos entre Txt1 e Txt2 Dim VlrRaiz As Single 'Variável para armazenar valor Cx de Texto Raiz Quadrada (Txt3) Dim ResultRaiz As Single 'Variável para armazenar cálculo da Raiz Quadrada.

Page 46: Apostila VB

Vlr1 = TXt1.Text vlr2 = Txt2.Text Result = Vlr1 + vlr2 Lbl1.Caption = Result End Sub A linha de codificação acima tem a seguinte explicação:

1. Armazenamos o valor da 1ª Caixa de Texto na variável com o nome Vlr1.

2. Em seguida armazenamos o valor da 2ª Caixa de Texto na variável com o nome Vlr2.

3. Para obter o resultado da soma, armazenamos a soma das variáveis Vlr1 e Vlr2 na variável com o nome Result.

4. E por último exibimos o conteúdo da variável Result no objeto Label com o nome Lbl1

Seguindo o exemplo da operação soma, utilize as mesmas variáveis e codifique as outras operações. Lembre-se: A única coisa que vai mudar é o operador matemático. Você deve estar pensando: Como vou programar as outras operações utilizando as mesmas variáveis? Bom! Isto é simples. Primeiramente as variáveis são de nível de formulário. (Lembra disso?) Outra coisa. As variáveis armazenam valores temporariamente, ou seja, quando você efetua o calculo da operação soma, as variáveis vão receber os valores referentes a esta operação. A partir do momento que você efetua o calculo de outras operações (desde que estejam programadas), as variáveis “assumem” os valores e os operadores relativos à nova operação. Simples não é mesmo? Depois de programar as outras operações matemáticas, programe a

operação da raiz quadrada. No evento click do botão da raiz quadrada codifique a seguinte linha de programação (em negrito): Private Sub CmdRaiz_Click() VlrRaiz = Sqr(Txt3.Text) ResultRaiz = VlrRaiz Lbl2.Caption = ResultRaiz End Sub Deu tudo certo! Ótimo… Salve o seu trabalho e guarde-o para suas futuras pesquisas.

Page 47: Apostila VB

apítulo 6 6.1 OPERADORES RELACIONAIS

Em determinadas situações dentro de um aplicativo precisamos de maneiras diferenciadas para verificar algum procedimento alem da condição de igualdade. Para isto utilizaremos os Operadores Relacionais. Estes operadores fazem comparações entre variáveis ou expressões. O retorno desta comparação será sempre True (Verdadeiro) ou False (Falso). Observe na tabela a seguir os operadores relacionais com seus símbolos e nomenclaturas.

Símbolo Descrição = Igual

> Maior < Menor

>= Maior ou Igual <= Menor ou Igual <> Diferente

Nos exemplos a seguir podemos constatar que todas as comparações serão verdadeiras.

1 < 4

6 > 3

2 <= 5

7 >= 5

10 = 10

7 >= 7

9<=9

6 <> 4

Estes operadores serão de muita utilidade quando começarmos a trabalhar com Estruturas Condicionais além dos operadores Lógicos, que veremos a seguir:

6.2 OPERADORES LÓGICOS existem muitas ocasiões dentro da codificação de um aplicativo em que é necessário trabalharmos com o relacionamento de duas ou mais condições em uma estrutura condicional. Para estas situações será necessário o uso dos operadores lógicos. Enquanto que os operadores matemáticos nos retornam o resultado de um cálculo, os operadores lógicos sempre irão retornar o valor True quando a lógica é exata, ou o valor False quando a lógica não é exata.

C

Page 48: Apostila VB

Complicou um pouquinho? Calma que a explicação para tudo isto já vem por ai. Os operadores lógicos mais usados serão apresentados a seguir:

• Operador AND: Será utilizado quando dois ou mais relacionamentos lógicos de uma determinada condição precisarem ser verdadeiros. Observe a tabela verdade a seguir para este tipo de operador.

1ª CONDIÇÂO 2ª CONDIÇÂO SITUAÇÃO DO

RESULTADO Verdadeira Verdadeira Verdadeira

Falsa Falsa Falsa

Verdadeira Falsa Falsa Falsa Verdadeira Falsa

30 > 15 And 7 = 7 Este resultado será verdadeiro (True), pois 30 é maior que 15 E 5 é igual a 5. 12 > 10 And 7 = 4 Neste caso o resultado será falso (False). 12 é maior que 10 mas 7 não é igual a 4. Somente uma das duas expressões da condição eram verdadeiras.

• Operador OR : Utilizaremos este operador quando precisarmos comparar dois relacionamentos e pelo menos um deles deve ser verdadeiro (ou Um ou o Outro deverá ser Verdadeiro). Observe a tabela verdade deste operador:

1ª CONDIÇÂO 2ª CONDIÇÂO SITUAÇÃO DO

RESULTADO Verdadeira Verdadeira Verdadeira

Falsa Falsa Falsa Verdadeira Falsa Verdadeira

Falsa Verdadeira Verdadeira

30 < 20 Or 7 > 4 O resultado será verdadeiro (True). 30 não é menor que 20, mas 7 é maior que 4. 20 < 10 Or 4 > 5 O resultado será falso (False), pois 20 não é menor que 10 e nem 4 é maior que 5.

• Operador NOT: Será utilizado quando se necessitar determinar que uma condição deve ser Not True (Não Verdadeira) ou deve ser Not False (Não Falsa). Podemos também dizer que é um operador que inverte o resultado, passando algo que seria

Page 49: Apostila VB

verdadeiro para falso e de falso para verdadeiro. Observe a Tabela Verdade:

CONDIÇÂO SITUAÇÃO DO RESULTADO

Verdadeira Falsa Falsa Verdadeira

Not (7 > 3) Resultado falso (False). 7 é maior que 3. Esta situação de comparação seria Verdadeira (True), porem, como possui o operador Not, ele inverte o resultado, e o retorno é falso (False).

• Operador XOR: Este operador exige exatidão na condição. Não pode haver equívoco na comparação dos relacionamentos. Ou é uma coisa ou outra. Jamais as duas.

7 > 9 Xor 7 > 5 Retorna um resultado verdadeiro (True), pois o resultado das duas comparações foram diferentes. A primeira é falsa (False) e a segunda é verdadeira (True). 8 > 10 Xor 6 > 8 Retorna falso (False), pois o resultado das duas comparações foram semelhantes. A primeira é falsa (False) e a segunda também (False). 9 > 7 Xor 7 > 5 Retorna falso (False), pois o resultado das duas comparações foram semelhantes. A primeira é verdadeira (True) e a segunda também (True).

6.3 TOMADA DE DECISÕES - ESTRUTURAS CONDICIONAIS Como o próprio nome já indica, estes comandos executam determinadas ações desde que algumas condições sejam favoráveis (verdadeiras). Para efetuar uma tomada de decisão dentro de um aplicativo, o programador deverá utilizar a estrutura condicional da instrução If / End if. Esta instrução tem por objetivo definir uma decisão. Esta decisão é fundamentada em uma determinada condição que o programador passa, pelas linhas de código, ao aplicativo que está sendo desenvolvido, e poderá efetuar um desvio no processamento do programa, dependendo da condição ter um resultado Verdadeiro (True) ou Falso (False). A seguir será exibida a maneira de como escrever uma instrução If (simples).

Page 50: Apostila VB

If <Condição> Then <Operação> End if Neste exemplo se a <Condição> for Verdadeira será executada a <Operação>, que se localiza logo abaixo da instrução If, e em seguida o programa executará as outras linhas de codificação localizadas após o End If. Se a <Condição> for Falsa será executada somente a codificação existente após o End If. Vamos fazer um exemplo prático para isso? OK! Então vamos lá... Inicie um novo projeto e crie um formulário com os seus objetos conforme é mostrado a seguir. Serão utilizados os seguintes objetos:

1. Um Label 2. Uma textBox 3. Um commandButton

Os nomes dos objetos ficará por sua conta, porem, observe bem os nomes (propriedade Name) dos objetos que utilizarei nas linhas de codificação. Salve o seu programa. Neste exemplo terá que ser informado um numero inteiro na caixa de texto. Se o número for maior que 10 será informado através de uma mensagem (Msgbox) que o número informado é maior que 10. Acesse o evento Click do botão processar e codifique as linhas a seguir (em negrito): Private Sub Command1_Click() Dim VlrInteiro As Integer VlrInteiro = Txt1.Text If VlrInteiro > 10 Then MsgBox "Número digitado maior que 10", vbExclamation, "Aviso" End If End Sub Foi declarada uma variável (VlrInteiro) para receber o valor da Cx. De Texto (Txt1). A instrução If está testando o número que será digitado na caixa de texto. Se for maior que 10 exibe a mensagem. Caso for menor ou igual a 10 não irá acontecer nada. Execute o aplicativo e faça o teste. Salve o seu programa.

Traduzindo isto ficaria assim: Se <condição> Então <Operação> Fim Se

Page 51: Apostila VB

6.4 ESTRUTURA IF / ELSE / END IF

Depois de testar a condicional simples da instrução IF / End If, iremos ver como podemos fazer uso da instrução If / Else / End If. Esta condicional funciona da seguinte maneira: Se a condicional do If for Verdadeira então será executada a primeira operação, caso contrário será executada a operação posicionada abaixo do Else. Observe como fica a condicional utilizando o Else: If <Condição> Then <Operação> Else <Operação> End if Vamos ao exemplo prático disto. No mesmo projeto que acabamos de programar faremos uma nova codificação para testar esta estrutura condicional. Acesse novamente o evento Click do botão processar e deixe a programação da condicional existente como linhas de comentário utilizando o caractere aspas simples (‘) ao lado esquerdo das linhas de codificação. A declaração da variável e a atribuição de valor à variável deixe como está. Logo abaixo da condiconal (que está como linha de comentário) insira a nova programação (em negrito). Private Sub Command1_Click() If VlrInteiro > 10 Then MsgBox "Número digitado MAIOR que 10", vbExclamation, "Aviso" Else MsgBox "Número digitado MENOR ou IGUAL que 10", vbExclamation,"Aviso" End If End Sub A declaração da variável e a atribuição de valor continua com a mesma rotina do exemplo anterior. A condicional agora funciona da seguinte maneira: Se o valor digitado na Cx. De texto for maior que 10 então será exibida uma mensagem informando que o número é maior que 10. Senão será exibida uma mensagem informando que o número informado é menor ou igual a 10. Execute o aplicativo e faça os testes e não esqueça de SALVAR o seu projeto.

A tradução disto seria: Se <Condição> Então <Operação> Senão <Operação> Fim Se

Page 52: Apostila VB

6.5 ESTRUTURA IF / ELSEIF / ELSE / END IF

Depois de trabalhar com a instrução If / Else / end if ainda temos mais uma opção para trabalharmos com uma estrutura condicional IF. Observe o exemplo a seguir: If <Condição> Then <Operação> Elseif <Condição> Then <Operação> Else <Operação> End if Repare que modificamos comando o Else para ElseIf, que é sempre executado quando a condição (primeira) não é verdadeira. O Else será executado dependendo da outra condição (segunda) ser Falsa. Isto poderia ser resumido da seguinte maneira: Se a condição do IF for Verdadeira então é executada a primeira operação. Se a condição do IF for Falsa será testada a condição do ELSEIF e esta sendo Verdadeira será executada a sua operação. Caso as condições do IF e do ELSEIF forem falsas será executada a operação do ELSE, sem haver a necessidade de condição para o ELSE, pois se a primeira e a segunda condicional forem FALSA logicamente que a VERDADEIRA só poderá, neste exemplo, ser a ultima. Então vamos as exemplo. Vamos utilizar o mesmo aplicativo que utilizamos nos dois últimos exemplos. Acesse o Evento click do botão botão e faça as seguintes modificações: Mantenha a declaração da variável e atribuição de valor á ela e nas outras linhas de programação utilize o caractere aspas simples (‘) para deixá-las como linhas de comentário, como feito no exemplo anterior. Agora insira as novas linhas de codificação que são mostradas a seguir (em negrito) Private Sub Command1_Click() If VlrInteiro > 10 Then MsgBox "Número digitado MAIOR que 10", vbExclamation, "Aviso" ElseIf VlrInteiro < 10 Then MsgBox "Número digitado MENOR que 10", vbExclamation, "Aviso" Else MsgBox "Número digitado IGUAL a 10", vbExclamation, "Aviso" End If End Sub Esta condição funciona da seguinte maneira:

A tradução disto seria: Se <Condição> Então <Operação> SenãoSe <Condição> então <Operação> Senão <Operação> Fim Se

Page 53: Apostila VB

Se o valor digitado for maior que 10 então será exibida uma mensagem informando que o numero é maior que 10. Senão se o número informado for menor que 10 a mensagem exibida informará que o numero é menor que 10. Senão a mensagem informará que o número é igual a 10. Legal isto não? Execute o seu aplicativo e teste. Salve o seu programa pois ele será de grande utilidade pra você quando precisar pesquisar sobre estruturas condicionais IF.

6.6 ESTRUTURA SELECT CASE Quando trabalhamos com uma seqüência grande de condições, podemos deixar o programa um tanto meio difícil de ser interpretado. A estrutura SELECT CASE é uma forma eficiente de atender este tipo de situação, ou seja, tornar mais enxuto o nosso código. SELECT CASE significa “Seleção de Casos”. Em outros palavras colocamos várias possibilidades (vários casos) para o Visual Basic e ele escolhe um. A sintaxe da instrução Select Case é a seguinte: Select Case <variável> Case <Valor1> <operaçãoValor1> Case <Valor2> <operaçãoValor2> Case <Valor3> <operaçãoValor3> Case Else <OutraOperação> End Select A instrução Case Else não é obrigatória dentro da instrução Select Case, porem, é utilizada para caso nenhum dos valores Case serem verdadeiros. Para poder mostrar como funciona o Select Case, Inicie um novo projeto e formate o seu formulário conforme é exibido na figura a seguir: Serão utilizados os seguintes objetos:

1. 3 objetos Label (2 informativos e 1 para exibir um resultado) 2. 1 objeto textBox (para informar um valor) 3. 1 objeto commandButton (para executar a operação)

Fique atento para os nomes dos objetos (Propriedade Name) que serão utilizados na programação. Seu formulário deverá ser configurado conforme será exibido na figura a seguir:

Page 54: Apostila VB

Este nosso exemplo funcionará da seguinte maneira>

1. Será informado um número inteiro; 2. Este número deverá ser verificado para ver se corresponde

a um mês válido. 3. Se for um mês válido deverá ser exibido o nome do mês. 4. Caso o mês não seja válido deverá ser notificado através

de uma mensagem (MsgBox) Vamos programar então? Acesse o evento Clock do botão Executar e insira a seguinte codificação (em negrito): Private Sub CmdExecutar_Click() Dim Valor As Byte Valor = Txt1.Text Select Case Valor Case 1 Lbl1.Caption = "Janeiro" Case 2 Lbl1.Caption = "Fevereiro" Case 3 Lbl1.Caption = "Março" Case 4 Lbl1.Caption = "Abril" Case 5 Lbl1.Caption = "Maio" Case 6 Lbl1.Caption = "Junho" Case 7 Lbl1.Caption = "Julho" Case 8 Lbl1.Caption = "Agosto" Case 9 Lbl1.Caption = "Setembro" Case 10 Lbl1.Caption = "Outubro" Case 11 Lbl1.Caption = "Novembro"

Page 55: Apostila VB

Case 12 Lbl1.Caption = "Dezembro" Case Else MsgBox "Mês inexistente. Informe um valor >= 1 ou <= 12.", vbInformation, "Atenção."

Txt1.SetFocus End Select End Sub Execute o seu aplicativo e faça os devidos testes. Neste exemplo declaramos uma variável de nível de objeto do tipo Byte e atribuímos a ela o valor do objeto TextBox (Txt1). Em seguida pedimos ao Visual Basic fazer uma seleção de casos através da estrutura condicional Select Case em cima da variável Valor. Utilizamos um Case para todos os meses do calendário (1 até 12). Se o usuário digitar um mês que não se encontra nesta seleção a mesma será desviada para o Case Else informando, através de uma mensagem (MsgBox), que o mês informado não existe. Depois da mensagem o foco do cursor é enviado para a caixa de texto Txt1 através do método SetFocus. E por fim fecha-se a estrutura Select Case com o End Select. A estrutura Select Case será de grande utilidade para você dentro da programação. Não esqueça de salvar o seu programa. Ficamos por aqui. No próximo capítulo executaremos mais alguns exemplos com condicionais para firmarmos bem isto. Valeu...e até mais!

Page 56: Apostila VB

apítulo 7 7.1 CONDICIONANDO OBJETOS

Ola pessoal! Depois do conteúdo sobre estruturas condicionais que foi passado no capítulo anterior, acredito que você esteja apto a fazer alguns testes mais aprofundados. Certo? Neste nosso próximo exemplo utilizaremos nosso projeto de operações matemáticas para aplicação de algumas estruturas condicionais IF. Então abra o projeto de operações matemáticas. As últimas codificações em cima deste aplicativo foi a implementação dos cálculos com variáveis. Tudo funcionou corretamente, porem, pode acontecer um erro gravíssimo. As variáveis que foram declarados foram do tipo numérica (Single), lembra-se? Pois é! Na hora de efetuar os cálculos, se o usuário informar algum valor nas caixas de texto que não seja valor numérico o aplicativo retornará um erro. Vamos fazer este teste?

Ok! Então execute o aplicativo e clique no botão soma , sem informar nenhum valor nas caixas de texto. Com certeza a programa retornará um erro com a seguinte mensagem:

C

Formulário de Operações Matemáticas.

Page 57: Apostila VB

A mensagem deste erro significa que não houve “combinação” de valores, ou seja, o tipo de valor que você esta querendo atribuir a variável é incompatível com o tipo dela. Quando você clicou no botão da soma (depois de ter executado o aplicativo), a primeira cx. de texto (Txt1) estava vazia, ou seja, o conteúdo que havia na caixa era vazio. (“”). Quando o programa foi atribuir este valor á variável gerou o erro porque a variável é numérica. Entendeu. Esperto este Visual Basic não? Não esqueça! Não é só valor vazio que não pode ser atribuído para uma variável numérica. Nenhum outro tipo de valor (letras, caracteres especiais) pode ser atribuído para uma variável numérica. Somente números. É ai que entra os testes das condicionais, porque antes de atribuir valor a uma variável você deve sempre verificar que valor é este que está sendo atribuído.

7.2 O DEBUG Em relação à janela do erro, ela sempre vai ser muito útil durante a programação. Ela pode nos ajudar a capturar a linha onde o erro aconteceu se você clicar no botão Debug. O Debug é acionado quando o compilador verifica a existência de erros dentro da aplicação. Ele é responsável por avaliar os erros dentro do programa. Só tome cuidado com o seguinte: Neste processo é verificado somente os erros de sintaxe, pois os erros de lógica que possam existir serão compilados normalmente. Nunca esqueça que a lógica da programação é responsabilidade do programador e não da ferramenta de desenvolvimento. Clique então no botão Debug e veja em qual linha o erro foi gerado. A linha onde contem o erro estará marcada com a cor amarela. Observe a demonstração a seguir: Se você posicionar o cursor do mouse sobre a cx. de texto (Txt1) irá aparecer (através de um Hint – pequena mensagem) o conteúdo dela. E repare que o conteúdo é vazio (duas aspas duplas sem espaço). Então o erro esta ai. Não podemos atribuir um valor vazio para uma variável numérica. O botão End na mensagem de erro simplesmente finaliza o aplicativo e o botão Help irá abrir o arquivo de ajuda para informar sobre o erro gerado (esta opção estará habilitada desde que você tenha o arquivo de ajuda do

Page 58: Apostila VB

Visual Basic instalado na sua máquina). Caso você não tenha o arquivo de ajuda instalado será exibida a seguinte mensagem: Importante esta ferramenta Debug, não é mesmo?

7.3 APLICANDO CONDICIONAIS Tudo explicado então? Ótimo! Vamos ver então o que podemos fazer para que isto possa ser tratado e não gere o erro que acabamos de ver. Aplicaremos as seguintes condicionais:

� Se o conteúdo das caixas de texto for vazio então,exibiremos uma mensagem informando que para efetuar o calculo deverá ser preenchida as caixas de texto.

Depois de testar se o conteúdo é vazio, precisamos testar se o valor que o usuário informou é numérico. Sim porque se ele colocar uma letra ou outro caractere que não seja numérico nas caixas de texto, também vai gerar erro. A outro condicional deverá testar o seguinte:

� Se o conteúdo informado não for numérico então, exibiremos uma mensagem informando que para efetuar o cálculo o conteúdo das caixas de texto deverão ser numérico. Para esta condição usaremos uma outra função do Visual Basic chamada IsNumeric. Esta função testa se o resultado de uma expressão é numérico.

Depois de testar estas duas condicionais podemos fazer a atribuição de valores as variáveis e em seguida o cálculo. Vamos Programar então?

Acesse o evento Click do botão soma e deixe as linhas de programação existentes como linha de comentário (‘ – ao lado esquerdo das linhas de programação) e atualize com as linhas de codificação conforme é mostrado a seguir (em negrito):

Page 59: Apostila VB

Private Sub CmdSoma_Click() If TXt1.Text = "" Or Txt2.Text = "" Then MsgBox "Para efetuar o cálculo da soma informe os valores." _ , vbInformation, "Atenção." Exit Sub ElseIf Not IsNumeric(TXt1.Text) Or Not IsNumeric(Txt2.Text) Then MsgBox "Para efetuar a soma informe somente valores numéricos." _ , vbInformation, "Atenção." Exit Sub Else Vlr1 = TXt1.Text vlr2 = Txt2.Text Result = Vlr1 + vlr2 Lbl1.Caption = Result End If End Sub Bom! Aqui tem coisa nova não é mesmo? Vamos a explicação então...

1. A primeira condição (IF) verifica Se o conteúdo da TXt1 OU da Txt2 é vazio. Caso a condicional seja verdadeira Então é exibida uma mensagem.

Repare que a função MsgBox está codificada em duas linhas. Isto foi possível utilizando o caractere underline ( _ ) após a primeira parte da sintaxe da função. Observe na linha de programação. Depois da mensagem utilizamos o comando Exit Sub. O comando Exit Sub força a saída do procedimento (Private Sub), ou seja, o Visual Basic transfere o controle do programa para a linha seguinte a aquela que chamou a rotina. Com o uso do Exit Sub o programa na executará as outras linhas de codificação deste objeto até que esta condicional seja falsa. 2. A segunda condicional (ElseIf) verifica o conteúdo informado nas

caixas de texto. Caso não seja numérico o conteúdo informado na Txt1 OU na Txt2 Então é exibida uma outra mensagem seguida pelo comando Exit Sub.

3. Se as condições do IF e do ELSEIF forem FALSAS então será executado o ELSE, onde é atribuído o valor as variáveis, efetuado o calculo e apresentado o resultado no objeto.

Execute então o seu aplicativo e faça os testes. E não esqueça de salvar o seu programa. A programação dos outros botões de operações matemática seguem praticamente a mesma lógica do botão Somar. Somente o botão da divisão terá uma condição a mais. Você sabe o porque?

Page 60: Apostila VB

Bem! Se você tentar efetuar uma divisão por 0 (zero) o programa irá retornar um erro, pois não existe divisão por 0 (zero). O que teremos que fazer então é testar o valor da segunda cx. de texto na operação divisão.

Então faça o seguinte: Programe os botões Subtração ,

Multiplicação e Exponenciação e observe a programação do botão

Divisão a seguir (em negrito): Private Sub CmdDivi_Click() If TXt1.Text = "" Or Txt2.Text = "" Then MsgBox "Para efetuar o cálculo da divisão informe os valores." _ , vbInformation, "Atenção." Exit Sub ElseIf Not IsNumeric(TXt1.Text) Or Not IsNumeric(Txt2.Text) Then MsgBox "Para efetuar o cálculo da divisão informe somente valores numéricos." _ , vbInformation, "Atenção." Exit Sub ElseIf Val(Txt2.Text) = 0 Then MsgBox "a divisão não pode ser efetuada, pois não existe divisão por 0 (zero)." _ , vbInformation, "Atenção." Exit Sub Else Vlr1 = TXt1.Text vlr2 = Txt2.Text Result = Vlr1 / vlr2 Lbl1.Caption = Result End If End Sub Observe o segundo ElseIf. Esta é a outra condicional que atualizamos para o botão Divisão. Execute o programa e faça os testes.

Mensagem de erro ao tentar executar uma operação de divisão por 0 (zero).

Page 61: Apostila VB

A seguir será exibida a codificação do botão Raiz Quadrada . Neste botão teremos uma nova condicional também. Para poder efetuar este calculo não poderá ser informado valores negativos, pois senão o programa retornará um erro informando que a chamada do procedimento, ou o argumento é inválido. Observe a janela deste erro a seguir: Atualize então a codificação do botão Raiz Quadrada conforme o exemplo exibido a seguir (em negrito): Private Sub CmdRaiz_Click() If Txt3.Text = "" Then MsgBox "Para efetuar o cálculo da raiz quadrada informe um valor." _ , vbInformation, "Atenção." Exit Sub ElseIf Not IsNumeric(Txt3.Text) Then MsgBox "Para efetuar o cálculo da raiz quadrada informe somente valor numérico." _ , vbInformation, "Atenção." Exit Sub ElseIf Val(Txt3.Text) < 0 Then MsgBox "O cálculo não poderá ser efetuado pois foi informado um valor negativo." _ , vbInformation, "Atenção." Exit Sub Else Lbl2.Caption = Sqr(Txt3.Text) End If End Sub Muito bem execute novamente o seu aplicativo e faça os teste relativos às novas programações. Tudo funcionando? OK! Se ainda existe alguma dúvida, não hesite em perguntar e esclareça suas incertezas.

7.4 ESTRUTURAS IF ENCADEADAS Nestes exemplos de condicionais que acabamos de programar (dos operadores matemáticos), estamos testando sempre as duas caixas de texto

Page 62: Apostila VB

juntas, ou seja, não podemos interceptar em qual caixa de texto existe o erro (valor vazio ou não numérico). Se na Txt1 ou na Txt2. Para interromper o erro no exato momento em que ele acontece, temos que executar uma condição para cada caixa de texto, gerando assim, uma estrutura condicional bem mais encadeada. Vamos ver então como podemos executar isto em nosso aplicativo das operações matemáticas.

Acesse o evento Click do botão divisão e deixe todas as linhas de programação existentes como linhas de comentário, e em seguida, insira a nova programação conforme é mostrado a seguir: Reparem que a lógica que usamos foi diferente da usada nos exemplos anteriores das condicionais dos operadores matemáticos. Mudamos o modo de comparação dos valores. Preste bastante atenção e veja as diferenças entre a estrutura condicional dos primeiros exemplos e deste exemplo agora.

Private Sub CmdDivi_Click() If TXt1.Text <> "" Then If Txt2.Text <> "" Then If IsNumeric(TXt1.Text) Then If IsNumeric(Txt2.Text) Then If Val(Txt2.Text) <> 0 Then Vlr1 = TXt1.Text vlr2 = Txt2.Text Result = Vlr1 / vlr2 Lbl1.Caption = Result Else MsgBox "Informe um número diferente de 0 (zero) na segunda caixa." _ , vbInformation, "Atenção." Exit Sub End If Else MsgBox "Informe somente valor numérico na segunda caixa." _ , vbInformation, "Atenção." Exit Sub End If Else MsgBox "Informe somente valor numérico na primeira caixa." _ , vbInformation, "Atenção." Exit Sub End If Else MsgBox "Para efetuar o cálculo da divisão informe o valor da segunda caixa." _ , vbInformation, "Atenção." Exit Sub End If Else MsgBox "Para efetuar o cálculo da divisão informe o valor da primeira caixa." _ , vbInformation, "Atenção." End If End Sub

Page 63: Apostila VB

Execute o seu aplicativo e faça os teste com esta nova programação. Depois dos testes, aplique este novo exemplo de condicionais para as outras operações matemáticas (Soma, Subtração, Multiplicação e Exponenciação). Não esqueça de ir salvando o seu projeto.

7.5 ENDENTAÇÃO Neste ultimo exemplo das condicionais, não sei se você reparou, existe algumas linhas ligando um If com seu ELSE e com seu END IF. Eu fiz este exemplo para falar de uma palavra não tão comum para nós chamada Endentação. Endentar, para nós programadores, nada mais é do que desenhar a nossa programação, principalmente nossas estruturas condicionais de decisão. O recuo das linhas à frente das instruções nos mostra a estrutura das condicionais mais clara para a visualização das mesmas. Se numa situação como a do exemplo da ultima condicional, nós deixarmos todas as linhas uma abaixo da outra, isto pode nos trazer um pouco de dor de cabeça, pois se acontecer algum erro durante a compilação, dentro da estrutura não endentada, ficará difícil saber onde esta o erro, pois não podemos distinguir qual ENDIF é de qual IF, qual ELSEIF é de qual IF, qual ELSE é de qual IF, e assim por diante. Nossa que confusão... Observe os exemplos a seguir: Primeiro vou apresentar um pedaço de linhas de codificação não-endentado. Olha só! If TXt1.Text <> "" Then If Txt2.Text <> "" Then Vlr1 = TXt1.Text Vlr2 = Txt2.Text Result = Vlr1 + Vlr2 Lbl1.Caption = Vlr1 + Vlr2 Else MsgBox "Insira valor na caixa 2", vbInformation, "Aviso." Exit Sub End If Else MsgBox "Insira valor na caixa 1", vbInformation, "Aviso." End If Complicado não é mesmo? E põe complicado nisso... Repare a seguir o mesmo exemplo com endentação.

Page 64: Apostila VB

If TXt1.Text <> "" Then If Txt2.Text <> "" Then Vlr1 = TXt1.Text Vlr2 = Txt2.Text Result = Vlr1 + Vlr2 Lbl1.Caption = Vlr1 + Vlr2 Else MsgBox "Insira valor na caixa 2", vbInformation, "Aviso." Exit Sub End If Else MsgBox "Insira valor na caixa 1", vbInformation, "Aviso." End If Bem melhor para visualizar não é? Na condicional acima é difícil determinar quais instruções vão a cada instrução IF. Se endentarmos cada bloco lógico do código com alguns espaços o código torna-se mais legível e compreensível. No Visual Basic, quando você quiser endentar, basta você pressionar a tecla TAB que será criado automaticamente uma tabulação de 4 espaços. Se bem que esta quantidade de espaços pode ser alterada nas opções do Visual Basic. Esse conteúdo sobre estruturas condicionais é muito rico não é mesmo? Nós vamos ficando por aqui. Valeu mais uma vez e até o próximo capítulo... Fui....

Page 65: Apostila VB

apítulo 8 8.1 FUNÇÕES NO VISUAL BASIC

Através das funções utilizadas até aqui em nossos exemplos (MsgBox,

Val, Sqr, format, IsNumeric ,etc) constatamos a importância da utilização de funções no Visual Basic. Uma função é uma rotina pronta para executar determinadas ações.

O Visual Basic nos fornece diversos tipos de funções que nos auxiliam na programação em todos os aspectos. São funções que fazem cálculos, funções que exibem resultados, etc. Algumas funções precisam de um argumento para executar uma tarefa, outras funções retornam somente algum valor sem necessidade da aplicação de um argumento. A seguir veremos algumas dessas funções e com isto descobriremos o poder que elas exercem dentro da linguagem e qual a sua utilidade.

8.2 FUNÇÕES MATEMÁTICAS

� ABS : Retorna sempre um valor absoluto (positivo) de um numero

ou variável informado. MsgBox Abs (-45)

O valor retornado será 45 (positivo)

� ATN : Retorna o arco-tangente de um número. Msgbox Atn (Expressão Numérica)

� COS : Calcula o cosseno de um ângulo msgBox = Cos (expressão Numérica)

� FIX : Retorna a parte inteira de um número Se houver casas decimais, será ignorado. Não faz arredondamento

MsgBox Fix (167.57) O valor retornado será 167 MsgBox Fix (-167.57) O valor retornado será -167

� HEX : Retorna um valor hexadecimal de um número decimal. MsgBox Hex (Expressão Numérica)

� INT : Esta função retorna a parte inteira de um número, ignorando as casas decimais, quando houver. Não executa arredondamento para números positivos. Se o valor for um número negativo será incrementado em um.

MsgBox INT (175.77) O valor retornado será 175

C

Page 66: Apostila VB

MsgBox INT (-175.77) O valor retornado será 176

� LOG: Retorna o logaritmo natural de um número MsgBox Log (Expressão Numérica)

� RND: Retorna números aleatórios (randômicos) para um valor informado.

MsgBox Rnd (Expressão Numérica)

� SGN: Retorna 1 se o valor informado for maior que 0 (zero), -1 se for menor que 0 (zero) e 0 (zero) se for igual a 0 (zero).

MsgBox Sgn (Expressão Numérica)

� SIN: Retorna o seno de um ângulo. MsgBox Sin (Expressão Numérica)

� SQR: Retorna a raiz quadrada de um número. MsgBox Sqr (Expressão Numérica)

� TAN: Retorna a tangente de um ângulo. MsgBox Tan (Expressão Numérica)

Para executar o teste de algumas funções, faça o seguinte: Inicie um novo projeto no Visual Basic e formate o formulário e objetos conforme é exibido a seguir: FORMULÀRIO: Name: FrmFunções Caption: Exemplo de funções Matemáticas Desabilite os botões maximizar e minimizar Centralize o formulário LABEL: Name : Defina o nome como Lbl1 até Lbl5 BackColor : Cor Branca Caption : Deixe vazio o valor desta propriedade (menos para o Label informativo) TEXTBOX: Name : TxtValor Text : Deixe o valor desta propriedade vazio TabIndex : 0 COMMANDBUTTON: Name : Cmdexecutar Caption : &Executar

Page 67: Apostila VB

Neste aplicativo executaremos os exemplos das seguintes funções:

� Função ABS � Função FIX � Função INT � Função RND � Função SGN

Acesse o evento Click do botão de comando Executar e codifique conforme a programação a seguir: Para testar as funções terá que ser informado um valor na caixa de texto (TxtValor). Para isso foi implementada uma condicional onde testamos se o valor da cx. de texto é diferente de vazio (<> “”) e se o valor é numérico. (IsNumeric). Em seguida codificamos as funções, porem repare que utilizamos o caractere & (e comercial) para concatenar os dois valores que serão

Page 68: Apostila VB

atribuídos aos objetos Label e não o caractere + (mais), que utilizamos nos exercícios anteriores de concatenação. Sabe o porque? Se usarmos o caractere + (mais) juntamente com uma String: “Função ABS: “ e um valor matemático (numérico) Abs(TxtValor) o programa retornará um erro de combinação de valores (Type Mismatch). Você até pode usar o caractere + para a concatenação, porem, terá que utilizar também uma função chama STR. Este função transforma o valor numérico para um valor texto (String). Observe a utilização da função Str. na codificação a seguir: Execute o seu aplicativo e faça os testes para a verificação da utilização das funções e não esqueça de salvar o seu projeto para futuras consultas sobre a utilização das funções matemáticas.

8.3 FUNÇÕES DE CONVERSÃO DE VALORES

� CBOOL: Converte uma expressão para uma variável Booleana (valor lógico - True ou False). Se o argumento for 0 (zero), retornará False, caso contrário True.

MsgBox CBool (Expressão) MsgBox CBool (10) Retornará o valor lógico True MsgBox CBool (0) Retornará o valor lógico False Msgbox CBool (7 =5) Retornará valor lógico False, pois o resultado da comparação não

é verdadeira.

� CBYTE: Converte uma expressão para um tipo Byte. MsgBox CByte (Expressão)

Page 69: Apostila VB

MsgBox CByte (176.51) O valor retornado será : 177

Se o valor for maior que 255 será retornado um erro (OverFlow) pelo programa, pois expressões do tipo Byte não podem ser maior que 255.

� CCUR: Converte uma expressão numérica para o tipo Currency

(moeda). MsgBox CCur (Expressão Numérica) MsgBox CCur (127.35) O valor retornado será: 127,35

� CDATE: Converte uma expressão para um tipo Data (Data Válida). Esta conversão será válida desde que a expressão usada como argumento seja mesmo no formato de uma data, ou seja, dd/mm/yy (dia/mês/Ano). Se tentar retornar um valor String (“Valor”), será gerado um erro de tipo incompatível de dados.

MsgBox CDate (Expressão) MsgBox CDate (“18/03/85”) Retornará a data válida 18/03/1985 MsgBox CDate (“180385”) Retornará uma data inválida pois não foi formatado com valor

válido para datas.

Se você tentar converter um valor de data do tipo 30/02/85 o programa retornará um erro, pois o valor trata-se de uma data inexistente.Uma coisa tem que ficar bem clara: Essa conversão é necessária principalmente quando for informada uma data e esta data vai ser objeto de cálculo, pois não podemos efetuar cálculos entre datas com os valores em formato String.

� CDBL: Converte uma expressão numérica em um número de ponto flutuante de precisão dupla.

MsgBox CDbl (Expressão Numérica)

� CINT: Converte uma expressão numérica em um valor do tipo número inteiroe eftua o arredondamento.

MsgBox CInt (Expressão Numérica) MsgBox CInt (67.40) O valor retornado será 67 MsgBox CInt (67.65) O valor retornado será 68

Page 70: Apostila VB

� CLNG: Converte uma expressão numérica em um valor do tipo

número inteiro longo. MsgBox CLng (Expressão) A diferença entre esta função e a função CInt é a abrangência de

números que a variável suporta. � CSNG: Converte uma expressão numérica em um tipo de número

de ponto flutuante de precisão simples. MsgBox CSng (Expressão)

� CSTR: Converte uma expressão numérica em um valor do tipo String (texto).

MsgBox CStr (Expressão) MsgBox Cstr (123) Retornará o valor 123 em formato do tipo String (Texto).

� CVAR: Converte uma expressão de qualquer tipo para o tipo variante.

MsgBox CVar (Expressão)

� STR: Converte um valor numérico para o tipo String (texto). Esta função é válida somente para argumentos numéricos.

MsgBox Str (Expressão Numérica) Msgbox Str (123) Retornará o valor 123 em formato do tipo String.

� ASC: Retorna o código ANSI do primeiro caractere de uma String.

MsgBox Asc (Valor String) MsgBox Asc("A") O valor retornado será: 65, pois este valor é o número

correspondente na tabela ASCII da letra A.

� CHR: Função inversa a função ASC, ou seja, retorna o caractere correspondente ao código na tabela ASCII.

MsgBox Chr (Código Caractere) MsgBox Chr (65) O valor retornado será A.

� VAL: Esta função já é bem conhecida nossa. Ela converte um valor String com caracteres numéricos em uma variável do tipo numérica.

MsgBox Val (Valor String Numérico) MsgBox Var (010) Retornará o valor 10

Page 71: Apostila VB

� LCASE: Converte as letras maiúsculas para letras minúsculas.

MsgBox LCase(“OLÁ”) Retornará o valor olá.

� UCASE: converte as letras minúsculas para letras maiúsculas. MsgBox UCase(“olá”) Retornará o valor OLÁ

8.4 FUNÇÕES STRINGS

� MID: Retorna parte do conteúdo de um valor String. MsgBox Mid("Exemplo Funções do Vb", 9, 13) O valor retornado será “Funções do Vb”

� TRIM: Retira os espaços em branco tanto à esquerda quanto à direita de um valor.

MsgBox Trim (Valor)

� LTRIM: Retira os espaços em branco à esquerda de um valor. MsgBox LTrim (Valor)

� RTRIM: Retira os espaços em branco à direita de um valor. MsgBox RTrim (Valor)

� FORMAT: Retorna uma expressão devidamente formatada. Por

exemplo: vamos supor que você queira retornar um valor moeda e exibi-lo no aplicativo. Você irá usar a função format da seguinte maneira:

Dim Valor As Currency Valor = 1000 MsgBox Format(Valor, "R$ ##,##0.00") O valor retornado será R$ 1,000,00 O caractere # nesta formatação representa valor numérico. Podemos utilizar a função format também para formatar uma data. Observe o exemplo: Dim Valor As Date Valor = "18/3/85" MsgBox Format(Valor, "dd/mmm/yyyy") O valor retornado será 18/Mar/1985 � LEFT: Retorna “n” caracteres a partir da esquerda de um valor

informado.

Page 72: Apostila VB

MsgBox Left(Valor,n Caracteres) Dim Valor As String Valor = "Técnico em Informática" MsgBox Left(Valor, 7) O valor retornado será “Técnico”

� RIGHT: Retorna “n” caracteres a partir da direita de um valor informado.

MsgBox Right(Valor,n Caracteres) Dim Valor As String Valor = "Técnico em Informática" MsgBox Right(Valor, 11) O valor retornado será “Informática”

� LEN: Retorna o número de caracteres de uma expressão String ou número de bytes requerido para armazenar uma variável.

MsgBox Len (Expressão de Caractere) MsgBox Len("Técnico em Informática") Valor retornado: 22

8.5 FUNÇÕES PARA TRATAMENTO DE DATA E HORA

� DATE: Retorna a Data do Sistema Operacional. MsgBox Date Retornará a data que está configurada no sistema Operacional.

� ISDATE: Retorna um valor Verdadeiro (True) ou Falso (False) caso a expressão seja uma data válida.

MsgBox IsDate("31/3/85") Retornará um valor verdadeiro, pois a data informada é válida. MsgBox IsDate("32/3/85") Retornará um valor Falso, pois não existe a data informada.

� DATEADD: Soma um número a uma determinada data. Esta

função é ideal para cálculos de datas de vencimentos. MsgBox DateAdd(“Intervalo”, “ Número de incremento”, “Expressão de Data”)

Intervalo é a Expressão de seqüência de caracteres que é o

intervalo de tempo que você quer adicionar.

TIPOS DE CARACTERES yyyy Ano

q Trimestre m Mês

Page 73: Apostila VB

y Dia do Ano d Dia w Dia da Semana

ww Semana h Hora n Minuto s Segundo

Número de Incremento é uma expressão numérica que contem

o número a ser adicionado na data informada. Este número pode ser positivo (para obter soma de datas) ou negativo (para obter subtração entre datas).

Expressão de Data é a data que está sendo adicionada. MsgBox DateAdd("d", 10, "18/03/85") Retornará o valor 28/03/1985. Neste exemplo foi pedido para adicionar 10 dias (d) na data

informada (18/03/85). Muito bom não é mesmo? Vamos testar isto na prática... Inicie um novo projeto e formate seu formulário conforme a seguir: Formulário Name: FrmDateAdd Caption: Função DateAdd TextBox Name: Txt1 e Txt2 Text: Limpar o conteúdo da propriedade Label Name: Lbl1 BackColor: Branco Caption: Limpar o conteúdo da propriedade CommandButton Name: CmdCalcular Caption: &Calcular Monte os objetos no seu formulário conforme o exemplo da figura a

seguir: No evento Click do botão Calcular insira a programação a seguir:

Para testar este aplicativo você terá

que: 1. informar uma

data válida na data da compra.

2. Informar os dias de prazo para pagamento.

Page 74: Apostila VB

Foram declaradas duas variáveis: Uma para armazenar a data da compra (DataCompra) e outra para

armazenar os dias de prazo (DiasPrazo). Antes da atribuição de valores às variáveis foi efetuado o teste – através de uma condicional IF – das caixas de texto para verificação do conteúdo informada. Para verificação da data utilizamos a função IsDate que verifica se a data informada é uma data válida. Na mesma condicional foi testado também o conteúdo dos dias de prazo, pois deverá haver um valor e este valor deverá ser numérico (IsNumeric).

Depois destas verificações atribuímos ao objeto Label (Lbl1) os valores informados as variáveis. Foi utilizado o intervalo d, que representa à função DateAdd uma quantidade de dias a ser adicionado ou subtraído.

Muito bem! Execute o seu programa e faça os testes necessários para verificar o funcionamento dele. Não esqueça de salvar o seu projeto.

� DATEDIFF: Calcula o intervalo de dias entre duas datas. Ideal

para calcular, por exemplo, o número de dias de atraso de uma conta vencida.

Msgbox DateDiff(“Intervalo”, Data1, Data2) Intervalo é a expressão de seqüência de caracteres, que é o

intervalo de tempo que será usado para calcular a diferença entre a data inicial e a data final. O argumento intervalo tem as mesmas configurações da função DateAdd.

Dim DataInicial As Date Dim DataFinal As Date DataInicial = "18/03/03" DataFinal = "31/03/03" MsgBox DateDiff("d", DataInicial, DataFinal) Retornará o valor 13 que é a diferença entre a data inicial e a data

final. Vamos fazer um exemplo prático para isso... Inicie um novo projeto e formate conforme é mostrado a seguir: Formulário Name: FrmDateDiff Caption: Exemplo Função DateDiff

Page 75: Apostila VB

TextBox Name: Txt1 e Txt2 Text: Limpar o conteúdo da propriedade Label Name: Lbl1 BackColor: Branco Caption: Limpar o conteúdo da propriedade CommandButton Name: CmdProcessar Caption: &Processar Configure o seu formulário conforme o exemplo da figura a seguir: Insira a codificação a seguir no evento Click do botão Processar: Para fazer o teste da função DateDiff foram declaradas duas variáveis.

Em seguida está sendo testado o conteúdo das caixas de texto (Txt1 e Txt2), através de uma condicional IF. O teste é realizado utilizando a função IsDate, pois somente poderá ser efetuado o calculo entre datas se for informado datas válidas. Depois da condicional são atribuídos valores às variáveis e em seguida atribuído o valor do calculo (função DateDiff) ao objeto Label (Lbl1).

Execute o aplicativo e veja o funcionamento do mesmo. Salve o seu projeto.

Para testar o aplicativo,

faça o seguinte:

1. Informe a Data Inicial.

2. Informe a Data Final.

Page 76: Apostila VB

� DATEPART: Retorna parte de uma determinada data, relativo a dia, mês, semana, quinzena, etc.

MsgBox DatePart(“intervalo”, Expressão de Data) O argumento intervalo tem as mesmas configurações das

funções vistas anteriormente (DateAdd e DateDiff). Dim Data As Date Data = "18/03/85" MsgBox DatePart("w", Data) O valor retornado será 2., pois o dia 18/03/85 caiu numa segunda-

feira. O valor 2 é o número correspondente da segunda-feira em uma escala de 1 para o Domingo até 7 para o Sábado.

� DATEVALUE: Retorna uma data especificada como string para uma data válida do tipo date.

MsgBox DateValue(<Valor String de Data>) MsgBox DateValue("18/03/85") Retornará o valor: 18/03/1985 (com valor do tipo Date)

� DAY: Retorna o dia de uma data. MsgBox Day(Valor da Data) MsgBox Day(“18/03/85”) Retornará o valor 18.

� HOUR: Retorna a hora de uma expressão Data Hora. MsgBox Hour(Valor Hora) MsgBox Hour("15:35:30") Retornará o valor 15.

� MINUTE: Retorna o minuto de expressão Data e Hora. MsgBox Minute(Valor Hora) MsgBox Minute("15:35:30") Retornará o valor 35.

� MONTH: Retorna o número do mês de uma data. MsgBox Month(Valor Data) MsgBox Month("18/03/85") Retornará o valor 3.

� NOW: Retorna a data e a hora do Sistema Operacional. MsgBox Now

Retornará o valor conforme a figura da mensagem ao lado, pois era esta a data e a hora do Sistema quando foi efetuado este

teste:

Page 77: Apostila VB

� SECOND: Retorna os segundos de uma expressão Data e Hora. MsgBox Second(Valor Hora) MsgBox Second("15:35:30") Retornará o valor 30.

� TIME: Retorna a hora do Sistema Operacional. MsgBox Time

Retornará o valor conforme a figura a seguir:

� TIMEVALUE: Retorna a hora definida como string para um valor de hora válida do tipo Data Hora.

MsgBox TimeValue(Valor String de Hora) MsgBox TimeValue("17:25:32") Retornará o valor: 17:25:32 (com valor do tipo Data Hora)

� WEEKDAY: Retorna um número correspondente ao dia da semana em uma escala de: 1 para Domingo até 7 para Sábado.

MsgBox WeekDay(Valor Data) MsgBox Weekday(Date) Retornará o dia da semana relative a data do Sistema

Operacional.

� WEEKDAYNAME: Retorna o nome do dia da semana. MsgBox WeekdayName(“dia da semana”,True ou False)

Repare que foi usado a função WeekDay juntamente com a função Date para retornar o dia da semana da data do Sistema Operacional.

Exemplo Valor True MsgBox WeekdayName(Weekday(Date), True) _ , vbInformation, "Função WeekdayName - TRUE"

Exemplo Valor False MsgBox WeekdayName(Weekday(Date), False) _ , vbInformation, "Função WeekdayName - FALSE"

Page 78: Apostila VB

� YEAR: Retorna o ano de uma data.

MsgBox Year(Valor Data) MsgBox Year(“18/03/85”) Retornará o valor 1985. Bom pessoal! Com o conhecimento de todas essas funções poderemos programar

muita coisa no Visual Basic. Resta apenas buscar utilidade para elas dentro do desenvolvimento de um aplicativo.

Ficaremos por aqui então. Até Breve!!!

Page 79: Apostila VB

apítulo 9 9.1 LAÇOS DE REPETIÇÃO (LOOPINGS)

Falaremos agora de uma rotina super importante dentro de uma linguagem de programação. São os Loopings, também conhecidos como Laços de Repetição. Determinadas situações no desenvolvimento de um aplicativo requer que seja repetido um pedaço do programa um determinado número de vezes, e os Loopings estão ai justamente para nos ajudar nesta tarefa. A finalidade de usar os laços de repetição, alem da sua força no que se diz respeito ao processamento do aplicativo, é deixar os programas com um tamanho reduzido em relação à quantidade de linhas de programação. Imagine se não houvesse os Loopings. A repetição de um determinado trecho do programa teria que ser escrito tantas vezes fosse necessário para executar a rotina de repetição. Isso dá um trabalho que você nem imagina. Com a opção dos Laços de Repetição podemos determinar repetições de uma rotina com números variados de vezes, desde Loopings que sabemos quando acaba até Loopings indefinidos (são os Laços de Repetição que não sabemos quantos vezes os mesmos serão executados). Podemos dizer que um Loopig é uma estrutura condicional que se repete até a que uma determinada condição seja satisfeita. Bem! Ta achando meio complicado este assunto? Na realidade isto na prática á mais fácil do que na teoria. Então vamos testar alguns tipos de Loopings que o Visual Basic nos proporciona.

9.2 O LAÇO - DO WHILE / LOOP Esse tipo de Looping executa todos os comandos que existem entre DO WHILE (Faça Enquanto) e o LOOP (Laço). Quando a execução do programa encontra o comando LOOP, o DO WHILE é reavaliado e a rotina continua até que a condição estabelecida esteja satisfeita, ou seja, até que a mesma seja verdadeira. Do While <Condição> <Instruções enquanto a condição for verdadeira> [Exit Do] Loop Para demonstrar a utilização deste laço de repetição, vamos criar um novo projeto no Visual Basic e desenvolver um aplicativo utilizando o Do While / Loop. Formate então o seu formulário e os objetos conforme as informações das propriedades a seguir:

C

Page 80: Apostila VB

Formulário: Name: FrmLaço Caption: Laços de repetição Desabilite os botão Maximizar e Minimizar Centralize o formulário Label: Label informativo com o Caption: Digite um valor para efetuar a operação. TextBox: Name Txt1 Text: Limpe o conteúdo da propriedade TabIndex: 0 CommandButton: Name: CmdOk Caption: &Ok TabIndex = 1 Se você quiser inserir uma figura no botão, faça o seguinte: Defina a propriedade Style como: 1 – Graphical Selecione a propriedade Picture e clique no botão para inserir uma figura para o botão. Cuidado para não inserir uma figura grande senão você terá que redimensionar o botão, e conseqüentemente, ele ficará grande também. ListBox: Name: Lst1 Este objeto será utilizado para exibir um conjunto (Lista) de valores. Observe a aparência do formulário.

Page 81: Apostila VB

Bem! A finalidade deste aplicativo é ler o valor de uma tabuada. Uma variável será definida para ser utilizada como contador e terá o valor inicial de 1. Será criada uma condição dentro de um laço de repetição para ser executada enquanto o valor da variável (contador) for menor ou igual a 10. No evento Click do botão Ok insira as linhas de codificação a seguir: Com a aplicação deste Laço de Repetição, o programa irá executar o Looping (Do while / Loop) enquanto a condição for verdadeira. Com a utilização da instrução EXIT DO, (observe a sintaxe), podemos suspender a execução do Laço de Repetição, ou seja, antes de efetuar o Loop, o Laço é cancelado. A instrução Exit Do é opcional neste tipo de Looping. Vamos ver então como funciona o laço de repetição Do While / Loop nesta programação:

1. Foram definidas 3 variáveis do tipo Integer. A variável VlrCx será utilizada para armazenar o valor informado na caixa de texto. A variável Contador será utilizada para ser o prórpio contador do nosso laço de repetição, e a variável Resultado, será utilizada para armazenar o valor informado na caixa de texto multiplicando com o valor atual da variável Contador.

2. Utilizamos o método Clear no objeto ListBox para efetuar a limpeza do objeto. Desta maneira, todo novo calculo de uma tabuada será realizado em uma ListBox limpa (sem nenhum valor).

3. Aplicamos a condicional (If) para verificar se existe algum valor informado na caixa de texto e se o valor é numérico.

4. Atribuímos o valor da caixa de texto (TXt1) á variável VlrCx.

Page 82: Apostila VB

5. Atribuímos o valor inicial 1 à variável Contador, pois o calculo de uma tabuada começa sempre pelo valor 1.

6. Iniciamos o Laço de Repetição Do While (Faça enquanto) com a condição de que a variável Contador deverá ser executada enquanto o valor dela for Menor ou Igual a 10. (Então esta é a nossa condição ao Laço de Repetição).

7. A variável Resultado vai receber o valor da caixa de texto multiplicado pelo valor atual da variável Contador.

8. O primeiro valor do calculo (armazenado na variável Resultado) da tabuada é adicionado ao objeto ListBox através do método AddItem.

9. A próxima linha de programação é a atribuição de valor de + 1 à variável Contador. O valor inicial desta variável era 1. Depois que é feito o calculo da tabuada com o valor 1 naturalmente terá que ser efetuado também com o valor 2 e assim consecutivamente até o valor 10. (que é a nossa condição - <=10).

10. O programa chega até a linha onde contem o Loop. A rotina é retornada até o laço Do While e testa novamente a condição. Se for Verdadeira será executado todo processo novamente até que ela seja Falsa. A partir do momento que a condição não seja mais Verdadeira é quebrado o Laço de Repetição.

Execute o seu aplicativo e veja o funcionamento do Laço de Repetição Do While / Loop. Repare como isto é super útil dentro da programação. Salve o seu programa e não esqueça: Se tiver dúvidas, PERGUNTE. Este nosso formulário pode dar uma melhorada em relação à apresentação do resultado certo? Qual tal algo assim: 7 X 1 = 7 7 X 2 = 14 E assim por diante...

O formulário com o teste da tabuada do 7

Page 83: Apostila VB

Para isso teremos que fazer uma pequena alteração em nosso código de programação. Mas fique tranqüilo que não é nada difícil, OK Teremos que fazer uma alteração no momento em que adicionamos o valor da variável Resultado ao objeto ListBox através do método AddItem. Vamos programar então? Na programação existente no exercício anterior, altere a linha em destaque conforme é mostrado na figura a seguir: Repare que a alteração efetuada está fazendo uso da concatenação (junção) para simular o estilo próprio de uma tabuada. Foi utilizada também a função Str, para transformar o conteúdo das variáveis numéricas (VlrCx, Contador e Resultado) para valor do tipo String, pois o objeto ListBox, através do seu método AddItem, aceita somente valores do tipo String. Execute o seu aplicativo e faça o teste. A aparência do seu formulário deverá ficar conforme é exibido na figura a seguir: Salve o seu projeto.

Page 84: Apostila VB

9.3 O LAÇO - WHILE / WEND O Laço de Repetição do tipo While / Wend tem suas funções controladas também através de uma condição. É semelhante à estrutura Do while / Loop, porem a instrução Exit Do não pode ser utilizada neste tipo de Looping. While <Condição> <Instruções enquanto a condição for verdadeira> Wend Inicie um novo aplicativo com as mesmas configurações dos objetos do exemplo anterior para executarmos os testes com o Laço de Repetição While / Wend. A lógica de programação utilizada é a mesma do exercício anterior, porem neste caso, não podemos utilizar a instrução Exit Do. Execute o programa e faça os testes. Você verá que o resultado será o mesmo do exercício feito com a utilização do Laço Do While / Loop. Não esqueça de salvar seus exercícios de exemplo, pois terão grande utilidade para você executar laços de repetição em seus futuros projetos.

Exercício executado e

testado com a utilização do

Laço de Repetição

While / Wend

Page 85: Apostila VB

9.4 O LAÇO - DO / LOOP WHILE Neste Laço de Repetição o Comando Do abre a seqüência de repetição, mas não faz nenhum teste de condição. Este teste é feito no final da estrutura com o comando LOOP WHILE, ou seja, obrigatoriamente as instruções contidas após o comando DO serão executadas. Do <Instruções enquanto a condição for verdadeira> [Exit Do] Loop While <Condição> Para os testes deste Laço, inicie um novo aplicativo e considere o exemplo do programa da tabuada. Formate os objetos e Salve o seu aplicativo. No evento Click do botão Ok codifique as linhas de programação a seguir: A instrução Exit Do também é opcional neste tipo de Looping. Execute o seu aplicativo e execute os testes.

9.5 O LAÇO - DO UNTIL / LOOP Aqui neste Laço de Repetição são executados todos os comandos que existem entre DO UNTIL e o LOOP. Quando a execução do programa encontra o comando LOOP, o DO UNTIL é reavaliado e a rotina continua até que a condição estabelecida esteja satisfeita – Faça até que. Observe: Do Until <Condição> <Instruções enquanto a condição for verdadeira> [Exit Do] Loop

Page 86: Apostila VB

Para testar este Laço, inicie um novo projeto e formate o formulário e os objetos conforme os exemplos criados até aqui. Vamos considerar o exemplo do programa da tabuada. Salve o seu projeto o programe o botão Ok conforme as linhas de codificação a seguir: Observe que o programa executará um Looping até que a condição (contador > 10) se torne verdadeira. Você pode interromper este Looping também com a Instrução Exit Do, porem a mesma não é obrigatória. Aqui a condição é verificada antes de ser executado o Looping (Loop). Repare que neste tipo de Laço, a condição está invertida em relação ao Looping Do While / Loop. Interessante não é mesmo? Salve o seu programa.

9.6 O LAÇO - DO / LOOP UNTIL O Laço de Repetição Do / Loop Until funciona da seguinte maneira: O Comando DO abre a seqüência de repetição, mas não faz nenhum teste de condição. Este teste é feito no final da estrutura com o comando LOOP UNTIL (Repita até que) , ou seja, será necessário que as instruções contidas após o comando DO sejam executadas. Do <Instruções enquanto a condição for verdadeira> [Exit Do] Loop Until <Condição> Vamos utilizar o mesmo programa da tabuada para executar os testes deste Laço de Repetição. Formate seu formulário e objetos – de um novo projeto – e salve o seu programa. Codifique o botão Ok conforme a seguir:

Page 87: Apostila VB

Aqui o programa estará executando um Looping até que a situação da condição se torne verdadeira. Neste caso o Looping também poderá ser interrompido através da instrução Exit Do.

9.7 O LAÇO - FOR / NEXT Neste Laço o comando FOR faz uma contagem de um determinado intervalo de números. Toda vez que esta contagem se defronta com o comando NEXT (próximo) a execução do programa retorna ao comando FOR até que o número final informado seja alcançado. Exemplo: For <Valor> = <Valor Inicial> To <Valor Final> [Step <Passo>] <Instrução> [Exit For] Next <Valor> Usamos a instrução STEP simultaneamente com o comando FOR para fazer com que a contagem seja incrementada. Por exemplo: Se queremos que o comando conte de 2 em 2 deveremos informar da seguinte maneira: FOR Valor = 1 TO 10 STEP 2

A instrução Step é opcional. Se for omitida no Laço o contador será

acrescido de 1 em 1. Aqui o Exit For é igual ao Exit Do, ou seja, eles permitem interromper

um Looping.

Page 88: Apostila VB

Para demonstrar a utilização do Forn / Next inicie um novo projeto e considere as formatações do formulário e objetos do projeto de tabuada. Salve o seu projeto. A seguir será apresentada a codificação do botão Ok com o laço For / Next. Quando o programa for executado a instrução após a instrução For será executadas 10 vezes (1 To 10). A variável Contador já tem o seu valor inicial de 1 e será incrementada com valor mais 1 toda vez que o Instrução For, for processada. Você poderá utilizar este tipo de Laço de Repetição sempre que conhecer o valor inicial e o valor final de um valor (variável) do tipo contador. A instrução Step poderia ser omitida no exemplo acima, pois o nosso incremento é de um em um. Depois de todos estes exemplos estamos aptos e encarar qualquer tipo de rotina de Laços de Repetição dentro de nossos futuros projetos, não é mesmo? Ótimo! Então vamos então ficando por aqui. Até a próxima...

Page 89: Apostila VB

apítulo 10 10.1 MATRIZES

Voltando um pouco ao assunto sobre variáveis, precisamos falar um pouco a respeito uma maneira muito importante de se trabalhar com armazenamento de informações em variáveis. Existe uma técnica de programação que nos dá a possibilidade de trabalharmos com a reunião de várias informações dentro de uma mesma variável. Esta técnica chama-se Matriz. Mas preste atenção! Deve-se obedecer à regra de que os dados armazenados nesta variável terão que ser do mesmo tipo. As Matrizes, também conhecidas como: vetores, arrays, tabelas em memórias, etc são tipos de dados que podem ser definidos no momento em que se ache necessário. Podemos definir os nomes das matrizes seguindo as mesmas regras utilizadas na criação de variáveis simples. Acho que a coisa está ficando meio complicada não é mesmo? Bem! Fique calmo pois vamos partir para a parte prática, ou seja, vamos ver o funcionamento de uma Matriz utilizando esta técnica no desenvolvimento de um aplicativo. Analise a seguinte idéia: Preciso de um aplicativo onde eu possa controlar a média anual de um aluno informando as notas dos 4 bimestres do mesmo e dividindo as mesmas por 4. Então inicie um novo projeto e configure o seu formulário e objetos conforme as informações a seguir: Formulário: Name: FrmMatriz Caption: Exemplo de Matrizes Desabilitar os botões Maximizar e Minimizar Centralize o formulário Frame: Name: FraNotas Caption: Informe as notas bimestrais TextBox: Name: TxtB1 até TxtB4 Text: Apagar o conteúdo da propriedade Label: Name: LblMedia Alignment: 2 - Center Backcolor: Branco Caption: Apagar o conteúdo da propriedade CommandButton: Name: CmdCalcular Caption: &Calcular

C

Page 90: Apostila VB

Formate a ordem de tabulação dos objetos através da propriedade TabIndex. Observe como deverá ficar a aparência do seu formulário na figura a seguir: Primeiramente vamos fazer o exemplo com a utilização de variáveis simples, ou seja, vamos declarar as variáveis para armazenar as notas dos 4 bimestres e uma variável para armazenar o resultado da média anual. No evento Click do botão Calcular programe conforme a seguir: Ai está a codificação utilizando as variáveis normais. Foram declaradas 5 variáveis conforme visto anteriormente. Em seguida executamos as condicionais para verificação do conteúdo das caixas de texto – para verificação do conteúdo diferente de vazio e do conteúdo numérico. Após as condicionais fizemos a atribuição de valores as variáveis e logo em seguida o calculo relativo as notas bimestrais dividindo as mesmas por 4.

Page 91: Apostila VB

Acredito que depois de tantos exemplos exercitados sobre: Condicionais, variáveis, operadores e funções você não teria maiores dificuldades em obter o resultado de programação que acabamos de codificar, não é mesmo? Pois muito bem! A utilização da Matriz nos ajudará no que se diz respeito à utilização de variáveis Perceba no exercício que acabamos de fazer que para obter a média foram utilizadas 4 variáveis. Com esta nova técnica (Matrizes) poderemos utilizar apenas uma variável com a capacidade de armazenar os 4 valores que precisamos neste exercício. Não se espante! É isto mesmo que você acabou de ler. Bastará uma variável para o armazenamento das 4 notas bimestrais. Está ansioso para ver como isto funciona? Ok! Vamos lá então...

10.2 UTILIZANDO MATRIZES

A representação de uma matriz se dá da seguinte maneira:

1. pelo seu nome, 2. pelo seu tamanho (dimensão) 3. e pelo seu tipo

A sintaxe atribuída será a seguinte: Dim Nome[(Dimensão)] As <Tipo> As palavras reservadas Dim e As já são bem conhecidas pra você não é mesmo.? Na sintaxe acima a palavra Nome será relativa ao nome que representará a matriz. Dimensão se diz respeito ao tamanho da matriz, ou seja, o tamanho do numero de elementos que farão parte da matriz. O Tipo é o tipo de dados que será armazenado nos elementos definidos na matriz. O exemplo do exercício anterior poderia ser representado por uma matriz da seguinte forma: Nota(1) = 7 Nota(2) = 8 Nota(3) = 10 Nota(4) = 6 Repare que o nome da variável é um só, porem, o que muda, é o índice informado dentro dos parênteses. Vamos programar então? Utilizando o mesmo exercício que acabamos de fazer, vamos ver como ficaria a codificação para obtenção da média anual em relação às notas bimestrais.

Page 92: Apostila VB

Altere a sua programação existente no botão Calcular conforme mostrado a seguir: Repare a diferença nas declarações das variáveis. Definimos a variável Notas, que será a nossa matriz, e atribuímos a ela o índice 4. Este índice é relativo a quantidade de notas dos bimestres (4 bimestres). A próxima variável definida é a SomaNotas que dentro de um Laço de Repetição (For) será responsável por armazenar as notas bimestrais. A outra variável já existia no exemplo anterior (Media) a qual utilizamos para armazenar a média das notas bimestrais. Por ultimo temos a variável ContaNotas que foi utilizada para como contador em nosso Laço de Repetição. Depois das declarações das variáveis tem os testes das caixas de textos, como no outro exemplo anterior. No próximo passo a nossa matriz (Notas) entra em ação. Observe que os valores das caixas de texto são atribuídos à variável Notas através dos índices: 1, 2, 3, 4., ou seja variável com o mesmo nome porem com índices diferenciados. Depois das atribuições de valores foi implementado o Laço de Repetição For, o qual repete uma rotina 4 vezes (quantidade de notas bimestrais) para que a variável SomaNotas possa armazenar o total de notas dos bimestres. Sendo executado o Laço For, é armazenado o calculo das notas bimestrais na variável Media que em seguida é exibida no objeto Label (LblMedia). Execute o seu aplicativo e faça os testes. Você vai perceber que o resultado é o mesmo, porem, com a economia de algumas variáveis. Muito bom isto não é mesmo? Não esqueça de salvar o seu aplicativo.

Page 93: Apostila VB

10.3 FUNÇÕES EM MATRIZES Alem da utilização das matrizes nos exemplos que acabamos de

executar também temos as funções voltadas à manipulação de matrizes. A aplicação destas funções de matrizes retornam valores contidos nas mesmas. A seguir veremos estas funções e os exemplos de aplicação das mesmas.

� ARRAY: Esta função retorna um Elemento de uma lista de argumentos definida. O s tipos de dados destes argumentos terão que ser do tipo Variant.

MsgBox Array (Argumentos) Os Argumentos consistem em uma lista delimitada por vírgula de um

número arbitrário de valores que são atribuídos aos elementos da matriz contidos em um tipo de dados Variant. Se nenhum argumento for especificado, será criada uma matriz de comprimento zero.

O modo como são acessados os argumentos da função Array é o mesmo modo de como são acessados os valores de uma matriz. A notação usada para se referir a um elemento de uma matriz consiste no nome da variável seguido por parênteses que contêm um número do índice que indica o elemento desejado.

O limite inferior de uma matriz criada com a função Array é determinado pelo limite inferior especificado com a instrução Option Base.

Dim Dias as Variant Dim DiaSemana as String Dias = Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb") DiaSemana = Dias(5) Msgbox DiaSemana O valor retornado será: Sex Option Base 1 – Declaração definida em General - Declarations Msgbox DiaSemana O valor retornado será: Qui

� LBOUND: Retorna o menor índice dos argumentos de uma matriz.

MsgBox LBound(ValorMatriz) Dim DiaSemana As Variant DiaSemana = Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb") MsgBox LBound(DiaSemana) O valor retornado será 0 (Zero). Este é o valor de Dom na lista de

argumentos da função Array.

Page 94: Apostila VB

� UBOUND: Retorna o maior índice dos argumentos de uma matriz. MsgBox UBound(ValorMatriz) Dim DiaSemana As Variant DiaSemana = Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb") MsgBox UBound(DiaSemana) O valor retornado será 6 (Seis). Este é o valor de Sáb na lista de

argumentos da função Array. Depois de todo o aprendizado que tivemos e os exemplos desenvolvidos sobre os conteúdos vistos, creio que você esteja apto para aplicar tudo isto em cima do desenvolvimento de um projeto. OK? No próximo capitulo iniciaremos os estudos voltados diretamente aos objetos do Visual Basic, inclusive o desenvolvimento de um aplicativo voltado a Banco de Dados. Até lá então...

Page 95: Apostila VB

apítulo 11 11.1 BARRA DE MENUS

Podemos observar que em qualquer aplicativo, voltado ao Sistema Operacional Windows, sempre na janela principal do programa, está disponível uma Barra de Menus do tipo DropDown. A Barra de Menus, juntamente com os seus itens de Menu, nos fornece todas as opções que podemos executar dentro de um aplicativo, ou seja, todas as opções do aplicativo se encontram nos menus e nos seus sub-menus. Todas as Barras de Menus em seus aplicativos, para operar no Windows, seguem um padrão de desenvolvimento. As opções de Menus e sub-menus podem ser acessados com o mouse ou também através das teclas de atalho.

C

Barra de Menu do Microsoft

Word exibindo os

itens de Menu do

menu Exibir.

A figura a lado nos mostra a estrutura da

Barra de Menus do aplicativo

Word.

Por exemplo: Na barra de menu do Word, para acessar o menu

Arquivo através de teclas de atalho, usaríamos a combinação das teclas Alt + A e os itens do menu arquivo seriam exibidos. Porque Alt + A?

Repare que no menu arquivo a letra A está sublinhada informando que a

letra A é a tecla de atalho. Nos itens de menu a coisa funciona

um pouquinho diferente. Observe que dentro do menu

arquivo do Word existe o item de menu Abrir. O acesso a esta opção não se dá através da combinação de teclas de atalho Alt + A e sim,

somente, através do pressionamento da letra A.

Page 96: Apostila VB

Outro detalhe nas opções de menu são as Teclas de Atalho Rápido também conhecidas como ShortCut. Somente os itens de menu podem ter a opção de ShortCut. Nem todos os itens de menu possuem estas opções, pois teclas de atalho rápido são definidas somente para aquelas opções, geralmente, mais usadas pelo usuário.

Creio que depois de todas estas informações sobre a Barra de Menus você chegou à conclusão da importância de um menu bem estruturado dentro de um aplicativo, não é mesmo?

11.2 O EDITOR DE MENUS o Visual Basic, em seu ambiente de desenvolvimento, traz um utilitário bem legal para você criar, sem maiores dificuldades, as estruturas de seus menus, isso sem a necessidade da aplicação de nenhum tipo de programação. Para acessar a ferramenta do Editor de Menu do Visual Basic faça o seguinte:

No menu Arquivo do Word temos também a opção

Salvar nos seus itens de menu. Repare que ao lado

do item Salvar temos a combinação das teclas Ctrl + B. Esta é a tecla de atalho

rápido para esta opção. Mesmo sem o menu Arquivo

estar ativo, se você pressionar Ctrl + B você

estará acessando a opção deste item.

Selecione o menu Tools e em seguida clique no item Menu Editor..., ou simplesmente,

utilize a tecla de atalho rápido Ctrl + E.

Page 97: Apostila VB

Observe o Editor de Menu do Visual Basic na figura a seguir:

11.3 PROPRIEDADES DO EDITOR DE MENUS Para começarmos a configurar nossa primeira barra de menu no Visual Basic, precisamos primeiramente conhecer as principais propriedades do nosso Editor de Menus.

� Propriedade Caption : Nesta propriedade será definido o titulo do item que irá aparecer no menu. Será utilizado o caractere com o símbolo &(E-Comercial) à frente da letra que definiremos como tecla de atalho (Alt + Letra) e assim, desta maneira, o Visual Basic irá destacar a letra com um underline.

� Name : Esta propriedade será usada para definirmos o

identificador para o item. Nomeamos cada item de menu para podemos manipulá-los através de codificaçõa. Para menus a nomenclatura inicial será a abreviação “Mnu”.

O Editor de Menu do Visual Basic.

Page 98: Apostila VB

� Index : Permite criar uma matriz para identificar os itens do menu. Para que a matriz seja estabelecida, a propriedade Name deverá ser igual para os menus que irão compor a matriz.

� ShortCut : Lembra-se do ShortCut? Será determinada uma

combinação de tecla para que o menu seja acessado de forma mais rápida.

� WindowList : Se você selecionar esta propriedade, numa

aplicação com várias janelas MDI – nos próximos capítulos veremos o que é uma Janela Mdi - , o Visual Basic cria uma lista das janelas abertas no aplicativo, selecionando com um sinal de check (����)a janela ativa.

� Checked : Esta propriedade será utilizada quando queremos

mostrar para o usuário o estado marcado (����) ou Desmarcado (sem a marca Check) de algum item do menu.

� Enabled: Esta propriedade habilita (����) ou desabilita (sem a

marca Check) um item do menu. Se a propriedade estiver desmarcada para algum menu o Visual Basic exibirá o texto do da propriedade Caption com um tom acinzentado.

� Visible : esta propriedade nos Sá a possibilidade de deixar

Visível ou Invisível um Menu. Mesmo com um Menu definido, porem com a propriedade Visible não habilitada, este Menu estará agindo no programa.

Os botões de setas serão utilizados para o seguinte:

� O botão com a seta indicadora para Baixo e o botão com a

seta indicadora para Cima serão utilizados para movermos um item de lugar depois do mesmo ser criado.

� O botão com a seta indicadora para Direita converte o item selecionado em sub-menu do item imediatamente acima dele.

� O botão com seta indicadora para esquerda volta o item selecionado um nível.

� O botão Next é o botão padrão no Editor de Menu, ou seja, ele é acionado sempre que pressionarmos a tecla ENTER.

Page 99: Apostila VB

Ele passa para o próximo item de menu a ser digitado ou na seqüência.

� O botão Insert será utilizado para adicionar um item de menu entre os menus já criados.

� O botão Delete exclui o item de menu selecionado.

11.4 CRIANDO MENUS Depois de conhecer as propriedades de formatação que o Editor de Menus nos fornece, está na hora de ver como esta ferramenta funciona. Vamos criar uma barra de menu com seus itens, definir teclas de atalho e atalhos rápidos (ShortCut). Vamos pegar o seguinte exemplo: Temos um aplicativo a ser desenvolvido e deverá conter a seguinte Barra de Menu: Inicie um novo aplicativo e defina as propriedades Name e Caption do formulário. Para criar a Barra de Menus, inicie o Editor de Menus (Ctrl + E), e execute as formatações conforme exibido na figura a seguir:

Page 100: Apostila VB

Observe o & (E-Comercial) à frente do menu Arquivo (&Arquivo) na propriedade Caption. Este caractere é o responsável pela tecla de atalho, que deixará o A sublinhado. Defina um nome através da propriedade Name, iniciando com a nomenclatura Mnu. Para criar os próximos componentes da Barra de Menus, é só clicar no botão Next. Depois de criado a Barra de Menus, execute o seu aplicativo e veja o resultado. Ótimo não é mesmo? Muito Bem! Salve o seu aplicativo e vamos partir para o próximo passo. Criado os componentes da Barra de Menus resta criar os Itens de Menu. Cada Menu deverá conter os seguintes itens:

� Menu Arquivo:

� Menu Movimentação:

� Menu Financeiro:

� Menu Relatórios:

Page 101: Apostila VB

� Menu Sobre: Para criar os itens do Menu Arquivo faça o seguinte:

Selecione o Menu Movimentação e clique no botão Insert .

Em seguida clique no botão com a setinha para a direita . Observe que é criado um conjunto de 4 pontos no espaço definido para a criação do item de menu. Estes pontos indicam que o valor inserido neste local será um item de menu do primeiro Menu (sem pontos) acima dele. Utilizando as propriedades Caption e Name, insira is itens: Clientes, fornecedores, Linha Separadora e Sair, seguindo a mesma regra do botão Insert e o botão setinha para a direita. Para criar a Linha Separadora é bem simples . Basta você inserir na propriedade Caption o caractere – (hífen). Não esqueça de definir também a propriedade Name para a Linha Separadora. Ah! Um detalhe muito importante... Não esqueça de definir as teclas de atalho rápido através da configuração da propriedade ShortCur. Execute o seu aplicativo e veja como está ficando. Se tiver alguma dúvida, não peca tempo e PERGUNTE!

. Observe na figura ao lado como deverá

ficar a configuração dos Itens de

Menu do Menu

Arquivo.

Page 102: Apostila VB

Seguindo os mesmos passos para a criação dos itens do menu Arquivo, defina agora os Itens de Menus das outras opções de Menu, e não esqueça de ir salvando o seu aplicativo, OK?

11.5 PROGRAMANDO ITENS DE MENU Com a ferramenta de Editor de Menu fica muito simples criar nossos menus no Visual Basic, você não acha? O único evento associado aos menus é o evento Click que é exatamente igual ao evento Click usado para o objeto CommandButton. Para programar o evento click do menu é super simples. Basta, em tempo de projeto, darmos um click no item de menu desejado, que o Visual Basic abrirá a janela de codificação para que possamos inserir a codificação desejada. Vamos fazer um teste então? Faça o seguinte: Utilizando o nosso aplicativo do exemplo de Menus, em tempo de projeto, selecione o menu arquivo e depois que abrir as opções dos itens de menu, clique no item Clientes. Com a janela de codificação acessada, insira a programação a seguir:

Observe como deve

ficar a estrutura da sua Barra de Menu com

seus Itens de Menu no Editor de Menus.

Page 103: Apostila VB

Execute o aplicativo e clique no Item de Menu Clientes. Para o Item de Menu Sair, insira a programação a seguir: Faça o teste novamente. Tudo funcionando? Muito bem. Salve o seu aplicativo.

11.6 MENUS POPUP O Sistema Operacional Windows, a partir da versão Windows 95, usa com muita freqüência este tipo de menu. Esses tipos de menus são aqueles que são habilitados quando pressionamos o botão direito do mouse sobre algum objeto. Para fazer uso desta opção usaremos o comando PopupMenu associado ao evento MouseUp de qualquer objeto. Observe como o comando PopupMenu deverá ser usado. PopupMenu : Neste comando especificamos o nome dado ao componente da Barra de Menu que contém os Itens de Menu que irão aparecer ao executar este comando. Utilizando o nosso aplicativo do exemplo de menu, observe a seguir a programação utilizando a opção do menu Arquivo cujo nome é MnuArq. Esta programação deverá ser inserida no Evento MouseUp do Objeto Formulário. O evento MouseUp é acionado não no pressionamento do botão do mouse e sim quando o botão é solto depois do pressionamento.

Execute novamente o aplicativo e de um clique com o mouse (Qualquer Botão) na área do formulário. Observe que, indiferente do botão do mouse que você pressionar, Irão aparecer os Itens de Menu do Menu Arquivo.

Podemos especificar se algum botão do mouse terá prioridade em “disparar” o Menu Popup programado. Para isso teremos que utilizar valores de

Page 104: Apostila VB

constantes da palavra reservada Button que aparece nos parâmetros do Evento MouseUp.

Button : Irá retornar um número inteiro que informa qual dos

botões do mouse foram pressionados. Observe: Valor 1: Pressionamento do Botão Esquerdo do mouse. (Constante = vbLeftButton) Valor 2: Pressionamento do Botão Direito do mouse. (Constante = vbRightButton) Valor 4: Pressionamento do Botão Central do mouse. (Constante = vbMiddleButton)

No exemplo que fizemos anteriormente no evento MouseUp do formulário, iremos agora codificar para que o Menu Popup será exibido somente se for usado o botão Esquerdo do mouse. Para reconhecer o pressionamento do botão você poderá usar as constantes ou o valor das constantes do comando Button. Altera a sua codificação pela programação a seguir: Observe que estamos testando, através de uma condicional (If), o valor do botão pressionado. Neste nosso exemplo os Itens do Menu Arquivo só serão exibidos caso seja pressionado o Botão Direito do Mouse (VbRightButton). Teste o seu programa e não esqueça de salvá-lo também. Parabéns! Missão cumprida mais uma vez. Até a próxima...

Page 105: Apostila VB

apítulo 12 12.1 BARRA DE FERRAMENTAS – CONTROLE TOOLBAR

Assim como a Barra de Menu, visto no capitulo anterior, a Barra de Ferramentas também tem sua importância dentro de um aplicativo. Já sabemos que todas as opções de um aplicativo, voltado ao Sistema Operacional Windows, se encontram dentro de sua Barra de Menu. Já a Barra de Ferramentas trás as opções mais utilizadas pelo usuário na execução de um determinado programa. Observe a Barra de Ferramentas padrão do Aplicativo Word: Podemos notar que nesta Barra de Ferramentas encontram-se algumas das principais opções que o Word pode nos fornecer, como por exemplo:

1. Novo Documento, 2. Abrir, 3. Salvar, 4. Imprimir, 5. Visualizar Impressão, 6. Copiar, 7. Recortar, 8. Colar, entre outras.

O principal objetivo de uma Barra de Ferramentas é tornar o acesso a certas opções de um aplicativo mais rápido, ou seja, com um clique apenas poderemos acessar opções que se encontram, por exemplo, nos Itens de Menu de algum componente da Barra de Menu. Alem do mais, um aplicativo utilizando Barra de Ferramentas deixará o LayOut bem mais profissional. O Visual Basic nos dá a opção de criar Barra de Ferramentas através do controle (objeto) Toolbar. Para trabalhar com o controle Toolbar dentro de um aplicativo você terá que, primeiramente, adicionar ao projeto um novo componente, pois o objeto Toolbar, assim como outros objetos, não é carregado junto com os objetos padrões que o Visual Basic fornece assim que você inicia um projeto.

12.2 ADICIONANDO NOVOS COMPONENTES AO PROJETO Para adicionar um novo componente no Visual Basic, você terá que acessar a janela de controle de componentes. Para isso, faça o seguinte:

C

Objetos padrões do Visual Basic.

Page 106: Apostila VB

A seguir será exibida a janela de Componentes do Visual Basic. O componente para a utilização do componente Toolbar que deverá ser inserido no projeto é o seguinte: Microsoft Windows Common Controls 6.0 (SP)

1. Selecione o Menu Project 2. Em seguida clique no

Item Components...

Se você preferir, também poderá usar a tecla de atalho

rápido Ctrl + T.

Localize o componente e selecione a caixa de checagem. Em seguida clique no botão OK.

Page 107: Apostila VB

A partir do momento que você salva o seu projeto com novos componentes inseridos, da próxima vez que você abrir este projeto, os novos objetos serão carregados automaticamente, ou seja, não há necessidade de inserir novamente o componente relativo aos objetos. Destes novos objetos que acabamos de inserir, 2 (dois) serão utilizados para criar a barra de ferramentas. Um deles, já sabemos, é o controle Toolbar. O outro é o objeto responsável pelo armazenamento das imagens que irão compor os botões da barra de ferramentas. Este objeto é o ImageList.

12.3 CRIANDO UMA BARRA DE FERRAMENTAS Muito Bem! Inicie então um novo projeto para executarmos o exemplo de uma Barra de Ferramentas, bem como a programação dos seus botões. Formate as propriedades: Name e Caption do formulário. Insira ao projeto o componente:

Microsoft Windows Common Controls 6.0 (SP)

Selecione o objeto ImageList na janela de objetos do Visual Basic (General) e adicione o mesmo ao formulário. Este objeto, como já visto anteriormente, armazenará as figuras dos botões da Barra de Ferramentas. Este objeto só é visível em tempo de projeto. Quando você executar o aplicativo ele não aparecerá, porem, ele estará atuando no projeto vinculado ao objeto Toolbar.

Após ter inserido este novo componente, outros objetos estarão figurando na janela de ferramentas

(General). Observe ao lado:

Os novos objetos inseridos com o novo componente.

Objeto ImageList inserido no

formulário. Este objeto estará

visível em tempo de projeto.

Page 108: Apostila VB

A nomenclatura inicial para o objeto ImageList é Img. Vamos formatar a propriedade Name deste objeto como ImgTeste. Para armazenar as figuras neste objeto faça o seguinte: Clique com o botão direito do mouse sobre o objeto ImageList e selecione o item Properties. A janela de dialogo a seguir será exibida: Selecione agora a guia Image e vamos inserir as figuras.

Na guia General você deve definir o tamanho da figura que você vai

inserir no botão da Barra de Ferramentas. Se você

deixar selecionado a opção Custom a figura ira assumir o tamanho original. Cuidado com esta propriedade, pois depois de vincular o

Objeto ImageList com o Objeto Toolbar, você só poderá fazer alterações

com as figuras se desfizer o vinculo dos objetos, ou seja, de

repente você terá que trabalhar dobrado.

Page 109: Apostila VB

Clique no botã o Insert Picture e informe a seqüência das figuras que você deseja nos botões da Barra de Ferramentas. Você poderá utilizar arquivos gráficos com a extensão: .Ico, .Jpg, .Bmp, entre outros. O Visual Basic fornece alguns ícones juntamente com suas instalação na seguinte pasta:

C:\Arquivos de programas\Microsoft Visual Studio\Common\Graphics\Icons

Selecione a pasta dos ícones desejada e selecione 3 figuras para inserir no objeto ImageList. Você pode pressionar a recla Ctrl para selecionar todas as figuras desejadas de uma só vez. Observe a figura anterior e veja como as figuras ficam armazenadas no objeto ImageList. A propriedade Index informa qual o índice da figura dentro do objeto ImageList e a propriedade ImageCount informa a quantidade de figuras existentes. Com as figuras selecionadas, clique no botão OK.

O próximo passo é inserir no formulário o objeto ToolBar . Adicione então o objeto no formulário. Defina a proprieade Name do objeto Toolbar como TbaTeste. A nomenclatura inicial deste objeto é Tba. Depois de definir o nome, clique com o botão direito do mouse sobre o objeto Toolbar e clique no item Properties para iniciarmos a formatação da nossa Barra de Ferramentas. A janela a seguir será exibida:

O objeto Toolbar passa praticamente

despercebido no formulário antes de inserir os botões,

porem, o mesmo se encontra no topo do

formulário. Observe ao lado:

Page 110: Apostila VB

A primeira propriedade que teremos que formatar do objeto Toolbar é a

propriedade ImageList que se localiza na guia General da janela das propriedades da Toolbar. Esta propriedade é responsável pela vinculação do objeto Imagelist com o Objeto Toolbar, ou seja, para poder associar as figuras selecionadas na ImageList com os botões que iremos definir na Toolbar. Clique então na caixa de combinação da propriedade ImageList e selecione o objeto desejado (ImgTeste) . Formate também a propridade Style selecionando a opção 1 – tbrFlat. Esta opção dará um efeito melhor aos botões da Barra de Ferramentas. A seguir selecione a guia Buttons da janela de propriedades. Aqui é onde iremos definir os botões e todas as configurações relativas aos mesmos.

Clique no botão Insert Button para adicionar o primeiro botão da nossa Barra de Ferramentas.

Os botões terão a aparência da Barra de Ferramentas do Word,

ou seja, somente quando o cursor do

mouse for posicionado sobre o botão é que ele

assume o contorno. Observe a opção Salvar

da figura ao lado:

As propriedades que estavam desabilitadas agora estão habilitadas

esperando a formatação.

Page 111: Apostila VB

Aqui serão formatadas as seguintes propriedades: Caption, Key, Style, ToolTip Text e Image.

� Caption: Assim como em outros objetos a propriedade Caption aqui no objeto Toolbar é relativo ao título do botão. Geralmente não se define Títulos aos botões da Barra de Ferramentas, pore, fica a critério de cada programador definir ou não esta propriedade nos botões da Barra de Ferramentas.

� Key: Esta propriedade será utilizada para definir um Nome

(Chave), ao botão. Para programar o botão na Barra de Ferramenta, cada botão definido aqui terá que ter um valor (Key) diferente um do outro pois a programação se dará exclusivamente sobre um objeto que é a Toobar e não sobre os botões definidos. Qualquer nome poderá ser utilizado para definir esta propriedade, porem não esqueça de um detalhe muito importante: da maneira como você definir o valor da propriedade Key ele deverá ser utilizado exatamente igual no momento da programação (Letras maiúsculas, minúsculas, espaço entre palavras). Por exemplo: se você informar o valor Botão 1 é assim que você terá que informar, ou seja, o B maiúsculo e um espaço para o número 1.

� Style: Aqui será definido qual o estilo do botão que será usado. O

valor padrão utilizado é 0 – tbrDefault para botões normais de uma Barra de Ferramentas, mas, você poderá utilizar por exemplo o valor 3 – tbrSeparator para definir um separador entre um botão padrão e outro.

� ToolTip Text: Esta propriedade é super importante para qualquer

objeto. Quando você precisar informar ao usuário, através de uma pequena mensagem, qual a ação do usuário utilize esta propriedade. Esta mensagem será exibida sempre que o usuário posicionar o cursor do mouse sobre o objeto com esta propriedade definida. Observe o exemplo da Barra de Ferramentas do Internet Explorer:

Quando o cursor do mouse foi posicionada sobre a figura , foi exibido a mensagem Atualizar, informando a ação do botão quando for pressionado.

� Imagem: Aqui será definida a imagem que você vai associar ao botão. A seqüência das figuras é a mesma que foi definido no objeto ImageList. Observe para um detalhe muito importante. Esta propriedade só estará habilitada se você efetuar o vinculo com o

Page 112: Apostila VB

objeto ImageList que se define na guia General e propriedade ImageList.

Para o nosso exemplo defina os valores das propriedades da seguinte maneira: Caption: Neste exemplo deixaremos esta propriedade sem valor, ou seja, o botão não terá título, somente figura. Key: Botão1 - (sem espaço) Style: 0 – tbrDefault ToolTip Text: Teste Botão 1 Image: 1 Clique no botão OK. Execute o aplicativo e faça o teste posicionando o cursor do mouse sobre o botão. Não esqueça de salvar o seu projeto. Muito Bem! Vamos voltar à configuração dos botões da ToolBar. Em tempo de projeto clique novamente com o botão direito do mouse sobre o objeto Toolbar e selecione a guia Buttons na janela de propiredades.

Adicione mais um botão . Este próximo botão será um botão separador, então a única propriedade a ser definida aqui é a propriedade Style Defina esta propriedade com o valor

3 – tbrSeparator. Clque no botão Aplicar e observe o resultado. Adicione mais um botão e defina as propriedades conforme a seguir: Caption: Neste exemplo deixaremos esta propriedade sem valor, ou seja, o botão não terá título, somente figura.

Teste Barra de Ferramentas

Page 113: Apostila VB

Key: Botão2 - (sem espaço) Style: 0 – tbrDefault ToolTip Text: Teste Botão 2 Image: 2 Adicione novamente outro botão e defina-o como botão separador. Por ultimo, adicione um outro botão e defina as propriedades conforme a seguir: Caption: Neste exemplo deixaremos esta propriedade sem valor, ou seja, o botão não terá título, somente figura. Key: Botão3 - (sem espaço) Style: 0 – tbrDefault ToolTip Text: Teste Botão 3 Image: 3 Clique no botão OK para finalizar a configuração dos botões. Execute o aplicativo e observe o resultado, e não esqueça de salvar novamente o seu projeto.

12.4 PROGRAMANDO A BARRA DE FERRAMENTAS (TOOLBAR) Como comentado anteriormente o objeto Toolbar e seus botões são um único objeto. Para programar botão por botão teremos que indicar ao programa qual dos botões está sendo pressionado. Para isso utilizaremos algo já conhecido para nós. A instrução de desvio Select Case.

A barra de ferramentas com os 3 botões padrões e 2 botões separadores

Page 114: Apostila VB

Em tempo de projeto de um duplo clique sobre o objeto toolbar para acessar a janela de codificação. O evento a ser programado será o evento ButtonClick, ou seja, ao clique de qualquer botão pressionado (click) será executado a codificação inserida. Os botões separadores serão usados somente para reparação de grupo de opções de botões, portanto, não haverá programação referente a eles. Para a programação dos botões padrões precisamos nos lembrar do valor exato da propriedade Key. Para os testes de programação dos botões , utilizaremos a seguinte situação:

O primeiro botão (quando clicado) irá exibir a seguinte mensagem: Teste do botão número 1 (através da função Msgbox).

O segundo botão (quando clicado) irá exibir a seguinte mensagem: Teste do botão número 2 (através da função Msgbox).

O terceiro botão (quando clicado) irá finalizar o aplicativo através do comando End. Vamos então a programação. Insira a codificação a seguir no evento ButtonClick do objeto Toolbar. Bem! A programação aqui é bem simples. Utilizamos o Select Case para fazer uma verificação de Casos em relação à propriedade Key definida para cada botão da Barra de Ferramentas. O valor testado no Select Case (Button.Key) é para o programa saber que o teste que ele terá que fazer é em relação a classe dos botões da Barra de Ferramentas (Button) e a propriedade Key destes botões.

Page 115: Apostila VB

Os valores testados nos Case (entre aspas) são os valores da propriedade Key que foram definidos na formatação do objeto Toolbar. Execute o seu aplicativo e faça os testes dos botões. Salve o seu aplicativo. Mais uma vez... Missão cumprida... Parabéns e até a próxima...

Page 116: Apostila VB

apítulo 13 13.1 MDI FORM / JANELAS MDI

Podemos definir que um Formulário MDI (MDI Form) é uma janela que pode ser considerada como a Janela Principal do Aplicativo. É a janela onde iremos definir a Barra de Menu e os Itens de Menu do Sistema, bem como a Barra de Ferramentas, se houver. A partir de um MDI Form é que todas as outras janelas existentes no projeto são carregadas. É claro que o seu projeto irá funcionar sem um Mdi Form, porem se você estiver com a idéia de trabalhar com janelas MDI em seu projeto, ai sim, com certeza, você terá que ter um MDI Form como janela principal. MDI significa Multiple Document Interface (Interface de múltiplos Documentos). Esse termo é utilizado para definir o ambiente de janelas em que uma janela MDI principal, também chamada de formulário MDI-pai, contem outras diversas janelas, as quais normalmente são denominadas como janelas MDI-filhas. Você poderá usar este tipo de janelas em seus aplicativos no momento em que o usuário necessitar trabalhar com duas ou mais janelas abertas (carregadas), no mesmo aplicativo. Você poderá ter somente um formulário MDI-pai no projeto, porem, poderá ter varias janelas MDI-filha. Sempre que você trabalhar com um formulário MDI-pai (MDI Form) em seu projeto, este, naturalmente, terá de ser o formulário principal do sistema. Para ter uma idéia de Mdi Form (formulário-pai) e janela Mdi-filha, podemos pegar como exemplo o aplicativo Microsoft Photo Editor. Quando iniciamos o Microsoft Photo Editor é carregado a janela principal do aplicativo e quando abrimos um documento, é sobreposto sobre a janela principal outra janela, a qual seria a janela MDI-filha. A janela principal do Microsoft Photo Editor neste exemplo seria o MDI Form e as janelas dos documentos, as janelas MDI-filhas. Observe na figura a seguir:

C

O formulário principal do aplicativo Microsoft Photo Editor com a janela de um documento carregada.

Page 117: Apostila VB

Observe na figura anterior que a janela do aplicativo possui os botões de

controle de janela com o seguinte formato: . E os botões de controle

de janela do documento aberto tem o seguinte formato: . Isto significa que temos uma janela sobreposta a outra.

13.2 ADICIONANDO MDI FORM AO PROJETO Em primeiro lugar vamos ver como podemos fazer para adicionar um formulário MDI form – formulário pai - à um projeto, e em seguida, trabalharemos com as janelas MDI-filhas. Inicie então um novo projeto no Visual Basic. Em seguida será exibida a janela de opções de formulários MDI. Nesta janela podemos definir se o MDI-form será novo, ou se será um MDI-form recuperado de outro projeto, pois temos esta opção também. Por exemplo: Se você tiver um MDI-form em outro projeto e quiser usá-lo dentro de um novo projeto poderá. Basta selecionar a guia Existing da janela de opções do formulário e localizar o formulário que você quer inserir para o projeto. Isto é valido não só para janelas do tipo MDI-form mas para qualquer tipo de formulário que queira usar em projetos. Observe a janela a seguir:

Para construir um formulário MDI-pai faça o seguinte:

1. Selecione o Menu Project, 2. Em seguida clique no Item

Add MDI Form

Page 118: Apostila VB

Depois de clicar no botão Abrir, o MDI Form estará dentro do projeto, restando apenas salvar o mesmo. Para navegar entre um formulário e outro é só dar um duplo clique no formulário desejado. Formate o seu MDI Form conforme a seguir: Name: FrmMdiTeste Caption: Teste Formulário MDI-pai e Janela MDI-filhas WindowsState: 2 – Maximized (esta propriedade é relativa ao estado inicial da janela quando a mesma for executada).

13.3 OPÇÕES DO PROJETO Se você executar o seu aplicativo o formulário que será apresentado será o form1. Sabe Porque?

Através da guia Existing você poderá adicionar um MDI Form existente em outro projeto. Para adicionar um novo, selecione a guia

New e clique no botão Abrir.

Repare na janela Explorer do projeto que já existe dois formulários. Este

que acabamos de adicionar, MDIForm1 e o formulário que foi

carregado junto com o Visual Basic, Form1

Page 119: Apostila VB

Bem! Quando você inicia um novo projeto, é carregado automaticamente um novo formulário para que você possa começar a desenvolver o seu aplicativo (Form1), conseqüentemente o Visual Basic vai entender que este formulário deverá ser o primeiro a ser compilado. Neste exemplo que estamos desenvolvendo iremos modificar a seqüência dos formulários, ou seja, o primeiro formulário a ser exibido (compilado) será o MDI Form. Na janela de propriedades do projeto podemos inclusive mudar o nome do projeto, pois o nome Project1 é o Visual Basic que nos fornece como nome exemplo. Observe a figura:

Para executar esta operação teremos que acessar as opções do

projeto. 1. Selecione o Menu

Project 2. Em seguida clique no

Item Project1 Properties...

A janela de propriedades do projeto.

Page 120: Apostila VB

A propriedade que define a ordem de compilação dos formulários é: Startup Object. Clique na caixa de combinação desta propriedade e selecione FrmMdiTeste. Fazendo isto, o MDI Form será o primeiro formulário a ser compilado quando você executar o seu aplicativo. Aproveite também e mude o nome do seu projeto (na propriedade Project Name) para ProjetoMdi. A regra aqui para a definição do nome do projeto é a mesma para a definição de nomes de objetos, ou seja, não pode ser usado caracteres especiais, nem mesmo espaço em branco entre palavras. Ótimo! Com as alterações efetuadas, vamos em frente. Execute o seu aplicativo e observe que o MDI Form é o primeiro a ser compilado com a janela maximizada. Defina agora (No formulário MDI Form) uma Barra de Menu com os Itens de Menus, conforme exibido no exemplo a seguir: Muito Bem! A idéia da aplicação deste aplicativo que estamos desenvolvendo é, criar 3 janelas MDI-filhas para serem “carregadas” a partir das opções Janela 1, Janela 2, Janela 3 do menu Arquivo. Daqui a pouco comentaremos sobre o menu Janelas e o menu Sobre. Formate então o outro formulário (Form1) conforme a seguir: Name: Frm1 Backcolor: Preto Caption: Teste Janela Mdi Filha 1 MdiChild: True (Esta propriedade é que define que esta janela será uma janela MDI-filha, portanto na elaboração dos seus projetos não esqueça desta propriedade). WindowsState: 2 – Maximized Só um detalhe: Repare que os botões Maximizar (MaxButton) e Minimizar (Minbutton) desta janela não foram alterados. Quando você define que uma janela é MDI-filha (MdiChild=True), obrigatoriamente as mesmas devem conter os botões maximizar e minimizar, pois senão as mesmas não serão carregadas pelo MDI Form. Salve o seu projeto. Repare que serão salvos 2 arquivos Frm. Um é o MDI Form e o outro é a janela MDI-filha. E você terá que salvar também o arquivo Vbp. Todos os arquivos terão que ser salvos NA MESMA PASTA DO PROJETO. O método que iremos usar para apresentar a janela MDI-filha (Frm1) será o método SHOW. Para isso basta seguir a seguinte sintaxe: Objeto.Show (Aqui o objeto é o nome do formulário que deverá ser apresentado). Vamos programar então?

Page 121: Apostila VB

No formulário MDI Form acesse o evento click do Item de Menu Janela 1 do Menu Arquivo e insira a linha de codificação a seguir: Execute agora o seu aplicativo e clique no item de Menu Janela 1 e observe o resultado. Quando carregamos janelas MDI-filhas, as mesmas devem ser apresentadas com o método show (veja programação) e são exibidas dentro dos limites do formulário MDI-pai. Outro detalhe é que a janela MDI-filha, quando minimizada, seu ícone aparece dentro do MDI Form, e não na área de trabalho do Windows. Quando a janela MDI-filha é maximizada (conforme exibido na figura acima), sua legenda (Caption) é mostrada logo após a legenda (Caption) do MDI Form-pai. Salve seu projeto e vamos continuar com nosso exemplo. Vamos adicionar ao projeto mais 2 formulários que serão tratados também como janela MDI-filhas.

13.4 ADICIONANDO FORMULÁRIO AO PROJETO

Page 122: Apostila VB

A janela a ser exibida na seqüência é semelhante à janela para adicionar o formulário MDI, portanto basta clicar no botão Abrir. Formate este novo formulário conforme a seguir: Name: Frm2 Backcolor: Vermelho Caption: Teste Janela Mdi Filha 2 MdiChild: True WindowsState: 2 – Maximized Programa este formulário para ser carregado através do Item de Menu Janela 2 do Menu Arquivo. Observe a seguir: Insira mais um formulário ao projeto e formate conforme a seguir: Name: Frm3 Backcolor: Verde Caption: Teste Janela Mdi Filha 3 MdiChild: True WindowsState: 2 – Maximized Programa também este formulário para ser carregado através do Item de Menu Janela 3 do Menu Arquivo. Observe a seguir:

Para adicionar um formulário ao projeto faça o seguinte:

1. Selecione o Menu Project 2. Clique no Item Add Form

Page 123: Apostila VB

13.5 PROPRIEDADE WINDOWSLIST : Sempre que você trabalhar com janelas MDI-filhas esta propriedade terá que estar habilitada, pois ela vai ser bem útil para exibir as janelas MDI que estão aberta e informar qual está ativa. Para testar as janelas MDI-filhas e a propriedade WindowList, execute o seu aplicativo e carregue todas as janelas MDI-filhas a partir do menu Arquivo. Em seguida selecione o Menu Janelas. Observe a linha separadora e os títulos das janelas abertas abaixo dos itens do menu janelas. Esta opção foi configurada a partir da propriedade WindowList. Para você alternar entre uma janela e outra, basta clicar na opção desejada. Observe a figura a seguir:

Antes executar o seu aplicativo, faça a

seguinte alteração no menu Janelas. Acesse o editor de Menu (Ctrl + E) e

selecione a opção do Menu Janelas.

Observe a propriedade

WindowsList. Muito bem!

Selecione a caixa desta propriedade conforme mostrado na figura ao lado:

Page 124: Apostila VB

13.6 MENU JANELAS – MÉTODO ARRANGE Depois que as janelas MDI-filhas são carregadas elas podem ser dispostas de maneira que você consiga visualizar todas elas ao mesmo tempo. Para isto serão utilizadas as opções do menu Janelas (Cascata, Horizontal e Vertical). Para esta programação será utilizado o método Arrange, o qual, quando utilizado, espera o valor de uma constante referente às opções de disposição das janelas. Observe a sintaxe: Arrange <constante> O valor da constante poderá ser repassado como valor inteiro ou o nome da constante que o Visual Basic utiliza. Observe os valores:

� Cascata: Valor 0 (zero) ou vbCascade � Horizontal: Valor 1 ou vbHorizontal � Vertical: Valor 2 ou vbVertical

Observe as programações a seguir e atualize o seu aplicativo codificando o mesmo. Execute o seu aplicativo, carregue as janelas MDI-filhas e teste a programação efetuada com o método Arrange. Salve o seu projeto.

Page 125: Apostila VB

13.7 JANELA MODAL Alem das janelas MDI que acabamos de ver, podemos trabalhar também com janelas do tipo Modal. Uma janela do tipo modal é aquela que quando carregada você não terá mais acesso ao aplicativo se você não fechar a mesma. Vamos tomar como exemplo a janela Sobre do Visual Basic. A janela Sobre do Visual Basic será exibida, mostrando as especificações do aplicativo. Se você tentar voltar ao aplicativo clicando na área do Visual Basic, atrás da janela About Microsoft Visual Basic, você não conseguirá pois esta janela é uma janela Modal. Algumas janelas são carregadas desta maneira porque as mesmas não precisam ficar “Soltas” dentro do aplicativo, ou seja, verifica-se o conteúdo e em seguida, fecha-se a mesma. Todo formulário (ou qualquer arquivo gráfico quando carregado), utiliza recursos da máquina (memória) para ser executado, portanto, janelas de informações não há necessidade de ficarem abertas

Selecione o Menu Help e clique no Item About Microsoft visual Basic...

Page 126: Apostila VB

ocupando recursos da máquina. A partir do momento que você fecha uma janela, os recursos utilizados para exibir a mesma são descarregados.

13.8 CRIANDO UMA JANELA SOBRE Na barra de Menu do nosso exemplo de janelas MDI (MDI-Form) tem uma opção para carregar uma janela Sobre, que fale sobre as especificações do sistema. Utilizando então este aplicativo, vamos configurar uma janela que fale sobre as informações do projeto e carregá-la como uma janela modal a partir do item Informações do Aplicativo do menu Sobre. Adicione então ao projeto um novo formulário e formate o mesmo conforme a seguir: Formulário: Name: FrmSobre Caption: Informações do Aplicativo Desabilitar botões Max e Min (MaxButton e Minbutton = False) Centralizar o Formuiário (StarUpPosition = 2 – CenterScreen)

Adicione ao formulário uma Imagem utilizando o Objeto Image: Name: ImgTeste Picture: (Localize a imagem que você queria adicionar ao objeto) Stretch: Utilize esta propriedade como True para você definir o tamanho da imagem conforme o tamanho do objeto Image. CommandButton: Name: CmdOk Caption: &Ok Label: Utilize objetos Label para os textos no formulário. Você poderá também definir as propriedades: Font (para definir outro tipo, estilo e tamanho de fonte) ForeColor (para definir uma outra cor de fonte) WordWrap (para forçar uma quebra de linha em objeto Label) Utilize quanto objetos Label (ou outros objetos) quiser para as definições das informações do seu formulário. Sua janela Sobre deverá ficar mais ou menos com a seguinte apresentação:

Page 127: Apostila VB

O botão OK deverá ser codificado de maneira que, quando clicado seja fechado somente esta janela, e não o aplicativo inteiro. Aqui deverá ser usado o comando que descarregue a janela atual, voltando a janela anterior. Este comando chama-se Unload Me. Unload: Significa descarregar e a opção Me se refere ao objeto atual, que neste caso aqui é o formulário Sobre. Então sempre que você quiser fechar uma janela sem finalizar o aplicativo utilize Unload Me. Codifique então o evento Click do Botão OK, conforme mostrado a seguir: Como já comentamos anteriormente, esta janela será carregada como uma janela Modal. A programação para carregar este tipo de janela também utiliza o método Show, porem, deverá ser utilizada também a constante VbModal. Acesse o evento Click do Item de Menu Informações do Aplicativo (Menu Sobre) e insira a codificação a seguir:

Uma simples janela Sobre informações do aplicativo

Page 128: Apostila VB

Execute o seu aplicativo e faça os testes. Observe que a janela sendo carregada como Modal, outras janelas não poderão ser carregadas ao mesmo tempo. Se você definir que uma janela é MDI-filha (Mdichild = True), na programação para carregar esta janela não poderá ser usada a constante VbModal. Salve o seu aplicativo. Com todas estas informações sobre janelas você já está apto a trabalhar com qualquer tipo de janelas em seus futuros projetos, basta você definir que LayOut terá as janelas dos aplicativos e por em práticos. Ficamos por aqui... Até a próxima...

Page 129: Apostila VB

apítulo 14 14.1 PROCEDIMENTOS PRÓPRIOS

Todo objeto (em seu evento) tem um procedimento (Private Sub) próprio. Quando criamos um procedimento próprio, sem estar relacionado diretamente a um objeto, estamos definindo sub-rotinas do tipo Sub as quais serão usadas para dividir as codificações de um aplicativo em blocos menores e armazenar partes de programação de códigos que podem ser “chamados” diversas vezes durante a definição de um aplicativo. Isto quer dizer que podemos ter um bloco de varias linhas de programação, e se precisar usar este bloco em diversos eventos do mesmo objeto ou de objetos distintos, não precisaremos codificar novamente o bloco de linhas, simplesmente utilizamos o mesmo procedimento para ser executados em diversas partes do programa (Objetos/Eventos). Os procedimentos definidos poderão ser do tipo: Sub, Function, Property e Event, porem, nestes nossos estudos será dada atenção especial aos tipos Sub e Function.

14.2 CRIANDO PROCEDIMENTOS Para criar um procedimento execute os seguintes passos: Na janela de procedimentos terá que ser definido o Nome do procedimento (Name), o Tipo do Procedimento (Type), o Objetivo do procedimento, ou seja, se vai ser Publico ou Privado (Scope) e também podemos definir se as variáveis declaradas no procedimento serão mantidas ou não nas chamadas do procedimento. Observe a janela a seguir e repare nas opções::

C

1. Acesse a janela de codificação do Visual Basic (em qualquer local, pois a opção só estará habilitada se você estiver na área de codificação do Visual Basic).

2. Selecione o Menu Tools e em seguida clique no item Add Procedure...

Page 130: Apostila VB

O Nome do procedimento (Name) deverá ser definido seguindo as seguintes regras: Não poderá ser usado nomes ou palavras reservadas do Visual Basic. Também não poderá ser utilizado nomes de variáveis declaradas nem mesmo nomes de objetos declarados, portanto, atente para o nome que você vai utilizar na criação dos seus procedimentos (Sub) e Funções (Function). Quando definimos um procedimento do tipo Public estamos permitindo que este procedimento seja utilizado por qualquer outro procedimento (de qualquer evento de objeto) dentro do projeto. A opção Private estabelece que o procedimento será acessível somente aos procedimentos (dos eventos dos objetos) do formulário onde está sendo declarado. A opção all Local variables as Statics define se as variáveis locais do procedimento serão preservadas quando o procedimento for chamado, porem, esta opção, não afeta as variáveis que são declaradas fora do procedimento, mesmo que estas sejam utilizadas no procedimento. Os tipos de procedimento(Type) Sub e Function possuem uma estrutura muito semelhante e são usados com a mesma finalidade. A diferença entre os dois é a seguinte: a Função deverá sempre retornar um valor que poderá ser atribuído a uma variável.

14.3 PARÂMETROS EM PROCEDIMENTOS A finalidade do uso de parâmetros em um procedimento é servir como um ponto de comunicação de duas direções. Estas direções são: o próprio procedimento e o programa em si, ou seja, algum outro objeto que possa utilizar o procedimento em seu próprio procedimento. Assim desta maneira, poderemos passar valores de um procedimento a outro procedimento e assim reciprocamente. Os tipos de passagens de parâmetros utilizados são:

1. Por Valor (ByVal) e 2. Por Referência (ByRef).

Page 131: Apostila VB

A passagem parâmetro por valor se define como uma passagem na qual uma informação é transmitida a um procedimento que executará o processamento com a esta informação. O processamento será realizado dentro do procedimento que está executando a rotina, sendo que, o resultado obtido no processamento ficará vinculado ao procedimento de origem. Já o parâmetro por referência se define por retornar ao procedimento que está chamando a rotina o valor a ela passado, assim o valor não fica vinculado.

14.4 TESTANDO PROCEDIMENTOS Acredito que complicou um pouco não é mesmo? Muito Bem! Para por tudo isto em pratica vamos iniciar um novo aplicativo e definir formulário e objetos conforme a seguir: Formulário: Name: FrmSub Caption: Exemplo Procedimento Private Sub TextBox Name: Txt1 Text: Limpar o conteúdo da propriedade Label Name: Lbl1 BackColor: Azul Claro Caption: Limpar o conteúdo da propriedade CommandButton Name: CmdProcessar Caption: &Processar Defina a Barra de Menu com seu Item de Menu e o Lay Out do seu formulário conforme exibido na figura a seguir:

Page 132: Apostila VB

O primeiro procedimento que vamos criar é uma mensagem (MsgBox) que deverá ser executada tanto no botão de comando Processar quanto no item de menu Executar Procedimento, porem somente com uma programação. Acesse então a janela de procedimentos (Tools – Add Procedure...) e defina conforme a seguir: Será um procedimento do tipo Private Sub com o nome MinhaMensagem. Clique no botão OK e observe na janela de codificação do Visual Basic que foi criado um procedimento próprio. Os procedimentos próprios são armazenados na seção General – Declarations da janela de codificação do Visual Basic. Observe o procedimento MinhaMensagem na seção General. A linha de programação a seguir deverá ser inserida no procedimento que acabamos de criar, ou seja, no procedimento MinhaMensagem. Muito Bem! Acabamos de codificar o nosso procedimento. Agora para executar o procedimento é só “chamá-lo” a partir de onde for necessário. No nosso caso vamos chamar a partir do botão de comando e do item de menu, ou seja, no evento clique destes dois objetos é só escrever o nome do procedimento que é MinhaMensagem

Page 133: Apostila VB

Então codifique o evento clique dos dois locais conforme exibido na figura a seguir: Viu como é fácil! Bom! este procedimento que criamos é um procedimento simples, sem parâmetros. A seguir vamos criar um exemplo utilizando passagem de parâmetros, mas antes, execute o seu aplicativo e faça os testes, e não esqueça de salvar o seu projeto.

14.5 PROCEDIMENTO TIPO SUB COM PARÂMETROS Utilizando o mesmo projeto anterior vamos fazer um teste agora passando parâmetros ao nosso procedimento. O nosso exemplo executará o teste do fatorial de um número inteiro informado na caixa de texto. Utilizaremos o botão Processar para executar o procedimento que criaremos com o nome Calculo. Crie então um procedimento (Private – Sub) com o nome Calculo e insira a linha de codificação a seguir:

Observe o parâmetro por valor (ByVal) que

esta sendo passado ao procedimento. A

variável Valor2 irá receber o valor que for repassado a variável

Valor1, através da caixa de texto (Txt1)

Isto veremos a seguir.

Page 134: Apostila VB

Para efetuar a operação vamos programar o Evento Click do botão Processar. Só não esqueça de deixar a codificação já existente no botão como linha de comentário. Muito Bem! A explicação da programação acima é a seguinte:

Foi declarada a variável Valor1 o qual vai receber o valor da Cx. de Texto Txt1.

Quando o procedimento Calculo for “Chamado” o valor da variável Valor1 será repassado para a variável Valor2 que é o parâmetro por valor que utilizamos no procedimento próprio Calculo. Execute o aplicativo, informe um valor inteiro na caixa de texto e clique no botão processar. Salve o seu projeto.

14.6 PROCEDIMENTO TIPO FUNCTION COM PARÂMETROS Como já comentado anteriormente, os procedimentos do tipo Function possuem a estrutura bem parecida com os procedimentos do tipo Sub. A diferença é que, uma função (Function) deve retornar um valor quando executada uma operação. Quando um valor é retornado de uma função (Function), este valor estará sempre associado a um tipo de dado, seja ele: Inteiro, Texto, Lógico, Real... Usando o mesmo exemplo do aplicativo anterior (Valor Fatorial), vamos testar um procedimento próprio do tipo Function.

Crie um procedimento do tipo Function

conforme mostrado na janela ao lado.

Page 135: Apostila VB

Neste exemplo vamos programar primeiramente o botão Processar. Atualize a programação existente no botão conforme é mostrado a seguir: Aqui o objeto Label está recebendo o valor que a função FunçãoCalculo irá possuir no momento que do retorno da função. O valor de retorno da Private Function FunçãoCalculo pode ser observado nas linhas de codificação exibidas na figura a seguir. Programe o seu procedimento: Este tipo de procedimento (function) executa o retorno do seu valor na própria função. Por isso que depois do resultado executado pelo laço For / Next na variável Fator, este valor é atribuído ao nome da função, através da codificação FunçãoCalculo = Fator. E observe também que é o nome do procedimento: Private Function FunçãoCalculo(Valor2 as Long) as Long O valor declarado dentro dos parênteses (Valor2 as Long) é do tipo Inteiro Longo e o procedimento (FunçãoCalculo) que receberá um valor também é do tipo Inteiro Longo. É por isso que indicamos pela segunda vez o valor Inteiro Longo. Execute e teste seu programa e não esqueça de salvá-lo. Parabéns novamente pelos exemplos aplicados e pelo aprendizado. Ficaremos por aqui, porem logo retornaremos com mais conteúdo. Valeu e até a próxima...

Page 136: Apostila VB

apítulo 15 15.1 TRABALHANDO COM BANCO DE DADOS

Depois de vermos vários conceitos e exemplos de programação, chegou a hora de trabalhar com algo muito importante voltado a linguagem de programação que é o suporte a Banco de Dados. Nos capítulos seguintes veremos como devemos proceder no Visual Basic para criar aplicativos voltados a Banco de Dados. Primeiro vamos ver alguns conceitos básicos sobre Banco de Dados. Podemos compreender por Banco de Dados qualquer sistema que agrupe e mantenha organizada uma série de informações relacionadas a um determinado assunto em uma determinada ordem. Podemos ter como exemplo disto a lista telefônica, nela percebemos que todos os dados referentes a uma pessoa estão na mesma linha. Este conjunto de dados na mesma linha chamamos de Registro. A informação (nome, telefone, etc.) em relação a uma determinada pessoa está separada em colunas, as quais denominamos campos.. Um Sistema Gerenciador de banco de dados relacionais(SGBDR) é usado para armazenar as informações de uma forma que permita às pessoas examiná-las de várias maneiras. O Sistema Gerenciador de dados nativo do Visual Basic é o Access (Microsoft Jet), o qual pertence a uma categoria diferenciada de Gerenciadores tradicionais, como por exemplo: o Dbase e o Paradox. O SGBDR Microsoft Jet possui características em comum com os banco de dados cliente-servidor. Em nossos exemplos dos exercícios que iremos desenvolver, iremos abordar o padrão MDB (Microsoft Database) que representa uma grande maioria de arquivos de Banco de Dados voltados ao Sistema Operacional Windows existente hoje. A extensão de arquivo MDB, utilizado pelo Access, como já comentado anteriormente, também é utilizado pelo Visual Basic. Dentro de um arquivo MDB (banco de Dados) podemos ter várias tabelas. Por exemplo: Em um programa que faça o controle de estoque podemos ter uma tabela para Produtos, Fornecedores, Clientes, Vendas etc. Todas essas tabelas ficam armazenadas dentro de um único arquivo MDB. Estas tabelas possuirão campos onde serão armazenadas as informações. A tabela Produto terá o campo de Descrição do Produto, Valor do Produto Quantidade em Estoque, etc. Tudo isto representa os Atributos (Campos) que estão armazenados dentro da tabela. Na fase de desenvolvimento de um aplicativo que irá gerenciar um Banco de Dados, poderemos criar primeiramente o Banco de Dados com suas definições de tabelas e campos. Os registros serão informados pelo usuário na medida em que ele for trabalhando com seu sistema. O nosso Banco de Dados poderá ser criado diretamente no Access, ou utilizando a ferramenta de desenvolvimento de Banco de Dados que vem com o Visual Basic chamada: Visual Data Manager (VisData)

C

Page 137: Apostila VB

15.2 VISUAL DATA MANAGER (VISDATA) Para nossos estudos, iremos desenvolver um Banco de Dados no aplicativo VisData e o mesmo Banco de Dados no Access. Enfim quanto mais informação melhor, você não acha? ☺ Inicie então um novo projeto no Visual Basic, pois iremos acessar o Visual Data Manager pelo próprio VB.

A janela do visual Data Manager (VisData) será exibida. Selecione as opções conforme mostrado na figura a seguir:

Para criar um novo arquivo de Banco de Dados no VisData, selecione o Menu File, em seguida clique no Item New, em seguida clique no Item Microsoft Access e por ultimo no Item Version 7.0 MDB....

Para acessar o VisData, faça o seguinte:

1. Selecione o Menu Add-Ins 2. clique no Item Visual Data Manager...

O Visual Data Manager alem de criar Bancos de Dados com

extensão MDB (Access), também dá opção para criar Bancos de

Dados para outros sistemas Gerenciadores. Observe na figura.

Page 138: Apostila VB

A próxima tela a ser exibida será a janela de diálogo para você informar em qual pasta será salvo o arquivo de Banco de Dados e qual o nome do arquivo. Selecione a pasta desejada e nomeie o arquivo com o nome: MeuBanco. Não há necessidade de informar a extensão do arquivo (Mdb). A próxima janela a ser exibida é a que faz o gerenciamento das tabelas. Para criar uma nova tabela faça o seguinte: Clique com o botão direito do mouse sobre a opção Properties (Propriedades) e em seguida clique na opção New Table.

Page 139: Apostila VB

Na próxima janela você irá definir o nome da tabela e começar a adicionar os campos (atributos) que farão parte da tabela. Observe as duas opções a seguir:

� Table Name: Aqui deverá ser informado o nome da Tabela. Deverão ser obedecida as regras impostas para nomeação de objetos, variáveis, ou seja, não começar no números, não conter caracteres especiais, etc.

Para este exemplo utilize o nome: Clientes

� Field List: Caixa de Listagem aonde irá aparece a lista dos campos que serão adicionados na tabela.

Para adicionar os campos clique no botão Add Field

. A janela a seguir será exibida:

Page 140: Apostila VB

Nesta janela iremos criar todos os campos da tabela. A seguir será comentado as principais propriedades de opções desta janela:

� Name: utilize esta opção para informar o nome do campo da

Tabela.

� Type: Nesta Caixa de Combinação você ira definir o tipo de dado que será campo que está sendo informado. Os tipos de dados aqui são os mesmos tipos de dados relativos as variáveis. Lembra-se disso. Qualquer coisa de uma olhada no capitulo sobre variáveis.

� Size : Defina aqui o tamanho do campo. Se você informar 10 para

o campo, poderão ser digitado somente 10 caracteres. Esta opção estará disponível somente para o campo do tipo Text.

� FixedField: Determina se o campo será Fixo

� VariableField: Determina se o campo será um Campo Variável,

Este valor é o padrão.

� AllowZeroLength: Esta opção permite comprimento zero, ou seja, ´se esta opção estiver selecionada o campo aceitará um vlaor vazio (""). Caso não estiver habilitada e tentar gravar um campo que não tenha nada digitado (como uma informação não obrigatória no aplicativo) ocorrerá um erro em tempo de execução. Vai dar “PAU” no programa.

� Required: Com opção selecionada o campo se torna obrigatório.

Será obrigatório a informação de valores para o campo, senão ocorre erro em tempo de execução. Tambem vai dar “PAU”.

� DefaultValue: Se você tiver um valor padrão definido aqui,

mesmo que o usuário do seu aplicativo não informe nada para

Page 141: Apostila VB

este campo, ele irá assumir o valor que você venha a definir nesta propriedade

Muito Bem! Depois de conhecer um pouco do ambiente do aplicativo Visual Data Manager (VisData), vamos então criar uma tabela onde possa controlar as informações de um cliente. Defina os campos da sua tabela conforme mostrado a seguir:

Name Type Size Outros Clicod Long CliNome Text 35 Cliend Text 40 CliBairro Text 35 CliCid Text 35 CliUF Text 2 CliCep Text 9 CliCpf Text 14 CliRg Text 15 CliFone Text 16 CliCel text 16 Cliemail text 40 Com a opção da propriedade AutoIncrField selecionada, este campo será do tipo autonumeração, ou seja o código será gerado automaticamente pelo próprio Banco de Dados. Estrutura da tabela com os campos definidos

Depois de definir todos os campos

na tabela, Informe o nome para a mesma

(Table Name). O nome da tabela será Clientes. Depois disso

clique no botão Build The Table para que a tabela

seja gravada e inserida no

banco de dados.

Page 142: Apostila VB

Observe que o nome da tabela Clientes já está incluída na janela DataBase Window, isto significa que nossa tabela já faz parte do Banco de Dados MeuBanco. O próximo passo em nossa tabela será criar um índice para o campo Código (clicod) e definir que o mesmo será o campo chave primária desta tabela. Para isso temos que acessar novamente a janela da estrutura da nossa tabela.

15.3 DEFININDO INDICE o índice na tabela será determinado para agilizar a performance do acesso durante uma determinada procura. Quando definimos um índice o Visual Basic faz uma ordenação lógica da tabela através de uma chave composta por um ou mais campos. Na necessidade de ordenar uma tabela por código para que a procura de um determinado dado digitado seja feita pelo código de maneira mais rápida, então o campo indexado da tabela será o código. Na necessidade de colocar uma relação de clientes em ordem alfabética pelo nome, então a indexação da tabela será pelo campo que possui o nome do cliente. No nosso exemplo da nossa tabela Clientes, durante a execução de um determinado aplicativo para controle de clientes, devemos ficar atentos para não cadastrar dois clientes com o mesmo código. Para esta verificação será indexado o campo Código (Clicod), pois se o código já existir o registro só poderá ser alterado e se o código não existir, poderá ser gravado o novo registro. Para definir um índice poderá também ser usado o Visual Data Manager através do Design da Tabela, onde será exibida novamente a estrutura da tabela que acabamos de criar. Para acessar novamente a estrutura da tabela clique com botão direito do mouse sobre a tabela Clientes e em seguida clique no Item Design...

Page 143: Apostila VB

Com a tabela em modo estrutura, selecione o campo Clicod e clique no

botão Add Index . Observe a seguir a utilização das propriedades de janela de indexação de campos da tabela:

� Name: Defina um nome para o índice. É através do nome definido aqui que ativaremos o índice em nosso aplicativo no Visual Basic. O nome do índice não precisa ser obrigatoriamente o nome do campo.

� Available Fields: Esta caixa de listagem exibe os campos que

definimos em nossa tabela contém. Dê um click no campo que deseja indexar. Executando esta operação, o nome do campo será exibido na caixa Indexed Fields. Desta maneira você saberá que o determinado campo está indexado.

� Unique: esta propriedade indica ao Visual Basic que a chave do

índice é exclusiva (única). Um índice chave ajuda a otimizar a procura por registros. Ele consiste de um ou mais campos que organizam unicamente todos os registros de uma tabela em uma ordem predefinida. Se o índice consiste de um campo, os valores desse campo precisam ser únicos. Se o índice consiste de mais de uma campo, valores duplicados podem ocorrer em cada

Page 144: Apostila VB

campo, mas cada combinação de valores de todos os campos indexados precisa ser única. Os campos que compõe a chave de índice não são necessariamente únicos.

� Primary: Determina que um objeto Index significa um índice

primário para uma tabela. Um índice primário consiste em um ou mais campos que identificam com exclusividade todos os registros de uma tabela em uma ordem predefinida. Como o índice do campo tem que ser exclusivo, a propriedade Unique do objeto Index é definida como True. Um índice primário consiste em uma chave para a tabela e geralmente contém os mesmos campos da chave primária.

Para a nossa tabela Clientes defina as seguintes propriedades de

indexação de campos: Nome do Índice: Cod Availabel Fields: Clique no campo CliCod Primary: Selecione a caixa de verificação Unique: Selecione também a caixa de verificação

Depois desta atualizações podemos clicar no botão OK e em seguida no botão Close. Feche o aplicativo Visual Data Manager (VisData), pois nossa tabela está pronta para ser utilizada. Ótimo! Neste capítulo aprendemos como criar um Banco de Dados utilizando o Visual Data Manager. No próximo capítulo utilizaremos o Access para criar esta mesmo tabela, e em seguida, iremos desenvolver o aplicativo voltado a Banco de Dados utilizando esta tabela de Clientes, OK? Então...Valeu novamente e até lá.

Page 145: Apostila VB

apítulo 16 16.1 BANCO DE DADOS NO ACCESS

O Banco de Dados criado no Visual Data Manager (capítulo anterior), é compatível com o Microsoft Access até a versão 97 do mesmo. Se você tentar abrir o arquivo MeuBanco.Mdb numa versão do Access superior á 97, o programa irá exibir uma mensagem perguntando se você deseja converter o Banco de Dados para a versão atual do Access ou abrir somente para modificações de registros e leitura do mesmo. Sem converter o Banco de Dados não poderão ser efetuadas alterações na estrutura da tabela. Fiz um teste com o Banco de Dados que criamos no VisData (MeuBanco). Tentei abri-lo no Microsoft Access XP e observe a mensagem que me retornou: Este comentário é valido pelo fato de, quando estiver desenvolvendo no Visual Basic um aplicativo voltado a Banco de Dados, terá de ser efetuado uma referencia com a biblioteca referente aos objetos DAO (Data Acces Objects) e a versão desta biblioteca deverá ser relativa a versão do Access em que o Banco de Dados foi desenvolvido. Se você converter o seu Banco de Dados para a versão atual do Microsoft Access de sua máquina poderá realizar alterações na estrutura das tabelas normalmente. Vamos ver então a criação da tabela Clientes utilizando agora o Microsoft Access. Em nosso aplicativo exemplo voltado a Banco de Dados será utilizado o Banco de Dados definido no Access, OK? Vamos lá então... Inicie o Access e informe o local onde será criado o Banco de Dados e nomeie o mesmo como: BaseDados. Observe a figura a seguir:

C

Page 146: Apostila VB

Clique no botão Criar para confirmar. Na janela a seguir de um Duplo Click na opção Criar tabela no modo estrutura. A próxima janela a ser exibida é onde você irá definir a estrutura da sua tabela, como os campos, tipo de dados, chave primária, índice. Os campos a serem definidos aqui são os mesmos campos da tabela que definimos no aplicativo VisData. Lembre-se!

Page 147: Apostila VB

Estamos fazendo os dois exemplos visto que, mesmo que você não tenha o Access instalado na sua máquina ,você poderá desenvolver um Banco de Dados utilizando o Visual Data Manager (VisData). Defina então a estrutura de Banco de dados conforme a seguir, informando o nome do campo e o tipo de dados que o mesmo irá conter.

Nome do Campo Tipo de Dados Tamanho do Campo Clicod AutoNumeração Inteiro Longo

CliNome Texto 35 Cliend Texto 40

CliBairro Texto 35 CliCid Texto 35 CliUF Texto 2 CliCep Texto 9 CliCpf Texto 14 CliRg Texto 15

CliFone Texto 16 CliCel Texto 16

Cliemail Texto 40 A estrutura da tabela no Access deverá ficar da seguinte maneira:

Page 148: Apostila VB

Defina a Chave primária para o campo CliCod. Para definir a chave primária aqui no Access, selecione o campo CliCod e em seguida clique no botão Chave Primária localizado na Barra de Ferramentas do Access. Depois disso falta definir o nome do índice para o campo Clicod, o qual será utilizado junto à programação no Visual Basic. Para acessar a janela de índices no Access, clique no botão Índices (ao lado da Chave Primária) localizado na Barra de Ferramentas do Access. Quando é definida a chave primária para um determinado campo no Access, automaticamente o campo se torna indexado e a duplicação de registros neste campo se torna não autorizada. O Access sugere o nome para o Índice como PrimaryKey, porem este nome pode ser alterado, assim como iremos fazer a seguir: Observe a janela de Índices: A janela de Índices exibe o Nome do índice como PrimaryKey. Altere o Nome do Índice para Cod. O Nome do campo deverá permanecer com o mesmo valor do campo indexado (CliCod). Quando utilizarmos o Nome do índice para indexação da tabela no Visual Basic este nome será Cód. Não esqueça disso. Feche a janela de índices e volte para a janela de estruturação da tabela. Agora falta Salvar a tabela. Clique no botão Salvar localizado na Barra de Ferramentas do Access e nomeie a tabela como: Clientes.

Page 149: Apostila VB

Depois de salvar a tabela, feche a janela de modo estrutura e observe que a tabela Clientes já figura no Banco de Dados BaseDados. Para executar alguma modificação na estrutura da tabela, selecione-a e

clique no botão Estrutura .

16.2 CONCEITOS DE ACESSO A DADOS o nosso próximo passo será em relação aos conceitos sobre como devemos proceder para criar o acesso a dados (Banco de Dados) a partir do Visual Basic. O Visual Basic oferece duas maneiras como forma de interação entre aplicações e o mecanismo Jet (no nosso caso o Access):

� O Controle Data: O controle Data faz parte da caixa de ferramentas padrão e pode ser inserido em formulários como qualquer outro controle. Seu papel é fazer intermediação entre a aplicação e um banco de dados de modo a automatizar tarefas comuns como inclusões, alterações, exclusões e navegação em meio à massa de registros.

� Objetos DAO: o modelo DAO é uma completa interface de programação que lhe dá total controle sobre o Banco de Dados.

O nosso objeto de estudo e de acesso a dados serão os Objetos DAO.

Page 150: Apostila VB

16.3 BIBLIOTECA DE ACESSO A DADOS (OBJETOS DAO) Um dos recursos mais notáveis do Visual Basic é a sua biblioteca de objetos de acesso a dados ou DAO (Data Access Objects). São objetos que você pode criar em tempo de execução para acessar dados tanto em arquivos de banco de dados, no nosso caso o Access - o banco de dados nativo do Visual Basic - como em outros tipos de banco de dados locais como dBase, Paradox e também acessar dados em bancos de dados cliente-servidor como o Microsoft SQL Server usando a tecnologia ODBC. Para poder ter acesso aos objetos DAO, no desenvolvimento de um aplicativo voltado a Banco de Dados, você terá que fazer uma referência a estes objetos pelo próprio Visual Basic. Para criar esta referencia faça o seguinte: Inicie um novo projeto no Visual Basic. A janela de referencias do projeto será exibida. Localize nesta a janela a seguinte biblioteca de objetos DAO: Microsoft DAO 3.6 Object Library Existem outras bibliotecas referentes aos objetos DAO relativas a versões anteriores, porem se você utilizou as versões do Microsoft Access a partir do 2000 para definição do seu Banco de Dados, obrigatoriamente deverá utilizar a versão 3.6 da biblioteca dos objetos DAO, senão os objetos DAO serão incompatíveis com a versão do Banco de Dados. Observe a figura a seguir:

1. Selecione o Menu Project 2. Clique na opção

References...

Page 151: Apostila VB

Depois disso, você poderá utilizar os objetos variáveis DAO para controle de acesso ao seu Banco de Dados criado com a extensão .Mdb (Access).

16.4 OS OBJETOS DAO A seguir veremos os conceitos sobre os objetos DAO que utilizaremos dentro do desenvolvimento do nosso aplicativo com suporte a Banco de Dados.

� DBENGINE: O objeto DBEngine se encontra no topo da hierarquia dos objetos DAO e corresponde ao dispositivo Microsoft Jet de acesso a dados. O objeto DBEngine é usado para ajustar os parâmetros do sistema de Banco de Dados utilizado pelo Visual Basic e para definir a área de trabalho padrão para o Banco de Dados definido.

� WORKSPACE: O objeto WorkSpace é definido logo após o objeto DBEngine. Este objeto será criado para definir a área de trabalho do seu Banco de Dados junto ao Microsoft Jet. Um objeto Workspace padrão - Workspaces(0) - é criado automaticamente na primeira referência a um objeto DAO pela aplicação.

� DATABASE: Este objeto irá representar o seu Banco de Dados dentro do aplicativo. Também é utilizado para permitir a abertura de objetos Recordset, que veremos a seguir.

Selecione a

biblioteca desejada e clique no botão

OK.

Page 152: Apostila VB

� RECORSET: Assim como o objeto DataBase representa o Banco de Dados no seu aplicativo, o objeto Recordset irá representar as suas tabelas no seu aplicativo.

Quando você utilizar o objeto Recordset para abertura de suas tabelas, deverá informar também em que nível as tabelas serão acessadas. As tabelas poderão ser acessadas através de 3 tipos de opção:

� DBOPENTABLE: Quando um objeto Recordset é aberto com esta opção, o controle sobre a tabela aberta será total, ou seja, o usuário terá acesso geral sobre as informações nesta tabela, como por exemplo: Gravação de Registro, Alteração de Registro, Exclusão de Registro, Navegação entre os Registros na tabela e até mesmo a Procura de um Registro .

� DBOPENDYNASET: Um recordset do tipo dynaset corresponde a uma tabela "virtual" resultante de uma consulta feita a uma ou mais tabelas. Quando alguma atualização for realizada no objeto Recordset com este modo de abertura todas as alterações realizadas se refletem imediatamente nas tabelas.

� DBOPENSNAPSHOT: Um objeto recordset aberto no modo snapshot é um conjunto estático de dados, similar ao dynaset porém não admite atualização, isto significa que a tabela do objeto aberta deste modo só poderá retornar valores de uma consulta.

� INDEX: Este objeto representa o índice associado a tabela no Banco de Dados. O Visual Basic utilizará este objeto para indexar a tabela declarada no objeto Recordeset para uma consulta ao campo relativo.

Existem outras coleções de objetos DAO, porem estes aqui comentados serão aqueles que utilizaremos para a manipulação de dados em nosso aplicativo.

A seguir veremos os Métodos de Abertura e Fechamento do Banco de Dados e de tabelas que utilizaremos em relação aos objetos que acabamos de ver.

� Método OPENDATABASE: O método OpenDataBase abre o Banco de Dados especificado, determinada por um objeto Workspace, e retorna uma referência a um objeto Database. A sintaxe da aplicação deste método é mostrada a seguir:

Set (ObjetoDataBase) = ObjetoWorkspace.OpenDatabase(nomeDoArquivo)

� Método OPENRECORDSET: O método OpenRecordset define um novo objeto Recordset, representando qualquer conjunto de dados extraídos de um banco de dados, ou seja, irá representar a

Page 153: Apostila VB

abertura da tabela definida em um objeto Recordset. Observe a sintaxe:

Set ObjetoRecordset = ObjetoDataBase.OpenRecordset(Tabela, opção de abertura)

� Método CLOSE: Este método fecha os objetos de acesso a Banco de Dados. Observe a sintaxe:

Objeto.Close � Método SEEK: Localiza um registro numa tabela indexada.

Aplicável somente a Recordset cuja abertura de tabela é do tipo OpenTable. Observe a sintaxe:

ObjetoRecordSet.Seek stringDeComparação, listaDeChaves

� Propriedade NOMATCH: Esta propriedade retorna um valor lógico informando se a operação de busca realizada em um objeto Recordset obteve sucesso ou não. Observe a sintaxe:

ObjetoRecordeset.Nomatch

16.5 NAVEGANDO NOS REGISTROS Muito Bem! Depois de saber como devemos proceder para começar a se comunicar com um Banco de Dados definido, iremos conhecer agora os métodos que podemos utilizar para navegar entre os registros existentes dentro de uma tabela. (Objeto Recordset) A localização de um registro específico é indispensável porque somente os campos do registro podem ser editados, a menos que utilizemos consultas de ação. Assim, métodos para saltarmos entre os registros de uma tabela (Recordset) são indispensáveis. Vamos ver então quais são estes métodos que o Microsoft Jet dispõe:

� Método MoveFirst: Este método faz com que se possa posicionar para o primeiro registro lógico de uma tabela (Recordset).

� Método MoveLast: Ao contrário do método acima o MoveLast se

posiciona no último registro lógico de uma tabela (Recordset).

� Método MoveNext: Se posicionar no próximo registro lógico de uma tabela (Recordset).

� MovePrevious: Se posicionar no registro lógico anterior de uma

tabela (Recordset).

Page 154: Apostila VB

Sempre que utilizarmos estes métodos será indispensável determinarmos os limites de um objeto Recordset, visto que um erro será gerado quando tentarmos fazer uma referência sem um registro corrente. Para evitar que um objeto Recordset vá se posicionar em um determinado registro e o mesmo não exista, devemos utilizar as seguintes propriedades: :

� Propriedade BOF: Begin OF file (começo de Arquivo). Esta propriedade irá determinar se foi atingido o início lógico de uma tabela do Banco de Dados (Recordset).

� Propriedade EOF: End Of file (Fim de Arquivo). Ao contrário do

BOF, esta propriedade irá determinar se foi atingido o término lógico de uma tabela do Banco de Dados (Recordset).

16.6 ATUALIZANDO DADOS Para poder navegar nos registros das tabelas de um Banco de Dados primeiramente será preciso gravar estes registros. Depois do registro atualizado na tabela você poderá alterá-lo, excluí-lo, consultá-lo, enfim todas as opções que a abertura do objeto Recordset proporciona. Para o gerenciamento das opções de registros contamos também com métodos que o Microsoft Jet proporciona. Observe a seguir estes métodos e a sua utilização:

� Método AddNew: Este método adicionar um novo registro para uma tabela (Recordset) e o aloca no buffer de edição para atualização.

� Método Edit: Este método copia o registro atual para um buffer

temporário para edição dos dados.

� Método Update: Este método é conseqüência do método AddNew e do Método Edit, ou seja, ele copia o conteúdo armazenado no buffer de edição para o registro corrente ou para o novo registro criado. É este método que realmente atualiza o registro na tabela (Recordset), seja ele novo ou um registro já existente.

Ufa!!! Realmente, desta vez foi informação pra caramba hein? Pelo menos estamos aptos a começar a mexer com Banco de Dados, não é mesmo? Então no próximo capitulo definiremos nosso aplicativo voltado a Banco de Dados e iniciaremos a codificação do mesmo, OK? Então até lá...

Page 155: Apostila VB

apítulo 17 17.1 DEFININDO PROJETO

Agora que você já possui conhecimentos sobre Banco de Dados e seus respectivos métodos de acesso, poderemos dar inicio a um projeto voltado a Banco de Dados. O nosso projeto fará referencia ao controle de Cadastro de Clientes. Utilizaremos o Banco de Dados definido no Access (capitulo anterior), cujo nome é BaseDados juntamente com a tabela com o nome Clientes. Inicie um novo projeto no Visual Basic e faça a referencia com a biblioteca dos objetos DAO 3.6 (Menu Project – References...)

17.2 CRIANDO A PRIMEIRA JANELA Depois de criar a referencia com os objetos DAO, vamos definir nossa primeira janela do projeto. Será a janela de apresentação do aplicativo, portanto esta janela deverá apresentar um visual “simpático”. Utilize o objeto FORM vazio que é carregado com o novo projeto do Visual Basic para definir a janela. Observe a figura a seguir: Formate o seu formulário e objetos da seguinte maneira: Formulário Name: FrmApresentação BackColor: Azul Escuro BorderStyle: 0 – None StartUpPosition: 2 -CenterScreen

C

Page 156: Apostila VB

Adicione um objeto Image e insira uma figura relativo ao tema Clientes e Contas a Receber, conforme mostrado na janela acima. Insira objetos Label para exibir as informações e defina a propriedade Name do Label com o título Carregando... como LblCarregando, pois ele será usado via programação. Você poderá formatar a sua janela de apresentação da maneira como você achar melhor. Só preste atenção para não assustar o usuário com uma janela muito “berrante”. Defina também a propriedade BackStyle dos objetos Label como: 0 – Transparent para utilizar a mesma cor de fundo do formulário. Adicione ao projeto um objeto Timer (só visível em tempo de projeto) e formate as seguintes propriedades: Name: Tmr1 Interval: 500 (Esta propriedade é relativa ao intervalo de tempo em milésimos de segundos). Muito bem! A idéia é a seguinte: Quando executar o aplicativo, essa janela será exibida anunciando o aplicativo de Controle de Clientes e Contas a Receber. Haverá uma programação no objeto Timer para simular o objeto Label Carregando. Vamos então a programação: Declare a variável a seguir na seção General - Declarations Atribua o valor 1 à variável no evento Load do form No evento Timer do objeto Timer, insira a programação a seguir:

Page 157: Apostila VB

Foi implementado uma condicional com um contador. Quando o valor da variável Contador for 3, esta janela será descarregada automaticamente e será carregada a próxima janela que será a janela principal do nosso aplicativo. Altere o nome do seu projeto (Menu Project – Properties) de Project1 para Controle e em seguida salve o seu projeto para garantir o que você já fez até agora. Salve-o em uma pasta separada para não misturar com outros projetos.

17.3 A JANELA PRINCIPAL A próxima janela a ser definida será a janela principal do nosso aplicativo, ou seja aquela que irá conter a Barra de Menu e também uma Barra de Ferramentas. Adicione ao projeto um formulário MDI Form (Menu Project – Add MDI Form) e formate conforme a seguir: Name: FrmMdiPrincipal Caption: Controle Administrativo de Clientes e Contas a Receber WindowState: 2 - Maximized Defina a Barra de Menu e Itens de Menu conforme exemplo a seguir: Defina também a Barra de Ferramentas para as seguintes opções de botões: Calculadora do Sistema Windows Explorer Clientes Contas a Receber Informações do Sistema Sair Tente criar os botões com figuras relativas as ações dos mesmos. Não esqueça de formatar as propriedades necessárias dos botões da Barra de Ferramentas (Key, ToolTipText, Image).

Page 158: Apostila VB

A sua Barra de Menu e a sua Barra de Ferramentas deverão ficar com a seguinte apresentação: Vamos efetuar as primeiras programações em nossa janela principal. Efetue a programação dos Itens do Menu Janelas conforme mostrado a seguir: A seguir será apresentada a programação para carregar a Calculadora do Sistema e o Windows Explorer através das opções do Menu Arquivo. Observe:

Calculadora

Page 159: Apostila VB

A função Shell é utilizada para carregar qualquer programa aplicativo (.Exe). Se os programas a serem carregados forem aplicativos do Sistema operacional, como é o caso da Calculadora e do Windows Explorer, então é só informar o nome o arquivo e a extensão .exe entre aspas. Se não for um programa do Sistema Operacional deverá ser informado o caminho completo do mesmo (C:\Pasta\Arquivo.exe). As constantes utilizadas (VbNormalfocus, VbMaximizedFocus) são para informar ao programa como as janelas dos arquivos serão carregadas. A programação para a opção Sair (Menu Arquivo) deverá ser executada da seguinte maneira: Quando o usuário clicar na opção Sair (inclusive no botão da Barra de Ferramentas ou no X da janela) o programa deverá exibir uma mensagem perguntando ao usuário se ele realmente deseja fechar o programa. Esta mensagem deverá ser programada no evento Unload do formulário principal (MDI Form), pois se o usuário fechar a janela utilizando o botão X não será exibida nenhuma mensagem. O evento Unload é o último evento a ser “LIDO” quando um formulário é fechado. Nas opções Sair (Menu e Botão) deverá ser utilizado o método que descarrega a janela atual: Unload Me. Observe e codifique o seu aplicativo conforme a seguir: Observe que a função MsgBox está dentro de uma condicional (If). Isto significa que e mensagem terá no mínimo 2 botões para que o usuário possa tomar uma decisão em relação a uma pergunta na mensagem. Na mensagem programada foi utilizada a constante VbYesNo para que os botões Sim e Não sejam exibidos juntamente com a mensagem. Se a resposta em relação a mensagem for clicar no botão Sim então o aplicativo será finalizado, senão, o a operação será cancelada através da propriedade Cancel com valor lógico 1 (True). Programe agora o evento Click da opção Sair (Menu Arquivo):

Windows Explorer

Page 160: Apostila VB

Faça os testes em seu aplicativo com as programações efetuadas até agora e salve o seu projeto. A seguir será apresentada a codificação dos botões da Barra de Ferramentas com as opções de programação existentes até agora: Preste bastante atenção para os valores informados após o Case. Este valor é relativo a propriedade Key dos botões da sua Barra de Ferramentas. Lembra-se disso?

17.4 A JANELA SOBRE A nossa próxima janela será aquela que exibe informações sobre o aplicativo desenvolvido, ou seja, a janela Sobre. Nesta janela você deverá informar todas as especificações do aplicativo, como por exemplo: Para que serve, a versão do mesmo, quem desenvolveu, informar que está protegido pelas leis de copyright e outras informações que você preferir. Vamos criar nossa janela então. Adicione ao projeto um novo fomrulário (Menu Project – Add Form) e formate o mesmo conforme a seguir: Name: FrmSobre BackColor: Branco Caption: Informações Sobre o Aplicativo Desabilite os botões Maximiza e Minimizar Centralize o formulário Crie um LayOut para o seu formulário Sobre mais ou menos conforme exibido a seguir:

Page 161: Apostila VB

No botão OK (FrmSobre) insira a codificação a seguir: Esta janela deverá ser carregada a partir do Item de Menu Informações do Aplicativo (Menu Sobre) e também a partir do botão da Barra de Ferramentas (Botão Sobre) – Janela Principal - . Deverá ser carregada como uma janela Modal. A programação a seguir é relativa à opção do Item de menu e deverá ser utilizada também no botão da Barra de Ferramentas. Muito Bem! Execute o seu aplicativo e faça os testes. Salve o seu projeto. No próximo capítulo iremos desenvolver a janela para o Controle de Clientes e programar as opções para acesso a Banco de Dados. Muita coisa nos aguarda. Até lá então....

Page 162: Apostila VB

apítulo 18 18.1 A JANELA DE CONTROLE DE CLIENTES

A janela para o Controle Cadastral de Clientes será uma janela MDI-filha e contará com vários objetos que farão o controle das informações. Adicione então ao projeto um novo formulário e formate conforme a seguir: Name: FrmClientes Caption: Controle de Informações de Clientes MdiChild = True WindowState: 2 – Maximized A janela de Clientes deverá ser carrega a partir da janela principal através da opção do Item de Menu Clientes (Menu Cadastro) e também a partir do botão Clientes na Barra de Ferramentas. A programação a seguir é relativa ao item de menu, podendo ser utilizada também para o botão na Barra de Ferramentas: Não esqueça de ir salvando o seu projeto. O LayOut desta janela deverá ser realizado com a mesma maximizada (em tempo de projeto), pois se trata de uma janela MDI-filha. Os campos que deverão constar no LayOut são os mesmo definidos na tabela Clientes do Banco de Dados BaseDados definido no Access.

Campos Código Nome

Endereço Bairro Cidade

U.F. C.E.P. C.P.F.

R.G. Telefone Fixo

Telefone Celular E-Mail

Lembra-se disso? Muito bem! O Banco de Dados utilizado será o mesmo que definimos no capítulo 16. Caso você perdeu aquele Banco de Dados, crie outro exatamente igual seguindo o exemplo do capitulo 16.

C

Page 163: Apostila VB

18.2 OBJETO MASKEDBOX O campo Código utilizará um objeto Label para exibir a informação. O campo U.F. (Estado) utilizará um Objeto ComboBox (Caixa de Combinação) para informar e exibir as informações dos Estados. Os campos: Nome, Endereço, Bairro, Cidade, R.G., Telefone Fixo, Telefone Celular e E-Mail utilizarão objetos TextBox para informar e exibir as informações. Para os campos C.E.P. e C.P.F. será utilizado um novo componente chamado MaskEdBox. O objeto MaskEditBox também é uma caixa de entrada como o objeto TextBox, porem podemos definir algumas propriedade que não existem no objeto TextBox, como por exemplo a propriedade Mask que nos dá a opção de definir uma Máscara de Entrada para um determinado campo. A definição da propriedade MáscaraDeEntrada consiste em caracteres literais (como espaços, pontos, traços e parênteses), juntamente com caracteres especiais, que determinam que tipo de valor pode ser inserido no espaço naquela posição. As máscaras de entrada são utilizadas principalmente nos campos Texto e Data/Hora, mas também podem ser utilizadas em campos Número ou Moeda. Adicione então o componente MaskedEdBox ao projeto. Selecione o Menu Project e em seguida clique no item Components... o componente que deverá ser marcado é o seguinte: Depois de inserir o novo componente, observe na caixa de objetos

(General) o objeto MaskEdBox . Este objeto é que será utilizado para os campos Cep e Cpf. Para definir a propriedade Name deste objeto será utilizada a nomenclatura inicial Msk. Salve o seu projeto e vamos em frente.

18.3 OJETO MSFLEXGRID Em nossa janela de Controle de Clientes também será utilizado o objeto MSFlexGrid o qual terá como finalidade, mostrar informações através de suas células. O objeto MSFlexGrid é um conjunto de linhas e colunas (em forma de Grid) utilizado para exibir informações. Para podermos utilizar este objeto em nosso projeto devemos, assim o objeto MaskEdBox, inserir o componente relativo a este objeto através do Menu Project – Components... Acesse então a janela de componentes e insira o seguinte componente ao projeto:

Page 164: Apostila VB

Observe o objeto MSFlexGrid na janela General do Visual Basic . A nomenclatura inicial para a propriedade Name deste objeto é Grd.

18.4 LAYOUT DA JANELA CONTROLE DE CLIENTES Os botões de controle da nossa janela de Clientes serão definidos através de uma Barra de Ferramentas. A Barra de Ferramentas desta janela deverá conter os seguintes botões : Gravar – Alterar – Excluir – Limpar – Anterior – Próximo - Consultar Observe a seguir a função de cada botão da Barra de Ferramentas:

Botão Ação Gravar Adiciona novo registro na tabela Alterar Atualiza informações de um

registro existente na tabela Excluir Apaga o registro corrente da

tabela

Limpar Limpa os objetos para adicionar um novo Registro

Anterior Move e exibe o registro anterior gravado na tabela

Próximo Move e exibe o próximo registro gravado na tabela

Consultar Executa a consulta de um determinado registro gravado na tabela

Tente adicionar figuras aos botões relativas as funções dos mesmos. Deixe sua Barra de Ferramentas conforme exibido a seguir:

Page 165: Apostila VB

Agora vamos adicionar no formulário os objetos relativos aos campos definidos na tabela (Banco de Dados). Observe a tabela a seguir:

Campo Objeto Nome Código Label LblCod Nome TextBox TXtNome

Endereço textBox TxtEnd Bairro TextBox TxtBairro Cidade textBox TxtCid

U.F ComboBox CboUf C.E.P. MaskEdBox MskCep

C.P.F. MaskEdBox MskCpf R.G. TextBox TxtRg

Telefone Fixo TextBox TxtFoneFixo Telefone Celular TextBox TxtFoneCel

E-Mail textBox TxtEMail

Insira também um objeto MSFlexGrid ao formulário e defina a propriedade Name como: GrdCli Não esqueça de maximizar o seu formulário para inserir os objetos. O LayOut da sua janela deverá ficar com a seguinte aparência.

Objeto MSFlexGrid Name: GrdCli FixedCols = 0

Page 166: Apostila VB

18.5 FORMATAÇÃO DOS OBJETOS – JANELA CLIENTES A seguir veremos a formatação dos objetos que foram inseridos no formulário. A propriedade Name dos objetos já foi definida na tabela exibida anteriormente. Preste atenção na formatação das outras propriedades:

� Objetos TextBox Text: Limpar o conteúdo da propriedade Text MaxLength: Definir com tamanho do campo criado na tabela de Clientes

� Objeto ComboBox List: Nesta propriedade você irá informar os estados que farão parte da lista da sua caixa de combinação. Informe os Estados abreviados, como por exemplo: PR, SP, SC, etc Style: 2 – DropdownList (Para o usuário não ter acesso às informações da caixa).

� Objetos MaskEdBox MaxLength: Definir com tamanho do campo criado na tabela de Clientes PromptChar: Selecionar a propriedade e pressionar a barra de espaço, assim o caractere utilizado como prompt será um espaço em branco e não o caractere _ (underline). Isto deverá ser feito para que possamos utilizar a rotina de limpeza dos objetos. PromptInclude: False (Para não gravar os caracteres literais da máscara de entrada na tabela do Banco de Dados). O caractere # definido na propriedade Mask referencia valores numéricos, ou seja, neste campo só será possível informar caracteres com valor numérico.

� Objeto grid A formatação do objeto Grid se encontra na figura anterior sobre o próprio objeto grid. Com todos os objetos formatados vamos em frente. O próximo passo agora é efetuar a abertura do nosso Banco de Dados cujo nome é: BaseDados. O arquivo do seu Banco de Dados (Mdb) deverá estar na mesma pasta que você salvou este projeto. Se por acaso não estiver, por favor, providencie. A linha de programação que iremos fazer para a abertura do Banco de Dados irá instanciar sempre o Banco de Dados na pasta

Vamos definir agora a propriedade Mask para os campos Cep e Cpf: Para o campo CEP defina a seguinte máscara: #####-## Para o campo CPF defina a seguinte máscara: ###.###.###-##

Page 167: Apostila VB

do projeto, ou do arquivo executável do mesmo. Se o Banco de Dados não estiver na mesma pasta do projeto, o programa irá gerar um erro, portanto verifique.

18.6 MÓDULOS Em primeiro lugar, só lembrando. Para trabalharmos com os objetos variáveis DAO (Banco de Dados) devemos primeiramente fazer referencia à biblioteca destes objetos (Menu Project – References...) Como visto anteriormente para poder trabalhar com o Banco de Dados precisamos ter declarado um objeto variável chamado Database e para trabalhar com as tabelas deste Banco de Dados precisamos ter declarado o objeto variável Recordset. Em nosso aplicativo estes objetos serão utilizados em vários lugares (eventos de objetos), portanto a declaração deste objetos variáveis deverão ser feitos em um local onde todo os objetos do projetos possam utilizá-los. Este local de declaração chama-se Módulo. Toda variável, procedimento, função declarada em um módulo poderão ser utilizadas em qualquer parte de um projeto. Para adicionar um módulo ao projeto faça o seguinte: Na janela a seguir é só clicar no botão Abrir. Um módulo nada mais é do que uma janela de codificação do Visual Basic, porem não tem a parte gráfica de um formulário. Observe na janela Explorer do Projeto que já consta uma pasta também para o módulo. Quando você sair do módulo e quiser retornar é só dar um duplo clique no arquivo do módulo nesta janela. Por falar em arquivo, o módulo também gera um arquivo

1. Selecione o Menu Project 2. Clique no Item Add Module

Page 168: Apostila VB

com a extensão .Bas. Quando você for salvar o seu projeto informe a mesma dos outros arquivos já salvos (projeto). Na janela de propriedades, defina a propriedade Name do módulo como: ModControle.

18.7 OBJETO DATABASE E ABERTURA DO BANCO DE DADOS Bom! A declaração do objeto variável Database será feita no módulo, para que a mesma possa ser usada em nível de projeto. A declaração de variáveis no módulo deverá ser feita utilizando a palavra reservada Public e não Dim como estávamos fazendo até agora. Efetue a declaração da variável no módulo conforme mostrado a seguir: O nome da variável do nosso objeto Database será Base. A abertura do Banco de Dados será deverá ser executada assim que for carregada a janela principal do nosso aplicativo. O primeiro evento a ser “LIDO” quando um formulário é executado é o evento Load, portanto vá até o evento Load do nosso formulário principal e insira a linha de codificação conforme exibido a seguir: Ai está a abertura do nosso Banco de Dados cujo nome é BaseDados. Observe os objetos DAO utilizados na abertura e o método de abertura do

A janela do Explorer do Projeto com as pastas: Forms e Modules

Page 169: Apostila VB

objeto Database. Todos os objetos e métodos que utilizaremos em nosso Banco de Dados e Tabelas foram estudados no capítulo 16. se você ainda tiver alguma dúvida, volte até lá e dê mais uma olhada. A parte da codificação onde foi utilizado as propriedade App.Path é para informar o caminho onde está localizado o Banco de Dadso BaseDados. O App.Path informa ao programa que o Banco de Dados se encontra na mesma pasta onde está sendo executado o aplicativo. Nesta linha de programação foi atribuído a variável Base (que é o objeto variável Database) o nosso Banco de Dados (BaseDados) definido no Access. Daqui pra frente dentro do aplicativo quem responde pelo Banco de Dados é a variável com o nome Base e não mais o Banco com o nome BaseDados. A partir do momento que o Banco de Dados é aberto (no nosso caso no Evento Load da janela principal), quando esta janela for fechada terá que ser feito o fechamento dele, pois senão seus dados podem perder a integridade corrompendo o Banco de Dados. Selecione então o evento Unload da janela principal e faça a seguinte alteração na programação já existente lá: O fechamento do Banco de Dados deverá ser feito antes do comando End. No próximo capítulo o assunto vai ser em relação a manipulação de dados, com abertura de tabela e programação de acesso a dados. Até lá então.

Page 170: Apostila VB

apítulo 19 19.1 OBJETO RECORDSET E ABERTURA DE TABELA

Depois de realizar a abertura do Banco de Dados podemos começar a trabalhar com a(s) tabela(s) existente(s) dentro do mesmo, iniciando pela abertura da tabela. A abertura da nossa Tabela de Clientes será feita quando a janela de Cadastro de Clientes for iniciado e o fechamento da tabela quando a janela de Cadastro de Clientes for descarregada (fechada). Primeiramente precisamos fazer a declaração de uma variável para o objeto variável Recordset, o qual representará a nossa tabela Clientes. A declaração desta variável será de nível de formulário, pois a cada formulário que se utilize tabelas, o correto é abrir a tabela relativa e fechá-la no próprio formulário que se está utilizando. Então faça o seguinte: No formulário de Cadastro de Clientes, abra a janela de codificação do Visual Basic e declare a variável a seguir na seção General – Declarations para o objeto Recordset. O nome da nossa variável para o objeto Recordset que representará a nossa tabela Clientes será Cli. Os nomes para as variáveis do objetos DAO segue a mesma regra para qualquer declaração de nomes de variáveis, como já vimos nos capítulos anteriores. Observe a palavra reservada Option Explicit. Se por acaso ela não figurar na seção General – Declarations das janelas de codificação, inclusive do Módulo, você poderá escrevê-la manualmente. A programação a seguir representará a Abertura da Tabela Clientes e deverá ser codificada no Evento Load da Janela de Cadastro de Clientes. Observe a programação. A tabela Clientes está sendo atribuída à variável Cli (Objeto Recordset). Quem faz a abertura do método OpenRecordset é a variável Base (Objeto Database) e o modo de abertura da tabela está sendo feito pelo DbOpenTable. Após a linha de programação da abertura da tabela, estamos indexando a tabela Clientes, já através da variável Cli (Recordset), através da propriedade Index. A tabela será indexada visto que, durante a programação,

C

Page 171: Apostila VB

será realizado uma consulta pelo código do cliente. O campo CliCod, na tabela de Clientes está indexado e o nome do índice é Cód, lembra-se disso? Todos estes assuntos vistos aqui também foram debatidos no capítulo 16. O fechamento da tabela deverá ser feito no Evento Unload desta mesma janela, conforme mostrado a seguir:

19.2 DEFININDO PROCEDIMENTOS PRÓPRIOS O próximo passo da nossa programação será definir os procedimentos que serão utilizados durante a programação. Estes procedimentos serão utilizados em locais distintos na programação dos nosso botões de controle. O primeiro procedimento a ser definido irá gerenciar, através de uma variável lógica (Boolean), se o código apresentado no objeto LblCod existe ou não na tabela Cli (Clientes). Se o código existir, ou seja, se for um registro recuperado da tabela, então o usuário só poderá alterar o registro, agora caso o código não exista (no caso um valor vazio para o LblCod), então o usuário poderá gravar um novo registro. Este procedimento irá gerenciar também os botões de controle Alterar e Excluir. Estes botões só poderão estar habilitados se o usuário retornar um registro da tabela, pois não podemos alterar nem remover um registro que não exista, não mesmo? ☺ Na secção General – Declarations desta janela declare uma nova variável com o nome NovoCli do tipo Boolean, conforme mostrado a seguir:

19.3 O PROCEDIMENTO LOCALIZACLI Em seguida crie um procedimento próprio privado com o Nome: LocalizaCli Se você esqueceu como define, ai vai a dica:

Page 172: Apostila VB

Acesse a janela de codificação do Visual Basic e em seguida selecione o Menu Tools e clique no Item Add Procedure... O procedimento deverá ser do tipo Sub e Private. Clique no botão OK e insira a codificação a seguir no procedimento LocalizaCli: Aqui estamos utilizando o método Seek para fazer uma procura na tabela de Clientes (Cli) referente ao valor do objeto LblCod. A seguir estamos testando, através da propriedade NoMatch, se o valor existente no objeto LblCod não foi encontrado. Se a resposta da condição for verdadeira então a variável Novocli assume o valor true e os botões alterar e Excluir cujo índices na Barra de Ferramentas é 2 e 4 assumem o valor da propriedade Enabled como False ou seja, ficam desabilitados. Caso a resposta da condição da propriedade NoMatch seja falsa, ou seja, existe na tabela o valor exibido no objeto LblCod, então as opções do Else passam a ser verdadeira. Para gravar um novo registro o valor da variável NovoCli deve ser verdadeira e para alterar um registro o valor da variável NovoCli deve ser Falso.

Page 173: Apostila VB

Este procedimento deverá ser executado em duas situações distintas deste formulário: A primeira situação é sempre que a janela de Cadastro de Clientes for iniciada, ou seja, no Evento Load da mesma. A outra situação é em relação ao objeto LblCod. Sempre que este objeto sofrer alguma mudança de valor o procedimento LocalizaCli também deverá ser executado. O evento responsável por esta situação é o Change (Mudança). Programe então o seu aplicativo conforme a seguir: Insira a linha de codificação a seguir no evento Change do objeto LblCod. Execute o seu aplicativo e veja o resultado disto. Quando você carregar a janela de Clientes os botões alterar e Excluir estarão desabilitados, pois não existe valor no objeto LblCod. Se aconteceu isto parabéns, você está no caminho certo. Salve o seu aplicativo...

19.4 O PROCEDIMENTO LIMPAOBJETOS O procedimento LimpaObjetos será utilizado sempre que houver necessidade dos objetos da janela de Clientes assumirem o valor inicial, ou seja, sem nenhum valor: Crie um novo procedimento próprio (Sub – Private) com o nome: LimpaObjetos e programe o mesmo conforme a seguir:

Page 174: Apostila VB

Repare que para efetuar a limpeza dos objetos Label, TextBox e MaskEdBox é só usar 2 caracteres aspas dupla sem espaço entre eles. Para limpar o objeto ComboBox também pode ser usado este mesmo método, porem, neste nosso caso, iremos retornar para a ComboBox o primeiro valor que consta na propriedade List definido quando formatamos os objetos. O valor 0 é o índice do primeiro valor existente na propriedade List de um objeto comboBox. Você pode usar a linha de codificação CboUf.Text = CboUf.List(0) no evento Load do formulário para que o objeto ComboBox exiba desde inicio o primeiro estado informado na propriedade List.

19.5 O PROCEDIMENTO GRAVACLI Este procedimento será o responsável em passar os valores informados nos objetos para os campos na tabela Clientes (Cli) em nosso Banco de Dados. Aqui vamos precisar lembrar dos nomes dos campos definidos na tabela no Access. Se você não lembrar dos nomes dos campos, abra o seu Banco de Dados no Access e verifique os nomes na tabela Clientes. A sintaxe de atribuição de valor para um campo na tabela é a seguinte: Tabela(”Campo”) = Valor Aqui Tabela é o objeto Recordset, no nosso caso Cli. Campo é o nome do campo definido na tabela Cliente no Banco de Dados no Access. Não há necessidade de coincidir letras maiúsculas e letras minúsculas neste caso. Valor é o objeto que contem a informação que será gravada na tabela.

Page 175: Apostila VB

Crie então um novo procedimento próprio (Sub – Private) com o nome: GravaCli e codifique conforme a seguir: Observe que neste procedimento não existe rotina de gravação para o campo Código do Cliente (CliCod), você sabe o porque? É que este campo é Autonumeração, ou seja, o próprio Banco de Dados insere um valor automaticamente quando qualquer outra informação do registro chega até a tabela. Outro detalhe é o uso das funções Ucase e Lcase. A primeira irá gravar os valores informados como letras maiúsculas e a segunda irá gravar o E-mail com letras minúsculas, indiferente de como sejam informados os valores nas caixas de texto. Vamos então ao nosso último procedimento próprio que iremos utilizar para a codificação da nossa janela de Cadastro de Clientes.

19.6 O PROCEDIMENTO CARREGACLI Este procedimento será responsável em mostrar as informações que foram gravadas na tabela nos objetos na janela. A sintaxe para recuperar uma informação gravada em uma tabela é ao contrário daquela para gravar informações na tabela. Observe: Valor = Tabela(”Campo”) A explicação desta sintaxe é a mesma do procedimento GravaCli. Crie então um novo procedimento próprio (Sub – Private) com o nome: CarregaCli e codifique conforme a seguir:

Page 176: Apostila VB

Observe que agora o campo Código do Cliente (Clicod) figura nesta programação. É o retorno do Código do Cliente que definirá a condição do procedimento LocalizaCli. É por este motivo a codificação do procedimento LocalizaCli no Evento Change do objeto Label LblCod. Com todos os procedimentos codificados, agora é só programar os botões de controle da nossa Barra de Ferramentas. No próximo capítulo começaremos a codificação pelo botão Gravar, para fazer logo o teste do nosso aplicativo voltado a Banco de Dados. Contenha a ansiedade e até lá então.

Page 177: Apostila VB

apítulo 20 20.1 GRAVANDO NA TABELA

No capitulo anterior definimos todos os procedimentos que utilizaremos para programar os botões de controle da nossa Barra de Ferramentas. Somente o botão Consultar ainda não será programado, pois iremos precisar de um outro formulário para fazer a consulta de registros. Vamos então efetuar a programação do botão Gravar da Barra de Ferramentas. Muito Bem! A rotina da programação para gravação de registro começa logo após o Case “Gravar”. Primeiro é verificado o valor da variável NovoCli, pois para gravar um novo registro o valor desta variável deve ser True. Em seguida é verificado os valores dos campos: Nome, endereço, Bairro, Cidade e Cpf, pois para gravar o registro é obrigatório o preenchimento no mínimo destes campos. Depois das condicionais o método AddNew é atribuído ao Recordset Cli Este método é utilizado para Adicionar um novo registro à Tabela. O procedimento próprio GravaCli é utilizado logo em seguida para o programa saber os valores que terão que ser gravados na tabela. Em seguida é atribuído o método Update ao Recordset Cli. Este método é utilizado para atualizar os valores armazenados em Buffer pelo método AddNew na tabela. Logo após atualizar os registros, foi usado o procedimento LimpaObjetos para limpar os valores informados nos objetos e o foco é enviado para a caixa de texto TxtNome.

C

Page 178: Apostila VB

Salve o seu aplicativo e faça o teste informando os valores pedido nos objetos e clicando no botão Gravar. Para ter certeza que o registro foi gravado, abra o seu Banco de Dados no Access e veja se as informações que você forneceu nos objetos estão gravadas na tabela Cliente. Grave no mínimo 3 registros na tabela para programar os botões Anterior e Próximo.

20.2 MOVIMENTANDO REGISTRO Os botões Anterior e Próximo da Barra de Ferramentas irão mostrar nos objetos da janela os registros existentes, que foram gravados, na Tabela de Clientes. Primeiramente vamos programar o botão Anterior. Observe a programação e atualize a programação da sua Barra de Ferramentas conforme a seguir : Aqui o primeiro teste feito foi em relação a verificação de registros na tabela. A propriedade RecordCount verifica a contagem de registros na tabela. Se o RecordCount for igual a 0, ou seja, se não houver nenhum registro na tabela o usuário será avisado através de uma mensagem. Caso tenha registro usamos o método MovePrevious para mostrar o registro anterior da tabela de Clientes. Outro teste necessário aqui é a verificação do Começo do Arquivo através da propriedade BOF. Utilizando o método MovePrevious, quando não houver mais registro para mostrar, ou seja, está no primeiro registro da tabela o programa irá gerar um erro, pois acima do primeiro registro não existe mais nada na tabela. Por este motivo é testado o começo do arquivo com a propriedade BOF. Caso isto aconteça será exibida uma mensagem ao usuário

Page 179: Apostila VB

informado o Começo do Arquivo e mostrando o primeiro registro da tabela através do método MoveFirst. Depois das condicionais é carregado o procedimento CarregaCli, o qual retorna para os objetos da janela os valores dos campos da tabela. A programação do botão Próximo é parecida com a do botão Anterior. Atualize a programação da Barra de Ferramentas com a codificação do botão Próximo: A lógica de programação utilizada aqui é a mesma do botão Anterior. O que muda aqui são os métodos e as propriedades testadas. Observe: No lugar do método MovePrevious foi utilizado o método MoveNext. (Próximo Registro) No lugar da propriedade BOF foi utilizada a propriedade EOF. (Fim De Arquivo) No lugar do método MoveFirst foi utilizado o método MoveLast (Último Registro). Observe que quando você recupera um registro através do botões Anterior ou Próximo, os botões Alterar e Excluir ficam habilitados. Isto significa que depois de programados você poderá alterar ou excluir o registro corrente. Salve o seu aplicativo e faça os testes.

20.3 LIMPANDO OBJETOS O botão para Limpeza dos Objetos irá funcionar como um gerador de novo registro. Observe a programação do botão Limpar.

Page 180: Apostila VB

Antes de fazer a limpeza dos objetos é exibida a mensagem para confirmação da execução do procedimento LimpaObjetos. Se a resposta for positiva os objetos assumirão seus valores iniciais e o foco passa para o objeto TxtNome.

20.4 EXCLUINDO REGISTRO Esta opção do aplicativo deverá ter uma atenção especial. Em relação a exclusão de arquivos, estamos acostumados com o Sistema Operacional Windows que nos dá a opção de enviar o arquivo “deletado” para a lixeira onde posteriormente, podemos restaurá-lo. Esta opção do aplicativo não oferece este recurso, ou seja, a partir do momento que você excluir um registro da tabela o mesmo não poderá mais ser recuperado. É tchau mesmo... Para evitar um possível erro do usuário, o botão Excluir irá exibir uma mensagem explicativa informando sobre a ação que ele estará efetuando. Observe então a programação a seguir:

Page 181: Apostila VB

A função MsgBox utilizada aqui traz novidades. Lembra-se da função Chr vista no capítulo 8? Aqui ela é utilizada para retorna um valor da tabela Ascii pelo valor 10. Aqui o valor 10 irá retornar uma quebra de linha. Também foi utilizada a constante vbDefaultButton2 a qual deixa o botão 2 da mensagem (Não) com o foco. Isto foi utilizado para que se o usuário tenha uma segurança maior na execução da ação de exclusão de registro. E o método que exclui o registro da tabela é o Delete, o qual aqui é atribuído ao objeto Recordset Cli.

20.5 ALTERANDO DE REGISTRO A rotina para a alteração de registro é praticamente igual à de gravação de um novo registro. As alterações que deverão ser feitas são as seguintes: O valor da variável NovoCli deverá ser testado como False e em vez de utilizar o método AddNew será utilizado o método Edit. Para alterar um registro você terá que primeiro recuperar um registro através dos botões Anterior ou Próximo. Em seguida altere alguma informação do registro, como por exemplo o nome, o endereço ou qualquer outro campo. Depois é só clicar no botão Alterar. Codifique então o seu botão Alterar. Salve o seu aplicativo e execute os testes. Tudo funcionando? Muito Bem!

Page 182: Apostila VB

O nosso próximo no aplicativo será em relação ao objeto MsFlexGrid. Este objeto será utilizado para mostrar 4 campos importantes de cada cliente gravado na tabela de Clientes em nosso Banco de Dados. Os campos serão: O Código, o Nome e o telefone Fixo e o telefone Celular. A primeira programação que faremos em relação ao objeto MSFlexGrid será a configuração do mesmo, ou seja, definir a quantidade de colunas e o tamanho das colunas que ele terá inicialmente. A quantidade de linhas será determinada pela quantidade de registros que a tabela de clientes terá. Será utilizada uma consulta em linguagem SQL para determinar, através de um laço de repetição, que todos os clientes existentes na tabela Clientes em nosso Banco de Dados deverão ser exibidos nas linhas do objeto MSFlexGrid (somente os campos comentados anteriormente). Para configurar o Grid, crie um procedimento próprio com o nome: ConfigGrid do tipo Sub – Private e codifique conforme a seguir: Um pouquinho complicado? Depois da explicação você verá que é bem simples. Primeiro passo é conhecer as propriedades utilizadas: Col = Referente à coluna do objeto MSFlexGrid cujo nome é GrdCli Cols = Referente às colunas do objeto MSFlexGrid Row = Referente à linha do objeto MSFlexGrid Rows = Referente às linhas do objeto MSFlexGrid ColWidth = referente ao comprimento da coluna do objeto MSFlexGrid Conhecendo estas propriedades vai ficar fácil você entender a programação do procedimento ConfigGrid. Na primeira linha da programação foi definido que o Grid terá 4 colunas

Page 183: Apostila VB

Em seguida é passado o comprimento que cada coluna terá através da propriedade ColWidth. A primeira coluna e a primeira linha de um Grid terá sempre o índice 0. Depois disso o programa se posiciona na linha 0 do Grid (Row = 0) para começar a informar o cabeçalho do Grid, ou seja, as informações que aparecerão na primeira linha do Grid. Em seguida é informado que para a coluna 0 o cabeçalho será: Código (GrdCli.text = Código) e assim para as colunas 1, 2 e 3. Nada de complicação não é mesmo? A formatação do Grid deverá ser executada assim que a janela de Cadastro de Clientes for carregada. Atualize então a programação do evento Load do formulário conforme mostrado a seguir: Execute o seu aplicativo e veja o resultado da configuração do objeto MSFlexGrid. No próximo capítulo veremos a consulta em SQL para retornar os valores da tabela de Clientes para o objeto Grid OK? Então até lá.

Page 184: Apostila VB

apítulo 21 21.1 CONSULTAS EM SQL

A seguir será focado um assunto super importante dentro das linguagens de programação voltadas a Banco de Dados Relacionais: a linguagem de consultas SQL (Structure Query Language). Na moderna terminologia de Banco de Dados, cada questionamento que fazemos ao aplicativo podemos chamar de consulta. Seja para saber o nome de um cliente, o telefone do cliente, as compras de um cliente, enfim, tudo aquilo que queremos saber em relação às informações existentes dentro de nossas tabelas do nosso Banco de Dados. O retorno que obtemos de uma consulta é uma visão de uma tabela. A diferença de uma visão de uma tabela e de uma tabela propriamente dita é que a tabela está embutida na estrutura do Banco de Dados, ao passo que uma visão é uma maneira de olhar as informações que pode envolver várias tabelas. A linguagem comum para fazer consultas em um Banco de Dados Relacional é chamada de SQL (Structured Query Language) ou Linguagem de Consulta Estruturada. Quando uma consulta é realizada, o mecanismo de Banco de Dados Jet retorna temporariamente uma nova grade (visão) armazenada na memória da máquina. No Visual Basic o objeto responsável pela criação destas informações temporárias é o Recordset. A linguagem SQL consiste em instruções para selecionar registros de tabelas de acordo com o critério que você irá fornecer. Ela é composta de comandos e cláusulas que são usados para especificar campos de tabelas, filtros de valores, junções de tabelas, etc... Os comandos SELECT, FROM e as cláusulas WHERE, ORDER BY são alguns dos exemplos que podem ser usados para definição de uma consulta em SQL. Por convenção, as instruções em SQL são escritas todas em letras maiúsculas, embora isto não seja necessário pois irão funcionar normalmente também com letras minúsculas..

21.2 DECLARANDO UMA CONSULTA EM SQL A declaração mínima para você poder criar uma consulta em SQL é a seguinte: SELECT <campos> FROM <tabela> A partir desta declaração já podemos retornar informações de uma tabela. No exemplo acima, a Instrução SELECT irá selecionar os campos da tabela que farão parte da consulta e a cláusula FROM indicará de qual tabela são os campos informados. É como dizer a seguinte frase: SELECIONE OS CAMPOS DE TAL TABELA

C

Page 185: Apostila VB

Para ordenar a consulta por um determinado campo selecionado a partir da instrução SELECT você poderá usar a cláusula FROM. Por exemplo: temos os campos código e nome selecionados para a consulta. Se você desejar que o campo nome seja ordenado por ordem alfabética é só utilizá-lo após a cláusula FROM. Vamos simular uma consulta SQL onde os campos Código e Nome serão retornados de uma tabela com o nome Clientes e o campo Nome será ordenado. Observe a seguir: SELECT Código, Nome FROM Clientes ORDER BY Nome Observe que os nomes dos campos são separados por , (vírgula) Os nomes dos campos informados na instrução SELECT devem ser os mesmos nomes definidos nos campos da tabela criada no Banco de Dados e o nome tabela deverá ser o mesmo nome da tabela atribuído no Banco de Dados. Outro detalhe é o seguinte: Se você for ocupar todos os campos de uma tabela para uma definir uma consulta não haverá necessidade de informar o nome de todos eles na instrução SELECT. Basta você utilizar o caractere * (asterisco) à frente da instrução SELECT que ele irá representar todos os campos da tabela informada após a cláusula FROM. Utilizando o mesmo exemplo anterior, observe como ficaria a definição da consulta utilizando o * (asterisco): SELECT * FROM Clientes ORDER BY Nome Creio que utilizando estes conhecimentos sobre consulta em SQL poderemos crier a nossa consulta para exibir os registros da tabela Clientes no objeto MSFLexGrid. Vamos então até o projeto Controle de Clientes e programar. O primeiro passo é definir um objeto Recordset na seção General – Declarations do formulário de Cadastro de Clientes. O objeto Recordset que será declarado é que irá retornar o resultado da nossa consulta e o nome dele será ConsultaCli. Atualize então a seção General – Declarations conforme a seguir: Em seguida iremos programar nossa Consulta SQL e as rotinas do Laço de repetição que irá exibir no objeto Grid as informações da tabela Clientes. Para trabalhar com as Linhas do objeto Grid será necessário criar uma variável do tipo Inteira. Esta variável é que irá receber o valor da quantidade de registros existentes na tabela Clientes.

Page 186: Apostila VB

No formulário de Contas a receber também iremos trabalhar com o objeto MSFlexGrid, isto significa que iremos precisar desta variável lá também, portanto, a declaração desta variável será de nível de projeto (no módulo). Vamos declará-la com o nome Linha. Atualize então a codificação do seu Módulo conforme a seguir: Volte para o formulário de Cadastro de Clientese crie um procedimento próprio com o nome: AtualizaGrid e programe o mesmo conforme a seguir: Na primeira linha de codificação é definida a consulta SQL. A consulta foi atribuída ao objeto Recordset ConsultaCli. Repare que o modo de abertura da consulta é parecido com o modo de abertura de uma tabela. Em nossa consulta estamos selecionando (SELECT) os campos: CliCod, CliNome, cliFone e CliCel e informamos que os mesmos são da tabela (FROM) Clientes e que a consulta será ordenada (ORDER BY) pelo campo CliNome. Observe que o tipo de abertura do objeto Recordset ConsultaCli não é do modo DbOpenTable e sim do modo DbOpenSnapshot, ou seja, o objeto Recordset ConsultaCli será aberto somente para leitura (Consulta).

Page 187: Apostila VB

O próximo passo do nosso procedimento é verificar se o resultado da nossa consulta terá algum registro através da propriedade RecordCount. Se não houver registro na tabela de clientes a rotina da programação irá deixaro boejto MSFlexGrid com o valor inicial, conforme definido no procedimento próprio ConfigGrid. Se o resultado da consulta retornar registros (Else) então a rotina da programação será a seguinte: O ponteiro de registro da consulta se posicionará no ultimo registro através do método MoveLast. Será atribuído a propriedade Rows (Linhas) do Grid a quantidade de registros da consulta através da propriedade RecordCount + 1 (+ 1 devido a alinha do cabeçalho do Grid). O ponteiro de registro da consulta se posiciona no primeiro registro. A variável Linhas recebe o valor 1, pois o primeiro registro será exibido na linha 1 do Grid e não na linha 0, por causa do cabeçalho. É iniciado o Laço de repetição Do While (Faça Enquanto). A condição passado ao laço é que a mesma deve ser repetida enquanto o resultado da consulta não for EOF (fim de Arquivo). A propriedade Row (Linha) do Grid recebe o valor da variável Linhas que neste momento é 1. Os registro resultantes da consulta são armazenados nas colunas 0, 1, 2, e 3 do Grid relativas aos campos: CliCod, CliNome, CliFone e CliCel. A variável Linhas recebe o valor dela mesma + 1 e em seguida o ponteiro de registro se move para o próximo registro da consulta (MoveNext). O programa executa o LOOP para testar novamente a condição do Laço de Repetição. Se a condição do Laço for Falsa, o programa não executa mais o Laço de Repetição e n última linha de codificação a consulta é fechada (Close). Quando a janela de Cadastro de Clientes for carregada, este procedimento da consulta (ConsultaCli) deverá ser executado, portanto atualize o Evento Load do seu formulário de Clientes conforme mostrado a seguir: Só um detalhe.

Page 188: Apostila VB

A procedimento AtualizaGrid deverá ser executado depois do procedimento ConfigGrid, pois o objeto MSFlexGrid deverá estar configurado para que os registros possam ser exibidos no mesmo (ISTO É LÓGICA). Execute o seu aplicativo e faça o teste.

21.3 ATUALIZANDO REGISTROS DO GRID O procedimento AtualizaGrid, utilizado para a criação da consulta SQL e para retornar os registros da tabela Clientes par ao objeto Grid poderá ser utilizado também para outra situação. Se você quiser atualizar imediatamente no Grid um novo registro adicionado na tabela de Clientes poderá utilizá-lo juntamente com a rotina do botão Gravar. É só acrescentar o procedimento AtualizaGrid após a linha onde é utilizado o método Update (Cli.Update). Poderá ser utilizado também quando for executado uma alteração em algum registro (botão Alterar). Assim que você alterar algum registro (em relação ao campos Nome, fone Fixo ou Fone Celular) o mesmo será atualizado no objeto Grid. Para isto é só acrescentar o procedimento AtualizaGrid após a linha onde é utilizado o método Update (Cli.Update). Outra opção é no botão Excluir. Assim que o registro for excluído da tabela ele deixará de ser exibido no Grid. Basta acrescentar o procedimento AtualizaGrid após a linha onde é utilizado o método Delete(Cli.Delete). Observe a seguir a programação dos botões Gravar, Alterar e Excluir com a atualização do procedimento AtualizaGrid:

BOTÃO GRAVAR

Page 189: Apostila VB

21.4 O EVENTO DBLCLICK Você poderá utilizar também o objeto Grid para executar uma pesquisa de um determinado registro. Por exemplo: o objeto está exibindo todos os registros existentes na tabela de Clientes, certo? Então! Poderá ser programado o evento Dblclick (Duplo click) do objeto MSFlexGrid para que quando seja dado um duplo click com o mouse sobre um determinado registro no Grid, todas as informações deste registro serão exibidas nos objetos da janela (Código, Nome, endereço, etc...). Vamos programar esta rotina então? Acesse o evento DblClick do objeto MsFlexGrid e insira as seguintes linhas de codificação:

BOTÃO ALTERAR

BOTÃO EXCLUIR

Page 190: Apostila VB

Certifique-se que você programou realmente o evento Dblclick do objeto Grid. A programação aqui é bem simples. Primeiro foi testado se o conteúdo clicado no objeto Grid é diferente de vazio. Em seguida é referenciada a coluna 0 do grid para a pesquisa seja feita pelo código do cliente (Coluna 0). O método Seek e aplicado em seguida para procurar na tabela de Clientes o conteúdo (grdCli.Text) existente na coluna 0 do Grid, indiferente da linha que for duplamente clicado. Simples não é mesmo? Faça os testes no seu aplicativo e verifique se está tudo funcionando da maneira como deve estar. No próximo capítulo trataremos o assunto relativo à Consulta de Clientes. Até lá então...

Page 191: Apostila VB

apítulo 22 22.1 A JANELA CONSULTA DE CLIENTES

O último passo na janela de Cadastro de Clientes é realizar a rotina para consulta de registros da tabela Clientes. Para isso teremos que adicionar ao projeto um novo formulário que irá conter a programação para a realização da consulta. Adicione um novo formulário ao projeto e configure conforme exibido a seguir: Formulário Name: FrmConsultacli Caption: Consulta de Clientes Desabilitar botões Maximizar e Minimizar Centralizar o Formulário Frame Name: FraCli Caption: Informe as iniciais do cliente a ser consultado TextBox Name: TxtIniciais Text: Apagar o valor da propriedade CommandButton Name: CmdOk Caption: &OK Este formulário deverá ser “carregado” a partir do botão consultar da janela de Cadastro de Clientes como uma janela Modal. Programe então conforme a seguir:

C

Page 192: Apostila VB

O funcionamento da janela de consulta de clientes será da seguinte maneira: Deverá ser criada uma consulta SQL utilizando a cláusula WHERE para FILTRAR o valor informado na Caixa de Texto (TxtIniciais) com o campo CliNome da tabela de Clientes. Se a consulta retornar algum registro com o valor informado, então será apresentado no Objeto MSFlexGrid (GrdCli) da janela de Controle de Clientes o registro consultado. Caso não haja nenhum registro (Nome) com o valor informado na Caixa de Texto (TxtIniciais) então será exibida uma mensagem informando que não existe registro com o valor informado; O que deve ficar bem claro é que os registros resultantes da consulta serão exibidos no Grid da Janela de Clientes, OK? Ótimo! Então vamos lá... Na janela de Consulta de Clientes defina as seguintes variáveis na seção General – Declarations. A variável ConsultaIniciais será o objeto Recordset da consulta. As variáveis Sql1, Sql2 e Sql3 serão utilizadas para a montagem da consulta, pois como serão passados mais parâmetros para definição da consulta SQL, a mesma ficará com um tamanho maior que a consulta realizada anteriormente, desta maneira iremos dividi-la em 3 partes.

Page 193: Apostila VB

22.2 CLÁUSULA WHERE E OPERADOR LIKE Continuando a programação da janela de Consulta de Clientes crie um procedimento próprio com o nome: FiltraGrid. O procedimento deverá ser do tipo Sub – Private. Codifique o procedimento conforme a seguir: Esta consulta SQL já traz outras opções para a consulta. Como já comentado anteriormente, ela está dividida em três partes, sendo as partes armazenadas nas variáveis Sql1, Sql2 e Sql3. Vamos então a explicação: A variável Sql1 armazena os campos e a tabela origem dos campos A variável Sql2 vai armazenar o filtro da nossa consulta. Foi utilizada a cláusula WHERE e o operador LIKE para passar ao programa uma situação de busca de dados na tabela consultada. A cláusula WHERE está passando ao programa uma situação de comparação de valores utilizando o campo CliNome e o operador LIKE faz a união do valor que deve ser comparado ao campo CliNome, que neste caso é a Caixa de Texto TxtIniciais. As aspas simples e duplas utilizadas juntamente com os operadores matemáticas + (mais) e o caractere * (asterisco), fazem parte da programação para a utilização do operador LIKE. A utilização do caractere-curinga * (asterisco) faz com que

Page 194: Apostila VB

sejam retornados, ou comparados, valores zero, 1 ou mais caracteres (strings). Por exemplo: se você informar a letra A como a letra inicial da consulta, todos os nomes coma letra inicial A serão mostrados no Grid da Janela de Cadastro de Clientes. Os operadores matemáticos + são utilizados para concatenação de valores. A variável Sql3 armazena a ordem do resultado da consulta. Um detalhe muito importante. Observe na programação a linha referente à cláusula FROM. Repare que após o nome da tabela (Clientes) foi dado um espaço para fechar as aspas duplas. (Clientes “). Este espaço deve ser dado para que o programa não interprete o caractere “ (aspas duplas) como parte do nome da tabela. Se isto acontecer o programa irá gerar um erro informando erro de sintaxe na cláusula FROM. Na linha de abertura da consulta são concatenadas as variáveis Sql1 + Sql2 + Sql3 e a consulta é aberta no modo de consulta (dbOpenSnapshot). As linhas seguintes da programação do procedimento FiltraGrid são as mesmas já vistas na consulta SQL criada anteriormente no capítulo 21, porem, existe uma diferença que o objeto MSFlexGrid (GrdCli) faz parte de outro formulário (FrmClientes) e não deste (FrmConsultaCli), por este motivo é referenciado o fomrulário FrmClientes juntamente com o objeto Grid GrdCli (FrmClientes.GrdCli). Para completar a programação do formulário faça o seguinte: No botão de Comando OK utilize o comando Unload me para programá-lo, da maneira como émostrado: O procedimento FiltraGrid deverá ser executado quando o usuário informar qualquer valor na caixa de texto Txtiniciais. Esta ação está relacionada ao evento Change. Vá então até o evento Change do objeto TxtIniciais e programe conforme a seguir: Execute agora o seu aplicativo e faça o teste da Consulta de Clientes. E assim o formulário de Cadastro de Clientes está programado e pronto para ser usado. O próximo passo é criar um formulário que possa fazer o controle de Contas a Receber dos clientes cadastrados em seu Banco de Dados. Vamos lá então?

Page 195: Apostila VB

22.3 DEFININDO A TABELA DE CONTAS A RECEBER O primeiro passo para desenvolver o formulário de Controle de Contas a Receber será definir a nossa tabela no Banco de Dados com os campos que serão utilizados. Esta tabela será definida no mesmo Banco de Dados da tabela Clientes, portanto abra o seu Banco de Dados BaseDados e defina a estrutura da tabela conforme a tabela a seguir mostra:

Nome do Campo Tipo de Dados Tamanho do Campo CrCod AutoNumeração Inteiro Longo

CrClicod Número Inteiro Longo CrDoc Texto 25 CrDesc Texto 35

CrDataMovto Data/Hora CrValorMovto Moeda CrDataVencto Data/Hora CrDataPagto Data/Hora CrValorPagto Moeda

CrObs Memorando Defina Chave Primária para o Campo CrCod. Defina o Nome do Índice do campo CrCod como Cód. Salve sua Tabela com o nome: CReceber Se você tiver alguma dúvida sobre a criação de tabelas no Access, volte até o capítulo 16 e de uma olhada para relembrar. Depois de criar a tabela você poderá fechar o Access. Os campos na tabela CReceber serão utilizados para as seguintes funções:

Campo CrCod – Responsável pelo código da movimentação CrClicod – Responsável pelo código do cliente da movimentação CrDoc – Número de um documento relativo à movimentação da conta CrDesc – Descrição do tipo da movimentação CrDataMovto – Data do movimento da Conta a Receber CrValorMovto – Valor do movimento da Conta a Receber CrDataVencto – Data de vencimento da Conta CrDataPagto – Data do pagamento da Conta CrValorPagto – Valor do pagamento da Conta CrObs – Observações em relação à movimentação da Conta a Receber

Os campos Data de Vencimento, Data de Pagamento e Valor de Pagamento deverão ser preenchidos somente quando a Conta for paga. Para fazer isto o usuário terá que pesquisar a Conta do Cliente e fazer uma Alteração no registro gravado anteriormente. Mas lógico que isto você só poderá testar depois que programar o seu Controle de Contas a Receber. Nosso próximo passo será o LayOut do formulário de Contas a Receber.

Page 196: Apostila VB

22.4 FORMULÁRIO DE CONTAS A RECEBER Adicione ao projeto um novo formulário e formate-o conforme a seguir: Formulário Name: FrmCr Caption: Controle de Movimentação de Contas a Receber MdiChild: True WindowState: 2 - Maximized Este formulário também será uma janela MDI-filha, portanto deverá ser definido o LayOut do mesmo com o formulário maximizado (em tempo de projeto). O formulário deverá conter uma Barra de Ferramentas com os seguintes Botões de Controle: Gravar Alterar Limpar Consultar Agora vamos adicionar ao formulário os objetos relativos aos campos definidos na tabela CReceber (Banco de Dados). Observe a tabela a seguir:

Campo Objeto Nome Código Label LblCod

Código do Cliente ComboBox CboCli Documento textBox TxtDoc Descrição TextBox TxtDesc

Data da Movimentação TextBox TxtDataMov Valor da Movimentação textBox TxtValorMov

Data de Vencimento TextBox TxtDataVenc Data de Pagamento textBox TxtDataPag Valor do Pagamento TextBox TxtValorPag

Observações TextBox TxtObs

Botões de Controle da Barra de Ferramentas do Controle de Contas a Receber

Page 197: Apostila VB

Insira também um objeto MSFlexGrid ao formulário e defina a propriedade Name como: GrdCr As formatações dos objetos utilizados neste formulário já são de grande conhecimento seu, portanto, formate os mesmos para iniciar a programação. Para o objeto TextBox do campo observação, formate também as seguintes propriedades: MultiLine: True ScrollBars: 2 – Vertical Estas propriedades farão com que a caixa de texto assuma uma barra de rolagem vertical e você poderá digitar texto em vários linhas dentro do objeto. A formatação do seu formulário de Controle de Movimentação de Contas a Pagar deverá ficar com o seguinte LayOut: Com a formatação do formulário e dos objetos definida, partiremos para a programação. A lógica que será aplicada na programação do Controle de Contas a Receber, será a mesma aplicada no Controle de Clientes. No próximo capítulo começaremos pela codificação dos procedimentos próprios. Vá se preparando e até lá então.

A formulário de Movimentação de Contas a Receber

Page 198: Apostila VB

apítulo 23 23.1 OBJETO RECORSET - CONTAS A RECEBER

A janela de Controle de Contas a Receber deverá ser carregada a partir do Item de Menu Contas a Receber (Menu Movimentação) e do botão Contas a Receber da Barra de Ferramentas da Janela Principal do nosso Aplicativo (Mdi-Form). Antes de iniciar a programação dos procedimentos iremos definir as variáveis que serão utilizadas na Janela de Contas a Receber. Declare as variáveis a seguir na seção General – Declarations. Com a variável do objeto Recordset declarada (Cr), já podemos fazer a abertura da tabela e a indexação da mesma no evento Load do formulário. Codifique conforme a seguir: A seguir será exibida a programação do evento Unload do formulário, onde será efetuado o fechamento do objeto Recordset. Observe:

C

Page 199: Apostila VB

23.2 PROCEDIMENTO LOCALIZACR

Muito Bem! Com a programação do objeto Recordset (Cr) já efetuada podemos partir para a criação dos procedimentos próprios. A ordem de criação dos procedimentos será a mesma que fizemos na janela de Cadastro de Clientes. Primeiro vamos definir o procedimento LocalizaCr. Crie então um procedimento próprio com o nome LocalizaCr (Sub – Private), e programe conforme a seguir. Na janela de Contas a Receber não temos o botão Excluir na Barra de Ferramentas, portanto o procedimento LocalizaCr se referencia somente à variável NovaConta e ao botão Localizar (item 2). Este procedimento deverá ser executado no evento Load do Formulário, e no evento change do objeto Label do Código da Movimentação de Contas a Receber conforme mostrado a seguir:

Page 200: Apostila VB

23.3 PROCEDIMENTO LIMPOBJETOS

Como no formulário de Controle de Clientes, este procedimento irá devolver aos objetos seus valores iniciais, ou seja, limpar o conteúdo dos objetos e desta maneira poder gerar uma nova Movimentação de Contas a Receber. Crie o procedimento LimpaObjetos (Sub – Private) e codifique o mesmo conforme a seguir:

23.4 PROCEDIMENTO GRAVACR Crie um procedimento próprio com o nome GravaCr e programe conforme a seguir (Sub – Private): Observe que neste procedimento não figuram os campos relativos à Data de Pagamento e valor de Pagamento. Estes campos serão tratados de maneira diferente, pois só poderão ser preenchidos, se o registro já tiver sido gravado. Outro detalhe nesta programação é o uso da função Left (para o objeto ComboBox). Bem a explicação é a seguinte: A utilização do objeto ComboBox nesta janela será exibir os registros dos clientes gravados na tabela

Page 201: Apostila VB

Clientes. Serão mostrados o Código do Cliente e também o Nome do Cliente. Da seguinte maneira: 1 - Joaquim José É aqui que entra a função Left. Na tabela de Contas a Receber no Banco de Dados será gravado somente o código do cliente, portanto precisamos “extrair” do objeto ComboBox somente o Código do Cliente. A programação Left(Cbocli.Text, 5) informa que será retirado somente os 5 primeiros caracteres à esquerda (Left) do objeto ComboBox.

23.5 PROCEDIMENTO CARREGACR Crie também o procedimento CarregaCr (Sub – Private) e defina a programação conforme a seguir: Foi utilizado a função Format para os campos do tipo moeda, para que os registros recuperados da tabela de Contas a Receber possam ser exibidos de uma maneira melhor. Foi aplicado uma condicional nos campos Data de Pagamento e Valor de Pagamento para que os mesmo sejam exibidos somente se eles tiverem valor na Tabela. A recuperação do Código do cliente e do Nome do Cliente, para o objeto ComboBox, se dá em cima do campo CrCodCli (Tabela CReceber) e da coluna 1 do objeto Grid. Este procedimento será utilizado quando for programado o evento Dblclick do mesmo.

Page 202: Apostila VB

23.6 PROCEDIMENTO CARREGACOMBO A janela de Controle de Contas a Receber contem o objeto ComboBox no qual serão exibidos os campos Código do Clientes e Nome do Cliente. Estes campos pertencem à tabela de Clientes e serão exibidos no objeto através de uma consulta SQL. Para executar esta rotina será criado um novo procedimento próprio para que nossa programação fique bem “enxuta”. Defina então um novo procedimento próprio e nomeie o mesmo como: CarregaCombo (Sub – Private) e programe-o conforme a seguir: Este procedimento deverá ser executado assim que a janela de Controle de Contas a Receber for carregada, portanto, acesse o evento Load do formulário e codifique da seguinte maneira:

Page 203: Apostila VB

23.7 PROCEDIMENTO CONFIGGRID O próximo procedimento a ser definido será o que vai formatar a configuração do objeto MSFlexGrid. Os campos que será controlados no Grid serão: O Código da Movimentação, o Nome do clientes, A Data de Movimento, O Valor do Movimento, A Data de vencimento, A Data do Pagamento e o Valor do Pagamento. O total de colunas do Grid será de 7. Vamos então ao procedimento. Crie um novo procedimento próprio (Sub – Private) com o nome ConfigGrid e programe conforme mostrado a seguir: Execute este procedimento no evento Load do formulário:

Page 204: Apostila VB

Estes procedimentos serão utilizados para a programação do Botões de Controle da Barra de Ferramentas. No próximo capítulo iremos programar o acesso a dados do Controle de Movimentação de Contas a Receber, bem como a Consulta das Contas.

Page 205: Apostila VB

apítulo 24 24.1 CONTAS A RECEBER – BOTÃO GRAVAR

A gravação de registro da movimentação de Contas a Receber será efetuada com alguns testes relativos principalmente ao campo Data/Hora da tabela, pois estes campos,a partir do momento que recebem um valor, exigem que este valor seja uma data válida, ou seja, o objeto que informará a data deverá estar condicionado a isto. Vamos programar então. Acesse o evento buttonclick do objeto toolBar (Barra de Ferramentas), e codifique o mesmo conforme mostrado a seguir: Observe os testes de condicionais desta programação. Utiliza-se a função IsDate para verificar se o conteúdo das Caixas de Textos referentes a datas são realmente datas válidas. Outro detalhe é o teste para verificação se a data de movimento será maior ou igual a data vencimento, pois não podemos receber uma conta com data inferior a movimentação da conta.

C

Page 206: Apostila VB

Execute o teste no seu aplicativo. Faça primeiramente os testes para verificar se as condicionais estão funcionando e depois Grave um Registro na Tabela. Não esqueça de Salvar o seu Aplicativo, OK?

24.2 CONTAS A RECEBER - BOTÃO LIMPA OBJETOS Como já visto no Controle de Clientes, alem deste botão tornar os objetos com seus valores iniciais, também é usado para poder gerar um novo registro. A programação do mesmo é bem simples. Observe a seguir:

24.3 CONTAR A RECEBER – BOTÃO ALTERAR o botão Alterar também tem algumas novidades. Os campos Data de Pagamento e Valor de Pagamento terão seus valores atualizado somente nesta rotina de gravação, pois somente de gravar uma movimentação de conta é que poderá ser feito o “pagamento” da conta. Vamos programar o botão Alterar e em seguida será comentado mais sobre a codificação, OK? Observe a programação:

Page 207: Apostila VB

Os primeiros testes condicionais são os mesmos do botão Gravar, porem existe outras condições para poder editar o registro recuperado. O registro poderá ser recuperado somente para alteração dos campos já gravados, ou seja, sem atualizar a Data de Pagamento e o Valor do Pagamento, por este motivo é que foi utilizado duas vezes o método Edit e Update. No primeiro uso dos métodos Edit e Update estamos condicionando o programa para que atualize os valores de Data de Pagamento e Valor de Pagamento se os valores dos mesmos forem válidos e se o valor da data for uma Data Válida. E na segunda vez que os métodos Edit e Update são usados estamos utilizando o procedimento GravaCr, ou seja, para atualizar os campos que já foram gravados na tabela de Contas a Receber. Faça o teste no seu aplicativo e vamos em frente...

24.4 ATUALIZANDO O GRID O próximo passo será programar uma consulta que retorne os valores gravados na Tabela de Contas a Receber e exiba os mesmos no objeto Grid.

Page 208: Apostila VB

Para executar esta rotina primeiramente vamos criar um novo procedimento com o nome: ConsultaGrid (Private – Sub) Crie o procedimento e programe conforme mostrado a seguir:

Page 209: Apostila VB

Procedimento parecido com o que foi criado no Controle de Clientes. São definidas duas variáveis do tipo Recordset para serem utilizadas nesta consulta. O Recordset ConsultaCr foi definido para armazenar o resultado da Consulta SQL e o objeto Recordset Cli foi definido para executar uma consulta pelo método Seek na tabela de Clientes, pois na tabela de Contas a Receber é gravado somente o código do clientes. Como o nome do cliente será exibido no objeto Grid foi feita uma pesquisa na tabela de Clientes pelo valor existente no campo CrClicod da tabela de Contas a Receber, retornando assim para a segunda colina do Grid o nome do Cliente. Este procedimento deverá ser executado também quando a janela de Contas a Receber for carregada. Acesse o evento Load do formulário e atualize conforme é mostrado a seguir: Teste o seu aplicativo. Depois do objeto ser atualizado com os registros da tabela de Contas a Receber e clientes, vamos programar o evento Dblclick do Grid. Este evento responderá ao duplo clique do mouse sobre algum registro existente no Grid, executando uma pesquisa e carregando as informações nos objetos do formulário. Observe a programação e codifique o seu aplicativo: Faça os testes da programação.

Page 210: Apostila VB

24.5 CONTAS A RECEBER - CONSULTA Para criar a consulta de Movimentação de Contas a Receber, adicione um novo formulário ao projeto e formate da maneira conforme a seguir: Formulário Name: FrmConsultaCr Caption: Consulta de Movimentação de Contas a Receber Desabilitar os botões Maximizar e Minimizar Centralizar o formulário. Frame Name: FraConsulta Caption: Informe a Data de Vencimento a ser Consultada TextBox Name: TxtIniciais Text: Limpar o Conteúdo da Propriedade Commandbutton Name: cmdOk Caption: &OK MSFlexGrid Name: GrdCr FixedCols: 0 A imagem a seguir exibe como deve ficar o LayOut do seu formulário de consulta de Contas a Receber.

Page 211: Apostila VB

A programação que será utilizada no botão OK será para descarregar o formulário de consulta quando o mesmo for clicado. Programe conforme a seguir: Neste formulário será desenvolvida uma consulta SQL para filtrar uma Data de Vencimento informada. O objeto Grid exibirá os campos: Código da Movimentação, Data de Vencimento, Código do Clientes, Nome do cliente e Valor do Movimento e mais uma vez lembrando, o valor informado para a consulta deverá ser a Data de Vencimento.OK? Então não esqueça disso e até o próximo capítulo.

Page 212: Apostila VB

apítulo 25 25.1 PROGRAMANDO A CONSULTA DE CONTAS A RECEBER

A janela de Consulta de Movimentação de Contas a Receber deverá ser carregada pelo botão Consultar da Barra de Ferramentas da Janela de Movimentação de Contas a Receber. O primeiro passo para a programação da consulta será definir os procedimentos próprios que vamos utilizar no formulário de Consulta de Contas a Receber. Crie então um procedimento próprio com o nome: ConfigGrid e programe conforme a seguir: Este procedimento deverá ser executado assim que a janela de Consulta de Contas a Receber for executada. Acesse então o evento Load do formulário e programe. Muito bem! O Grid já está configurado. Na seqüência vamos criar o procedimento que irá exibir em ordem de Clientes os registros existentes na tabela de Contas a Receber.

C

Page 213: Apostila VB

Crie então um procedimento com o nome: CarregaGrid e programe o mesmo conforme a seguir:

Page 214: Apostila VB

A programação deste procedimento é a mesma do procedimento CarregaGrid da janela de Controle de Contas a Receber, porem com alguns campos diferenciados para o Grid. Execute este procedimento no evento Load do formulário de Consultas de Contas a Receber, conforme a seguir: Execute a sua janela de Consulta e veja o resultado.

25.2 FILTRANDO A CONSULTA A seguir vamos programar a consulta que irá realizar o filtro da nossa consulta. Quando for informado uma data de vencimento na caixa de texto (TxtIniciais), a consulta deverá filtrar da tabela de Contas a Receber somente as datas coincidentes com o valor informado. Caso não exista Data de Vencimento com o valor informado, será exibido uma mensagem ao usuário informando. Vamos então definir a consulta. Para isto crie um procedimento próprio com o nome: FiltraGrid e programe conforme a seguir:

Page 215: Apostila VB
Page 216: Apostila VB

Esta consulta já utiliza a cláusula WHERE e o operador LIKE para que possa ser comparado o valor que será informado na Caixa de Texto (TxtIniciais) com o valor do campo da Tabela CReceber (Cr) CrDataVencto. Também foi utilizado a consulta de Filtro de Registro na Janela de Cadastro de Clientes. Lembra-se? Muito bem! Para fazer o teste da filtragem da Data de Vencimento insira este procedimento no evento Change do objeto Caixa de Texto (TxtInciais), pois cada vez que for informado um valor na Caixa de Texto a consulta deverá ser executada. Codifique então conforme a seguir: Ótimo! Agora, faça o teste no seu aplicativo.

25.3 CARREGANDO REGISTRO DA CONSULTA A programação a seguir será no evento DblClick do Grid da janela de Consulta de Contas a Receber. Depois de filtrar o registro desejado, vamos dar a opção ao usuário de dar um duplo clique sobre o determinado registro e carregar as informações relativo a ele nos objetos da janela de Controle de Contas a Pagar. Dessa maneira o usuário poderá visualizar todas as informações do registro e se for o caso, fazer alguma alteração do registro, como por exemplo, informar a Data de Pagamento e o Valor do Pagamento, caso a Conta a Receber não tiver sido paga ainda. Para isso vamos declarar uma variável do tipo Recordset para a abertura da tabela de Contas a Receber, pois é nela que vamos fazer a pesquisa. Na seção General – Declarations do formulário de Consulta de Contas a receber declare a seguinte variável:

A seguir vamos definir um procedimento que será responsável pelos objetos do formulário de Contas a Receber. Para fazer relação com os objetos do formulário de Contas a Receber primeiramente terá que ser fazer referencia ao próprio formulário (FrmCr).

Page 217: Apostila VB

Crie então um procedimento próprio com o nome: CarregaConsulta e programe conforme a seguir: Observe na programação que os objetos pertencem a outro formulário (FrmCr) e não a este, portanto estamos informando primeiro o nome do formulário e depois o nome do objeto. Agora é só programar o evento Dblclick do objeto Grid (FrdCr) da janela de Consulta de Contas a Receber. Vamos lá então...Programe conforme a seguir: A abertura e fechamento da tabela de Contas a Receber é feita aqui mesmo no evento DblClick do objeto, não havendo assim a necessidade da abertura no evento Load do formulário. Agora é só fazer os testes. Espero que todas as informações e exemplos passados tenham sido de grande valia e possam servir como ponto inicial no conhecimento da linguagem de programação VISUAL BASIC. Valeu.