ADO
Ling. de Programação Prof.: Renata Rocha
MICROSOFT VISUAL BASIC 1. A APLICAÇÃO TRADICIONAL E A APLICAÇÃO ORIENTADA A OBJETOS E DIRIGIDA A EVENTOS Em uma aplicação tradicional ou programada de forma procedural, a aplicação por si só controla que porções do código serão executadas. A execução começa na primeira linha de código e segue um caminho pré-definido através de toda a aplicação, chamando subrotinas conforme for sendo necessário. Em uma aplicação controlada por eventos ou event-driven, uma ação do usuário ou do sistema ativa um procedimento associado a este evento. Assim a ordem através do qual o seu Código de programa é executado depende de quais eventos ocorram. Estes eventos dependem das ações tomadas pelo usuário.
2. OBJETOS, MÉTODOS E EVENTOS Objetos são coisas definidas por CLASSES e que possuem Propriedades, Métodos e Eventos. Uma janela, um botão e um banco de dados são objetos. Mas para entender bem o que é um objeto ainda é preciso definir propriedades, métodos e eventos. Comecemos pelas Classes. Uma janela é muito diferente de um botão, mas os dois são objetos. Isso acontece porque eles são definidos por Classes diferentes. Classes definem um objeto a grosso modo. Definem suas propriedades, seus métodos e seus eventos. Classes são os moldes dos objetos. Um botão pode ser diferente do outro (maior ou menor, com uma legenda diferente...). Mas como isso é possível se eles pertencem à mesma classe? Porque suas propriedades são diferentes. As propriedades definem características mais específicas dos objetos. Um botão tem, por exemplo, propriedades que determinam sua altura, sua largura e sua legenda. Um método é uma ação que age sobre um objeto. Por exemplo, se tivermos uma lista, adicionamos ou removemos itens através de métodos. Ou ainda, se quiséssemos mover um certo objeto pela tela, poderíamos usar um método. Por fim, o evento. Digamos que em um certo programa, pressionamos um botão e um Beep é emitido. Como o programa sabe quando apertamos o botão? Ele sabe porque quando um objeto da classe botão é clicado, é gerado um evento. E é a esse evento que está associado o código (comandos) que produzirá o Beep. Ocorrem também eventos, por exemplo, ao modificarmos o texto de uma caixa de texto ou ao mover o cursor do mouse sobre uma janela. Para ficar mais claro, um exemplo não muito nobre: digamos que haja uma classe "Galinha". Um objeto Galinha poderia ter a propriedade "Idade", uma propriedade "CorDasPenas" e uma propriedade "Nome". Ela teria um método "PoeOvo" e um método "Cacareja". E ela geraria eventos ao dormir ao acordar e ao ser ameaçada.
3. AMBIENTE DE PROGRAMAÇÃO DO VISUAL BASIC
Note que a janela Properties tem, logo abaixo da barra de título, uma "caixa de seleção" dizendo "Form1 Form". Esta caixa lista todos os objetos colocados na janela ativa. O texto em negrito "Form1" indica o nome do objeto. O texto ao lado, "Form", indica a classe à qual pertence o objeto. Logo abaixo há a lista das propriedades. À esquerda ficam os nomes das propriedades e a direita os seus respectivos valores.
4. PRINCIPAIS CONTROLES DO VB CommandButton (Botão de Comando) – É um dos Controles mais utilizados em programas do Windows, não apenas em VB. Sua função principal é executar comandos quando clicado. O Evento Click é o mais importante para ele. As Propriedades Caption, Name, Enabled são importantes entre outras. A propriedade Enabled indica se o botão responderá ao Evento Click ou não. PictureBox (Caixa de Imagem) - Este Controle é utilizado para exibir figuras nos Formulários e também responde ao Evento Click. A propriedade Picture é a que abre a caixa de diálogo para indicarmos o path do ícone ou da figura que queremos exibir.
Label (Etiqueta ou Rótulo) – Exibir um texto onde o usuário não possa alterar. Sua propriedade principal é a Caption (que é o texto que o Controle exibirá). Outras Propriedades de formatação do texto: FontName, FontBold, Alignment, etc. TextBox (Caixa de Texto) – Exibir um texto onde o usuário possa editar. Sua propriedade principal é o Text (que é o texto que o Controle contem). As Propriedades de formatação do texto são idênticas ao Label. CheckBox (Caixa de Verificação) – Útil quando necessitamos informar ao sistema que determinadas informações são verdadeiras ou falsas. Em um mesmo Formulário vários CheckBoxs podem assumir o valor verdadeiro ao mesmo tempo. Algumas Propriedades: Visible, Enabled e Caption. OptionButton (Botão de Opção ou botão de rádio) – Com este Controle somente uma das opções pode assumir o valor verdadeiro em um mesmo conjunto. Para Ter mais de um conjunto verdadeiro temos que utilizar o Controle Frame. ListBox (Caixa de Listagem) – Exibir e selecionar uma lista de itens. As Propriedades ListCount e ListIndex são utilizadas para identificar os itens da lista. Os Métodos AddItem e RemoveItem são utilizados para adicionar e remover itens. ComboBox (Caixa de Combinação) – Combinação de uma TextBox com uma ListBox. Pode-se editar um texto na parte superior ou selecionar um item da lista. Propriedades idênticas as da ListBox. ScrollBar (Barra de Rolagem) Vertical e Horizontal - Estes controles assumem valos máximos ou mínimos de acordo com as propriedades Max e Min, respectivamente. Estes controles podem receber um deslocamento pequeno (propriedade SmallChange), que ocorre quando se clica nas setas e um deslocamento grande (propriedade LangeChange), que ocorre quando se clica na barra. O controle recebe o valor da posição atual. Timer (Temporizador) – Útil para se controlar intervalos de tempo. Evento mais importante é o Timer e a propriedade mais importante é o Interval (que determina em milisegundos o intervalo de tempo d controle). Shape (Formas Geométricas) – Adiciona figuras geométricas aos Formulários. Com a Propriedade Shape escolhemos o tipo de figura (forma). Outras Propriedades BorderColor, BorderStyle e BackColor. Line (Linha) – Adicionar linhas geométricas a formulários. Propriedades BorderColor, BorderWidth, BorderStyle, X1, X2, Y1 e Y2.
Image (Imagem) – Exibe ícones ou figuras e também responde ao Evento Click. Diferentemente do Controle Picture este controle tem a Propriedade Stretch que ajusta o tamanho da imagem para preencher a moldura. Adodc (ADO Data Control) – Conecta-se a um Banco de Dados para extrair e manipular informações deste BD. DataList – Automaticamente preenche uma lista com campos de um ADO Data Control.
DataCombo – É similar ao DataList, mas permite editar o campo selecionado.
DataGrid – Exibe e manipula uma série de linhas e colunas representando Registros e Campos de um objeto Recordset. OLE – Incorpora objetos de outros aplicativos em um formulário.
5. PROPRIEDADES GERAIS As principais propriedades dos objetos do Visual BASIC, que estão presentes em praticamente todos os objetos, são as seguintes: -
Caption - Nos botões, form, e frames, altera o título a ser exibido.
-
Enabled - Presente em todos os objetos, permite que os objetos sejam acessados, caso ela esteja definida como True. Esta propriedade habilita ou desabilita o objeto.
-
Visible - Torna o objeto invisível caso esta propriedade esteja definida como False.
-
Font - Presente em objetos como textbox, label, botões command e botões check e option. Permite que seja alterada a fonte de um objeto.
-
Name - Altera o nome do objeto, para fins de referência durante a programação.
-
Forecolor, Backcolor - define a cor da fonte e do fundo de um textbox, um label, ou outro objeto.
6. PROPRIEDADES DO FORMULÁRIO -
-
Height - altura do formulário Weight - largura do formulário Maxbutton - ativa ou desativa a presença do botão Maximizar Minbutton - ativa ou desativa presença do botão Minimizar Left - altera a distância do formulário a partir da extrema esquerda do vídeo Top - altera a distância do formulário a partir do topo do vídeo
7. EVENTOS MAIS COMUNS O Visual BASIC apresenta alguns eventos que são usados freqüentemente, e se apresentam na maior parte dos objetos. Abaixo segue uma relação dos principais e suas respectivas funções. -
Click: É um evento que executa determinadas ações especificadas pelo programador quando alguém clica sobre o objeto.
-
Dblclick: Executa determinadas ações especificadas pelo programador quando alguém clica duas vezes sobre algum objeto.
-
Load: executa ações sempre que um formulário for carregado na memória.
-
Gotfocus: quando um objeto, um botão por exemplo, apenas ganha o foco.
-
Lostfocus: quando o foco passa para um outro objeto. Quando um objeto perde o foco.
-
Keypress: quando é pressionada alguma tecla, geralmente em caixas de texto, são acionados determinados comandos.
-
Mousemove: sempre que se move o ponteiro do mouse, algo será ativado.
8. VARIÁVEIS Variáveis são áreas de memória utilizadas para armazenar dados temporariamente. Digamos que você queira fazer uma Calculadora. Os números serão armazenados em variáveis. Uma variável é identificada por um nome. Este nome deve obedecer às seguintes regras: - Não pode haver repetição de nomes. - O nome deve começar com uma letra. - O nome não pode conter espaços, pontos, vírgulas e outros caracteres do tipo !, $, %. - Deve ter, no máximo, 255 caracteres.
Tipos de variáveis: Data type Byte Boolean Integer Long (long integer) Single (single-precision floating-point)
Storage size 1 byte 2 bytes 2 bytes 4 bytes 4 bytes
Double (double-precision floating-point)
8 bytes
Currency (scaled integer)
8 bytes
Decimal
14bytes
Date Object String (variable-length)
8 bytes 4 bytes 10 bytes + string length Length of string 16 bytes
String (fixed-length) Variant (with numbers) Variant (with characters)
22 bytes + string length
Range 0 to 255 True or False -32,768 to 32,767 -2,147,483,648 to 2,147,483,647 -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values -1.79769313486232E308 to 4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values -922,337,203,685,477.5808 to 922,337,203,685,477.5807 +/-79,228,162,514,264,337,593,543,950,335 c/ no decimal point; +/7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is +/0.0000000000000000000000000001 January 1, 100 to December 31, 9999 Any Object reference 0 to approximately 2 billion
1 to approximately 65,400 Any numeric value up to the range of a Double Same range as for variable-length String
Declaração de variáveis: Dim x as String Dim matriz(9, 9) As Integer Obs.: Quando você não declara uma variável, ela é considerada do tipo Variant. Note que este tipo ocupa pelo menos 16 bytes de memória, bem mais que os outros. Mas, será que faz muita diferença gastar 2, 4, 8 ou 16 bytes da memória? Hoje os computadores têm “muita” memória. Tudo bem, em programas pequenos isto não será uma diferença crucial, mas em um programa maior, com centenas de variáveis, isto pode fazer a diferença. Além disto, devemos lembrar que o Windows pode trabalhar com vários programas abertos ao mesmo tempo; e se seu programa for "gordo" poderá atrapalhar a
performance dos outros. Além disto, quanto menos memória ocupa um certo tipo de dado, mais rapidamente ele é processado. Por isso, procure sempre usar o "menor" tipo de dado possível. Mas lembre-se: se você ultrapassar o limite da variável acontecerá um erro. (Exemplo: tente criar uma variável do tipo Byte e atribua a ela um valor maior que 255).
Conversão de tipos de variáveis Função Cbool Cbyte Ccur Cdate CDbl Cint CLng CSng CStr Cvar CVErr
Descrição Converte seu argumento para Boolean Converte seu argumento para Byte Converte seu argumento para Currency Converte seu argumento para Date Converte seu argumento para Double Converte seu argumento para Integer Converte seu argumento para Long Converte seu argumento para Single Converte seu argumento para String Converte seu argumento para Variant Converte seu argumento para Error
9. INSTRUÇÕES DE FLUXO DE CONTROLE E INSTRUÇÕES LOOP If ... Then ... End If
If ... Then ... Else ... End If
Select Case … End Select
Select Case … Case Else … End Select
Do ... Loop
(Do While – Do Until)
For ... Next
(Step)
While ... Wend
10. A INSTRUÇÃO EXIT A instrução Exit permite que você saia prematuramente de um bloco de instruções em uma estrutura de controle de um loop. Exemplo: x = 0 Do While x < 10 If Vetor(x) < 0 Then Exit Do Vetor(x) = Sqr(Vetor(x)) x = x + 1 Loop
11. UTILIZANDO MAIS DE UM FORMULÁRIO A adição de novos formulários na sua aplicação é feita através do menu Project, comando Add Form.
12. CONECTANDO FORMULÁRIOS Comando Load form Form.Show [Modal]
Unload form
Ação Carrega o formulário, mas o deixa invisível. Mostra o formulário se ele estiver invisível. Se ele não estiver carregado, então ele primeiro carrega o formulário e depois o mostra. Modal define se o formulário que fez a carga fica parado até a desativação do novo formulário (1), ou se continua a sua execução sem se importar com o próximo formulário (0). Exemplos: Form1.Show (0) Form1.Show (1) O formulário é descarregado da memória e a sua execução é encerrada.
13. FORMULÁRIOS MDI Para criar um formulário MDI, clique sobre o menu Project e escolha a opção Add MDI Form. Um projeto do VB só pode possuir um formulário MDI. Para que os outros formulários sejam abertos dentro do MDI, a propriedade MDIChild de cada um deles deve ser definida como True.
14. FORMULÁRIOS SPLASH O formulário Splash é aquela tela que aparece logo ao iniciar a aplicação e desaparece em seguida, como se fosse uma tela de abertura/apresentação. Para criar um formulário Splash, clique sobre o menu Project > Add Form e escolha a opção Splash Screen.
Em seguida, defina uma aparência agradável ao Splash, adicionando novos objetos (Label, TextBox, Image) e/ou excluindo os objetos já inseridos automaticamente. Para fazer com que o Splash seja apresentado apenas durante alguns segundos, devemos adicionar ainda um objeto Timer. A propriedade Interval do objeto Timer deve ser definida de acordo com o tempo que o Splash será apresentado. Este tempo é definido em milisegundos. Por exemplo, para mostrar o Splash durante 4 segundos, defina a propriedade Interval como 4000. Além disso, devemos adicionar um pequeno código de programação associado ao evento Timer do objeto Timer. Private Sub Timer1_Timer() MDIForm1.Show Unload Me End Sub No código acima, ao término dos 4 segundos, é mostrado o MDIForm, que provavelmente é o formulário principal da aplicação, e em seguida o Splash é descarregado. Para que o Splash seja o primeiro formulário a ser apresentado, clique sobre o menu Project > Project1 Properties (em Project1 estará o nome do seu projeto). Em seguida, na guia General, escolha o formulário Splash na lista Startup Object.
15. CRIAÇÃO DE MENUS Para a criação de um Menu devemos ir ao menu Tools – Menu Editor. 1) Começamos digitando o Título (em Caption) do menu mais à esquerda. Caso desejemos acessar esse menu via Alt e a letra grifada devemos inserir o & antes da letra que será grifada. 2) Depois digitamos o nome (em Name) do menu para referência no código. 3) Os outros itens não são obrigatórios. 4) Clicar em Next para entrar um novo menu ou item de menu. Caso seja um item de menu devemos clicar na seta para a direita quando aparecerão três pontinhos à esquerda do título do item que ficará abaixo do nome do menu.
16. CRIANDO UMA BARRA DE FERRAMENTAS Para adicionar uma barra de ferramentas ao seu programa, primeiro é preciso adicionar um componente à Toolbox. Clique sobre o menu Project > Components e escolha a opção Microsoft Windows Common Controls 5.0. Surgirão alguns componentes na Toolbox, dentre eles o Toolbar e o ImageList, que utilizaremos na criação da barra de ferramentas. Siga os passos: - Desenhe no seu formulário um objeto Toolbar e um objeto ImageList. - No objeto ImageList, serão armazenadas as imagens utilizadas na Toolbar. Clique sobre o ImageList com o botão direito e escolha Properties. - Na janela que se abre, escolha a guia Images.
-
-
Clique no botão Insert Picture para adicionar as imagens, repetindo o processo para cada imagem a ser adicionada. Repare que cada imagem adicionada possui um índice (Index). Clique em OK após ter adicionado todas as imagens. Para adicionar botões à Toolbar, clique sobre ela com o botão direito e escolha Properties. Na janela que se abre, escolha a guia Buttons.
Clique em Insert Button para adicionar botões. Para cada botão adicionado defina as propriedades Image (número da imagem no ImageList) e ToolTipText (texto informativo mostrado quando se move o mouse sobre o botão).
-
Após inserir e configurar todos os botões, clique em OK.
Em linha de código, para selecionar qual botão foi clicado, use um código semelhante ao exemplo seguinte: Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Index Case 1: Form1.Show Case 2: Form2.Show Case 3: Form3.Show Case 4: Form4.Show Case 5: Form5.Show End Select End Sub No exemplo acima, cada botão clicado abre um formulário.
17. ESCOPO (OS NÍVEIS DE UM PROGRAMA) Private Sub txtNome_Change() Dim Nome As String Nome = txtNome.Text End Sub
‘A variável Nome recebe a propriedade Text da ‘txtNome
Quando declaramos uma variável com um Dim, dentro de um subprocedimento (como no exemplo acima), a variável só existe dentro daquele subprocedimento. Ela não está disponível para outras "Subs". Além disto, quando a Sub que a continha acaba de ser executada, o valor da variável se perde, mesmo para futuras "chamadas" da mesma Sub. Uma variável declarada na seção Declarations (General) de um Form está disponível para todas as suas Subs. Porém, se usarmos dois formulários, a variável declarada em um deles não estará disponível para o outro. A solução é declarar a variável em um nível "mais abrangente": o módulo. Para criar um módulo, acesse o menu Project > Add Module. Então, declare a variável da seguinte maneira: Public Nome as String
Note que declaramos usando "Public", que informa ao VB que esta variável será "pública", ou seja, disponível para todas as Subs de todos os Forms deste programa.
18. A LINGUAGEM SQL A linguagem SQL(Structured Query Language) é uma linguagem de alto nível para manipulação de dados dentro do modelo relacional. Seu objetivo é fornecer uma interface de alto nível ao usuário. É uma linguagem não procedural, e,não cabe ao usuário definir como o gerenciador de banco de dados executará uma tarefa, mas somente o ele que deve fazer. Uma instrução SQL consiste em três partes:
• • •
As declarações de parâmetros A instrução manipulativa As declarações de opções
Vejamos na tabela abaixo um resumo das cláusulas manipulativas e suas finalidades: Instrução SELECT
Função Obtém um grupo de registros e insere os registros em um dynaset ou em uma tabela. Define os valores dos campos de uma tabela em uma atualização.
UPDATE DELETE Remove registros de uma tabela. FROM INSERT INTO Acrescenta um grupo de registros a uma tabela.
Vejamos alguns exemplos da instrução SELECT: 1) Seleciona os campos "Primeiro nome" e "Sobrenome" de todos os registros da tabela Empregados. SELECT [Primeiro nome], [Sobrenome] FROM Empregados 2) Seleciona todos os campos da tabela Empregados. Note o uso parâmetro (*) indicando todos os campos da tabela indicada. SELECT Empregados.* FROM Empregados 3) Conta o número de registros que têm uma entrada no campo "Código postal" e coloca o título Contagem no topo da coluna. SELECT Count([Código postal]) AS Contagem FROM Clientes 4) Seleciona os campos "Primeiro nome" e "Sobrenome" de cada registro cujo sobrenome seja Pereira. SELECT [Primeiro nome], [Sobrenome] FROM Empregados WHERE [Sobrenome] = 'Pereira' 5) Seleciona os campos "Primeiro nome" e "Sobrenome" para Empregados cujos sobrenomes começam pela letra S. SELECT [Primeiro nome], [Sobrenome] FROM Empregados WHERE [Sobrenome] Like 'S*'
Observações: FROM – Indica as tabelas utilizadas como fonte de dados. WHERE – Especifica as condições que os registros devem satisfazer para compor o subconjunto de dados.
19. BANCOS DE DADOS FIREBIRD 19.1. Obtendo o Firebird A última versão do Firebird pode ser baixada gratuitamente no site oficial, através de seu browser preferido acesse o endereço http://www.firebirdsql.com/. Em seguida, selecione a opção download.
Ao contrário de muitos sistemas de gerenciamento de bancos de dados que executam apenas na plataforma Windows, o Firebird é compatível com Linux, Mac, Unix, dentre outros. Por isso tenha o cuidado de selecionar o programa na categoria win32 que é apropriada para quem trabalha com o Windows.
Selecione em seguida de que servidor será feito o download do programa:
Dica: as distribuições do Firebird terminadas com a string “-RCn” não são versões finais, por isso, prefira usar a última release do produto que é muito mais estável, e não, uma versão beta que ainda não foi testada totalmente.
19.2. Instalando o Firebird a) Abra a pasta onde foi salvo o arquivo baixado do Firebird, em seguida, dê um duplo clique sobre o ícone do programa.
b) Será apresentada uma caixa de dialogo com a mensagem “This will install Firebird Database Server 1.0. Do you wish to continue?”. Clique no botão “Sim” para iniciar a instalação.
c) Antes de clicar no botão “Next >” para continuar a instalação, feche todos os aplicativos abertos. d) Será apresentada a “License Agreement”, selecione o botão de opção “I accept the agreement” para indicar ao programa que você concorda com a licença, em seguida, clique no botão “Next >” para continuar a instalação. e) Na caixa de diálogo “Information” serão apresentadas informações complementares sobre a instalação do Firebird. Clique no botão “Next >” para continuar. f) No caixa de diálogo “Select Destination Directory” será possível informar o local onde o Firebird será instalado. É recomendável não modificar a localização padrão que é “\Arquivos de programas\Firebird”. Clique no botão “Next >” para continuar.
g) O próximo passo é informar os componentes a serem instalados, selecione a opção “Full installation of Server and development tools”, em seguida, clique no botão “Next >” para continuar. h) Na caixa de diálogo “Select Start Menu Folder” deverá ser informado o nome da pasta do menu iniciar onde os ícones do programa serão criados. Deixe o nome padrão da pasta que é “Firebird”. Dê um clique no botão “Next >” para continuar. i)
Na caixa de diálogo “Select Additional Tasks” não altere nenhuma das opções, simplesmente, dê um clique no no botão “Next >” para continuar.
Dica: as distribuições do Firebird quando instaladas no Windows 95 e 98 são executadas como um aplicativo. A partir do Windows 2000 como um serviço. j) Na caixa de diálogo “Ready to install” clique no botão “Install” para iniciar a copia dos arquivos para o disco rígido de seu computador. k) Se for apresentada outra caixa de diálogo, clique no botão “Next” ou “Ok” para continuar a instalação.
19.3. Registrando um novo Servidor no Firebird a) Após executar o IB Console, dê um clique com o botão direito do mouse sobre o objeto InterBase Server, em seguida selecione a opção “Register ...” do menu de atalho.
b) Selecione a opção “Remote Server”, em seguida, preenche todos parâmetros necessários ao registro e conexão de um novo servidor no IB Console.
Nome do Servidor: número IP da máquina local (e.g. 127.0.0.1), ou então, o número IP de uma máquina remota da rede (e.g. 192.168.0.1). Protocolo da Rede: TCP/IP. Apelido do Servidor: normalmente o nome da instituição, departamento ou setor onde o computador que possui o banco de dados esta armazenado (e.g. Laboratorio3). Descrição: informação complementar Nome do Usuário: SYSDBA Senha: masterkey
Não se esqueça de deixar selecionada a caixa de checagem “Save Alias Information”.
c) Após preencher todos os parâmetros obrigatórios, dê um clique com o botão esquerdo do mouse no botão OK.
19.4. Fechando a conexão de um Servidor no Firebird a) Estando no IB Console, dê um clique com o botão direito do mouse sobre o objeto DSI, em seguida selecione a opção “Logout” do menu de atalho.
b) O IB Console apresentará uma caixa de dialogo com a pergunta: “você tem certeza que você quer fechar a conexão do servidor selecionado?”. Dê um clique no botão “Sim”.
19.5. Abrindo a conexão de um Servidor no Firebird a) Estando no IB Console, dê um clique com o botão direito do mouse sobre o objeto DSI, em seguida selecione a opção “Login...” do menu de atalho.
b) Será solicitada a informação de Login no servidor. Informe para os campos “Nome do Usuário” e “Senha”, respectivamente, “sysdba” e “masterkey”. Em seguida, dê um clique no botão “Login”.
19.6. Criando um novo Banco de Dados a) Estando no IB Console, dê um clique com o botão direito do mouse sobre o objeto Database, em seguida selecione a opção “Create Database...” do menu de atalho.
b) Durante o processo de criação de um novo Banco de Dados é obrigatório o preenchimento dos seguintes campos: “Filename(s)”, “Size (Pages)” e “Alias”. É interessante preencher o campo “Size (Pages)” com o valor padrão “4096” e deixar selecionada a caixa de checagem “Register Database”. Após preenchê-los dê um clique no botão OK.
O ícone do objeto de dados correspondente ao banco de dados “Hotel” será incluído dentro do objeto Databases do Servidor DSI.
19.7. Verificando onde foi gravado o novo Banco de Dados a) Dê um clique com o botão direito do mouse sobre o ícone do servidor DSI, em seguida, selecione a opção “Properties...”. b) Na caixa de diálogo “Server Properties” selecione a guia “General” e verifique o conteúdo do campo “Attached Databases”.
19.8. Trabalhando com Tabelas Como criar uma tabela e definir o campo que é a chave primária a) Selecione o nome do Banco de Dados onde será criada a tabela clicando com o botão esquerdo do mouse. Em seguida, selecione o comando “Interactive SQL...” existente no menu “Tools”.
b) Digite no Interactive SQL o comando “Create Table” com as informações sobre o nome da tabela; o nome, o tipo de dados e se o conteúdo pode ser nulo para cada campo; e o nome do campo escolhido para ser chave primária.
c) Ao terminar de digitar o comando no Interactive SQL execute-o pressionando Ctrl+E ou então clicando sobre o ícone da barra de ferramentas mostrada na ferramenta abaixo:
d) Se o comando digitado não possuir nenhum erro de sintaxe e for executado corretamente, a tela do Interactive SQL será apagada e não será apresentada uma mensagem de erro. Para rever o comando digitado use o ícone da barra de ferramentas mostrado na figura abaixo:
Como conferir se a tabela Hospede e sua chave primária foi criada a) Com o botão esquerdo do mouse clique na opção “Windows” do menu do Interactive SQL, selecione na caixa de listagem da caixa de diálogo do Active Windows o “IB Console”, em seguida, clique no botão de comando “Switch To...”.
b) Ao retornar a janela do IB Console, selecione com o mouse o objeto “Table” existente dentro do objeto “Hotel” do “Databases” do servidor “DSI”. Se a tabela “Hospede” tiver sido realmente criada ela será apresentada no lado direito da janela do IB Console.
Como criar uma tabela que possui dependência de identificação Suponha que você viajou para uma cidade onde pretende passar parte de suas férias, chegando lá decidiu se hospedar em um Hotel. Como se trata de um novo cliente o atendente somente conseguirá registrar sua hospedagem após cadastrá-lo como novo hospede. Dizemos neste caso que a tabela “Hospedagens” possui dependência de identificação da tabela “Hospedes”, ou seja, somente será possível cadastrar hospedagens para hospedes anteriormente cadastrados. O procedimento para criação da tabela “Hospedagens” será acrescido da criação de um relacionamento com a tabela “Hospedes”. a) Digite os comandos “create table” e “alter table” conforme mostrado na figura abaixo. Observe que o campo “hContador” que identifica o hospede aparece com o mesmo nome nas tabelas “Hospedes” e “Hospedagens”.
20. CONEXÃO DO BANCO DE DADOS FIREBIRD COM O VISUAL BASIC 20.1. Instalação do Driver ODBC No VB, para abrir um banco de dados Firebird, é necessário antes instalar um driver ODBC. Para instalá-lo, basta seguir os passos do assistente. Nesta apostila, está sendo usado o IBPhoenix Firebird ODBC Driver.
20.2. Incluindo a Referência ao ADO No Visual Basic, para incluir a referência ao ADO, clique no menu Project > References. Na lista relacionada marque a opção: Microsoft ActiveX Data Objects 2.x Library.
20.3. Criando a String de Conexão A string de conexão é um texto com informações necessárias à conexão. Para criá-la, inclua em seu projeto o componente “Data Environment” executando uma das seguintes seqüências: Menu Project Add Data Environment, ou então, Menu Project More Active X Designers Data Environment. Será mostrada a janela do “Data Environment”. Dê um clique com o botão direito do mouse sobre o item “Connection1”, em seguida, selecione a opção “Properties...” do menu de atalho.
Na próxima caixa de diálogo deverá ser selecionado o “provedor de acesso” para o banco de dados que a conexão abrirá. Selecione a opção Microsoft OLE DB Provider for ODBC Drivers.
Clique em Next.
Na tela seguinte, selecione a opção Use connection string e clique no botão Build.
Selecione a guia Machine Data Source e clique em New.
Na próxima tela, clique em Avançar.
Selecione a opção Firebird/Interbase(r) driver e clique em Avançar, depois em Concluir.
Na tela que se segue, deveremos dar um nome à fonte de dados criada (DSN). Também será preciso indicar o arquivo do banco de dados (Database), a conta para acesso ao banco (Database Account) e a senha (Password). No exemplo abaixo,
nomeamos a fonte de dados como Banco, o arquivo do banco de dados se chama Teste.gdb e está localizado na Área de Trabalho, a conta para acesso é SYSDBA e a senha masterkey. Veja a figura:
Após efetuar todas as configurações nesta tela, clique em Test connection. Deverá aparecer a seguinte mensagem:
Clique em OK e depois OK novamente. Na tela anterior, deverá aparecer a string de conexão, conforme mostrado abaixo:
Selecione a string de conexão e copie-a utilizando CTRL+C. A string de conexão também pode ser copiada mais tarde. Para encontrá-la, clique com o botão direito sobre Connection1 e selecione Properties. Em seguida, escolha a guia Connection.
21. DEFININDO AS VARIÁVEIS DO PROGRAMA As variáveis que representarão o banco de dados e a tabela deverão ser declaradas dentro da seção “General/Declarations” do formulário atual. É importante ainda declarar uma variável onde será armazenada a string de conexão usada para abrir o banco de dados.
22. COMANDOS PARA ABERTURA DO BANCO DE DADOS Como a string de conexão será utilizada em diversos eventos do formulário, é interessante que ela seja armazenada em uma variável para facilitar a sua reutilização, poupando digitação desnecessária.
23. DESENHANDO A INTERFACE DO PROGRAMA Antes de programar os demais eventos do formulário é necessário desenhar a interface do programa. Para este exemplo, levaremos em consideração que o formulário “FrmCli” possui o layout mostrado abaixo:
24. PROGRAMANDO OS EVENTOS 24.1. Consulta da Tabela Sempre que o usuário digitar o código de um cliente que já está cadastrado no banco de dados, o programa deverá mostrar os dados deste cliente. Abaixo a lógica usada para realizar este procedimento. Private Sub txtCodigo_LostFocus() If Not IsNumeric(txtCodigo.Text) Then Exit Sub Dim ComandoSQL As String
ComandoSQL = "SELECT * FROM CLIENTES " & _ "WHERE Codigo=" & txtCodigo.Text & ";" TbCli.Open ComandoSQL, StringConexao, adOpenStatic If TbCli.EOF Then Limpar_Campos Else txtNome.Text = TbCli!nome txtTelefone.Text = TbCli!telefone End If TbCli.Close End Sub
24.2. Exclusão de Registro Antes de excluir o registro é interessante solicitar do usuário a confirmação da operação. O exemplo do código está mostrado abaixo: Private Sub btnExcluir_Click() If Not IsNumeric(txtCodigo.Text) Then Exit Sub Dim ComandoSQL As String If MsgBox("Tem certeza?", vbYesNo, "Excluir") = vbYes Then ComandoSQL = "DELETE FROM CLIENTES " & _ "WHERE Codigo=" & txtCodigo.Text & ";" Con.Execute ComandoSQL Limpar_Campos txtCodigo.SetFocus End If End Sub
24.3. Salvamento de Registro Private Sub btnSalvar_Click() Dim ComandoSQL As String Dim Comando As New ADODB.Command ComandoSQL = "select * from CLIENTES " & _ "where codigo = " & txtCodigo.Text & ";" TbCli.Open ComandoSQL, StringConexao, adOpenStatic If TbCli.EOF Then ComandoSQL = "INSERT INTO CLIENTES (codigo, nome, telefone) " & _ "VALUES (?, ?, ?)" TbCli.Close Comando.ActiveConnection = StringConexao Comando.CommandText = ComandoSQL Comando.Parameters(0) = txtCodigo.Text Comando.Parameters(1) = txtNome.Text Comando.Parameters(2) = txtTelefone.Text Else ComandoSQL = "UPDATE CLIENTES SET nome=?, telefone=? " & _ "WHERE codigo=" & txtCodigo.Text & ";" TbCli.Close Comando.ActiveConnection = StringConexao Comando.CommandText = ComandoSQL Comando.Parameters(0) = txtNome.Text
Comando.Parameters(1) = txtTelefone.Text End If Comando.Execute End Sub
25. MÉTODOS DE MOVIMENTAÇÃO Os métodos de movimentação permitem a passagem de um registro para outro no interior dos recordsets, e alteram a posição do ponteiro do registro ao passar de um registro ativo para outro registro. Você pode usar os métodos de movimentação sobre quaisquer recordsets. Vejamos a seguir os métodos de movimentação: MoveFirst - Movimenta o ponteiro do registro ativo para o primeiro registro do recordset aberto. MoveNext - Movimenta o ponteiro do registro ativo para o registro seguinte. Se não houver registro seguinte, você está no último registro, o flag de final de arquivo EOF será ativado. MovePrevious - Desloca o ponteiro do registro ativo para o registro anterior no recordset aberto. Se não houver registro anterior, você está no primeiro registro, o flag de início de arquivo BOF será ativado. MoveLast - Movimenta o ponteiro do registro ativo para o último registro do recordset aberto.
26. VALIDAÇÃO DE CAMPOS Validação do conteúdo de um textbox durante a digitação No código abaixo, temos a validação para um campo data. Nesta caixa de texto só será possível digitar números, Backspace e a barra (/). Note que 47 corresponde ao código ASCII da barra.
Private Sub txtdata_KeyPress(KeyAscii As Integer) If Not ((KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Or KeyAscii = 47) Then KeyAscii = 0 End If End Sub No próximo código, temos a validação para um campo moeda. Nesta caixa de texto só será possível digitar números, Backspace e a vírgula (,). Note que 44 corresponde ao código ASCII da vírgula.
Private Sub txtvalor_KeyPress(KeyAscii As Integer) If Not ((KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Or KeyAscii = 44) Then KeyAscii = 0 End If End Sub
Abaixo segue a tabela de códigos ASCII: ASCII 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Caractere · · · · · · · · ** ** ** · · ** · · · · · · · · · · · · · · · · · ·
ASCII 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Caractere [space] ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
ASCII 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
Caractere @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
ASCII 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
Caractere ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ·
· Caracteres não suportados pelo Windows. ** Valores 8, 9, 10, e 13 representam backspace, tab, linefeed (alimentador de linha), e enter, respectivamente.
Validação de datas e valores numéricos após a digitação
If Not IsDate(txtdata.Text) Then MsgBox ("Data inválida!") txtdata.SetFocus Exit Sub End If
If Not IsNumeric(txtvalor.Text) Then MsgBox ("Valor inválido!") txtvalor.SetFocus Exit Sub End If
27. DataList A caixa de listagem vinculada aos dados – Data List – tem função idêntica à caixa de listagem – ListBox, a qual seja, apresentar ao usuário uma lista de opções. A principal diferença consiste no fato de a caixa de listagem vinculada aos dados buscar as informações em um Recordset, enquanto que a Caixa de Listagem, obtêm as informações através de uma série de instruções AddItem. Vejamos como utilizar o controle DataList no roteiro a seguir: 1- Clique no menu Project > Components e escolha a opção Microsoft Data List Controls 6.0 (OLEDB). Selecione também a opção Microsoft ADO Data Control 6.0 (OLEDB). 2- Em um formulário, insira o controle Adodc (ADO Data Control) e configure as propriedades: -
-
Name – Nome do controle (o nome padrão é Adodc1). ConnectionString – String de conexão. Dados necessários para efetuar a conexão com o banco de dados (já citada anteriormente). Copie a string de conexão do Data Environment. RecordSource – Clique no botão ao lado da propriedade (...) e aparecerá a seguinte tela:
Deve-se escolher o tipo de comando (no caso, adCmdTable corresponde a Tabela), e o nome da tabela ou consulta (no caso, Empregado). 3- A seguir, insira o controle DataList e atente para as seguintes propriedades: -
RowSource – nome do controle de dados que contém as informações usadas para preencher a lista (no caso, Adodc1) ListField – o nome do campo da origem dos dados a ser exibido na lista
28. DataCombo Para configurar um DataCombo, proceda da mesma maneira como foi configurado o DataList: 1- Clique no menu Project > Components e escolha a opção Microsoft DataList Controls 6.0 (OLEDB). 2- Em um formulário, insira o controle Adodc (ADO Data Control) e configure as propriedades: -
-
Name – Nome do controle (o nome padrão é Adodc1). ConnectionString – String de conexão. Dados necessários para efetuar a conexão com o banco de dados (já citada anteriormente). Copie a string de conexão do Data Environment. RecordSource – Clique no botão ao lado da propriedade (...) e aparecerá a seguinte tela:
Deve-se escolher o tipo de comando (no caso, adCmdTable corresponde a Tabela), e o nome da tabela ou consulta (no caso, Empregado).
3- A seguir, insira o controle DataCombo e atente para as seguintes propriedades: -
-
RowSource – nome do controle de dados que contém as informações usadas para preencher a lista (no caso, Adodc1). ListField – o nome do campo da origem dos dados a ser exibido na lista
29. DataGrid A grade vinculada aos dados – DataGrid – oferece um meio para visualizar vários registros ao mesmo tempo. O seu primo pobre no VB seria o controle Grid. Enquanto o Grid precisa ser configurado quase que totalmente via código, para usar o DataGrid basta arrastar o ícone do controle para o seu formulário e definir a propriedade DataSource para identificar o controle de dados que contém os dados que você quer exibir, e pronto, a grade exibe todos os campos dos registros do recordset. Exemplo de Utilização e Configuração Suponha que temos a seguinte tabela com os seguintes dados: Empregado Nome João Maria José Mauro Pedro
Telefone 3221-1234 3222-5678 3212-1234 3213-1234 3214-1234
Criaremos uma consulta de pessoas por nome, utilizando o DataGrid e sentenças SQL. Vejamos passo a passo como utilizar o DataGrid com o controle de dados vinculados Adodc (ADO Data Control). 1- Clique no menu Project > Components e escolha a opção Microsoft DataGrid Control 6.0 (OLEDB). 2- Selecione o objeto Adodc na Toolbox do Visual Basic e acrescente-o ao seu formulário. 3- Defina a seguir as propriedades: -
-
Name – Nome do controle (o nome padrão é Adodc1). Visible (False) – para que o objeto Adodc não apareça durante a execução do programa ConnectionString – String de conexão. Dados necessários para efetuar a conexão com o banco de dados (já citada anteriormente). Copie a string de conexão do Data Environment. RecordSource – Clique no botão ao lado da propriedade (...) e aparecerá a seguinte tela:
Deve-se escolher o tipo de comando (no caso, adCmdTable corresponde a Tabela), e o nome da tabela ou consulta (no caso, Empregado). 4- Selecione o ícone do DataGrid na ToolBox e arraste-o até o seu form. 5- Defina a propriedade DataSource, vinculado-a ao controle de dados configurado anteriormente (Adodc1). 6- Para proibir a edição, inclusão e exclusão de registros na grade você deve definir como False as propriedades AllowAddNew, AllowUpdate e AllowDelete. Isto pode ser feito através da folha de propriedades do DataGrid.
7- Na folha de propriedades do DataGrid, na guia Columns, devemos associar cada coluna do DataGrid com um campo da tabela que será usada para preenchê-lo.
8- Desenhe, no mesmo formulário, um TextBox e um CommandButton.
Para completar o nosso exemplo, falta o código para a execução da pesquisa. No evento Click do Command1, acrescente o código abaixo: Private Sub Command1_Click() If Text1.Text = "" Then Adodc1.CommandType = adCmdTable Adodc1.RecordSource = "Empregado" Else Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select enome, etelefone from Empregado where Upper(enome) like '" & UCase(Text1.Text) & "%'" End If Adodc1.Refresh DataGrid1.Refresh End Sub
O resultado da execução é mostrado nas telas abaixo:
30. MASKED EDIT Para utilizar um controle MaskedEdit, devemos, inicialmente, clicar no menu Project > Components e escolher a opção Microsoft Masked Edit Control 6.0. Isto fará com que ele seja incluído na Toolbox do VB. Para configurar o MaskedEdit, clique sobre ele com o botão direito e escolha Properties. Surge a tela seguinte:
Nesta tela, basta definir a máscara (Mask) e/ou o formato do campo (Format). Alguns exemplos de formatos: Moeda – R$#,##0.00;(R$#,##0.00) Data – dd/mm/yyyy Alguns exemplos de máscaras: Data – ##/##/#### CEP – ##\.###\-### CPF – ###\.###\.###\-## Telefone – \(##\)####\-#### Note que a barra invertida (\) sempre aparece antes de um caractere especial. Obs.1: Para limpar o conteúdo de um MaskedEdit, é preciso atribuir a ele o formato da máscara. Exemplos: MaskEdBox1.Text MaskEdBox2.Text MaskEdBox3.Text MaskEdBox4.Text
= = = =
"__.___-___" "(__)____-____" "___.___.___-__" "__/__/____"
Obs.2: Para atribuir uma data a um MaskedEdit, é preciso antes formatá-la usando a função Format. Exemplo: MaskEdBox4.Text = Format(Date, "dd/mm/yyyy")
31. CRIAÇÃO DE GRÁFICOS UTILIZANDO O CONTROLE MSCHART Para construir gráficos em sua aplicação você deve usar o controle gráfico do VB, o MSChart. O MSChart permite apresentar seus dados em forma de gráfico como uma planilha do Excel (linhas e colunas); gráficos tridimensionais, gráficos de torta, barra, pizza, etc. Antes de iniciar você deve adicionar o controle Microsoft Chart Control ao seu projeto da seguinte maneira: clique no menu Project > Components e escolha a opção Microsoft Chart Control 6.0 (OLEDB). As figuras abaixo mostram a barra de ferramentas e a configuração inicial do MSChart:
Agora, basta definir a fonte de dados que alimentará o gráfico, geralmente uma tabela, e fazer a configuração do Controle MSChart. Para abrir um diálogo de propriedades do controle MSChart, clique com o botão direito do mouse sobre o mesmo, selecione a opção Properties e a janela para configuração surge como mostrada na figura abaixo:
Cada aba permite configurar diversas propriedades utilizadas na confecção de um gráfico. Utilização e Configuração Vejamos agora as propriedades do MSChart e como configurá-lo.
A configuração inicial do controle gráfico apresenta uma série de quatro barras em cinco colunas com legendas R1 a R5. Esta seqüência de dados é definida pela propriedade RowCount. A quantidade de colunas é definida pela propriedade ColumnCount. Na figura acima alteramos RowCount para 2 e ColumnCount também para 2 e ainda definimos a propriedade RowLabel para cada coluna e a propriedade ShowLegend para True. A propriedade ChartType permite obter os seguintes tipos de gráficos: • • • • • •
Barra - Valores 0 e 1 Linha - Valores 2 e 3 Áreas - Valores 4, 5 , 6 e 7 Combinação - Valores 8 e 9 Torta - Valor 14 XY - Valor 16
Aba Chart Chart Type - Permite escolher o tipo de gráfico usado Chart Options Show Legend Show Markers Stack Series Series em rows
- Mostra a legenda no gráfico - Marcas sobre cada coluna do gráfico - Empilhar as colunas - Inverte apresentação, colunas em linhas
Aba Axis e Axis Grid Existem diversas propriedades que permitem configurar os eixos de um gráfico como: Espessura e cor de linhas Definição da escala - Valor Máximo e Mínimo Divisão da Escala - Valor Maior e Menor Aba Series e Series Color Permitem configurar diversas propriedades relacionadas às séries do gráfico e à cor interior e da borda de cada série. Aba BackDrop Configura os elementos de fundo e da borda do gráfico. O elemento a ser configurado é selecionado na lista Property Name. Aba Text Através da lista Property Name podemos selecionar o título, o rodapé, títulos dos eixos X, Y ou de um segmento eixo Y e definir um nome para cada item, inclusive definindo o alinhamento e a orientação do texto através do grupo Alignment e Orientation. Aba Fonts Permite definir a fonte, estilo, tamanho e efeitos de cor. Além destas propriedades temos as seguintes: Row RowCount RowLabel Data Column ColumnCount ColumnLabel BorderStyle
- especifica a linha corrente - determina o número de seqüência de dados - define o rótulo de dados da linha corrente - Permite a leitura e a atribuição dos valores de dados ao gráfico - define a coluna ativa - define o número de colunas ativas - define a legenda para a coluna ativa - define a borda do gráfico
ChartData
- permite atribuir valores às seqüências de dados a partir de uma matriz (array) de duas dimensões.
Exemplo de Utilização Suponha que temos uma tabela que armazene as notas de um grupo de alunos. Os dados na tabela são: Nome João Paulo Maria Lucas Laura
Nota 5,0 7,5 8,0 2,0 10,0
Criaremos um gráfico de colunas que representa a nota de cada aluno. Siga os passos: 1- Adicione um controle MSChart ao formulário. 2- Configure as seguintes propriedades do MSChart: -
RowCount = 5 ColumnCount = 1
3- Adicione o seguinte código: Dim Dim Dim Dim
Con As New ADODB.Connection TbAlunos As New ADODB.Recordset StringConexao As String x As Integer
Private Sub Form_Load() StringConexao = “DSN=teste;Driver=OdbcJdbc;Dbname=C:\prog\Escola.gdb; CHARSET=NONE;UID=SYSDBA;PWD=DKEBFJENHFCOBHGHLAIMNAAFICE LEAEGDNMFNOGALAMHBBGCHFADNKCBPPGMANOGIEKENIOPHDIPBIECPL LLCBIKEJKMJLPLIB" Con.Open StringConexao Dim ComandoSQL As String ComandoSQL = "SELECT * FROM alunos order by acodigo" TbAlunos.Open ComandoSQL, StringConexao, adOpenStatic TbAlunos.MoveFirst For x = 1 To 5 MSChart1.Row = x MSChart1.RowLabel = TbAlunos!anome MSChart1.Data = TbAlunos!anota TbAlunos.MoveNext Next x End Sub
O resultado será o seguinte:
32. DATA REPORT Abra o projeto em questão. Em seguida, selecione o menu Project. Selecione o comando Add Data Report para adicionar este componente ao projeto. Ainda no menu Project, selecione o comando Add Data Environment. Se por acaso um dos comandos acima não estiver disponível, use o comando More ActiveX Designers... para adicionar o componente desejado.
Configurando o Ambiente de Dados (DataEnvironment) Antes de trabalharmos com o Data Report ou qualquer outro componente que acesse registros de uma base dados, é necessário abrir o banco de dados e as respectivas tabelas ou consultas existentes neste banco de dados. Dê um duplo clique no objeto DataEnvironment1 para abrir a janela do DataEnvironment.
Para alterar as propriedades do DataEnvironment, será usado a janela do Project Explorer em conjunto com a janela Properties Windows. Como o objeto DataEnvironment1 será usado em diversas partes do projeto, para facilitar sua utilização, mudaremos a propriedade (Name) de “DataEnvironment1” para “deComercial”. Para alterar a propriedade “Name”, dê um clique no objeto DataEnvironment1, em seguida, utilizando a janela de propriedades modifique a propriedade name.
Definindo o Banco de Dados (através de conexão)
Dê um clique com o botão do mouse sobre o componente Connection1, em seguida, selecione Properties na barra de Ferramentas. Na tela que se segue, devemos configurar a string de conexão. Isto já foi feito no item 20.3 – Criando a string de conexão. Caso necessário, veja novamente o item 20.3.
Definindo uma referência para uma Tabela Antes de prosseguirmos, é interessante mudar a propriedade Name do componente Connection1 para conComercial. Para tal, use a janela de propriedades do Visual Basic.
No DataEnvironment, cada tabela ou consulta é denominada de “Command”. Para incluir um command, dê um clique com o botão direito sobre o objeto connection (que no exemplo se chama conComercial), em seguida selecione a opção Add Command.
Após adicionar o Command, o passo seguinte será alterar suas propriedades. Para tal, dê um clique com o botão direito sobre o Command1, em seguida selecione a opção Properties.
Na guia “General” da janela de propriedades, deverá ser informado o nome do command, a conexão que contém o banco de dados que possui a tabela ou consulta desejada e a fonte de dados (os mais usados são Consultas e Tabelas). O campo Command Name deve ser preenchido de forma coerente com a tabela ou consulta selecionada.
No exemplo abaixo, foi informado como Command Name “comProdutos”, porque este command será uma referência para a tabela “Produtos” (evite usar nomes pouco significativos). Após fazer isso, dê um clique no botão OK.
Se correr tudo bem, será acrescentado um novo objeto command chamado “comProdutos” subordinado a conexão “conComercial”.
Definindo uma referência para várias Tabelas Para usarmos várias tabelas em uma consulta, a forma mais prática e simples é através de uma sentença SQL. Para tal, usaremos o Access para criarmos uma consulta, em seguida, usaremos a sentença SQL gerada por ele dentro do Visual Basic. Após executar o “Microsoft Access”, abra o Banco de Dados que contem as tabelas que serão usadas no Command. Como iremos criar uma consulta, selecione a guia correspondente a esta opção no Access (observe que a figura abaixo é relativa a versão 97 deste aplicativo e não a 2000).
Após selecionar a guia “Consultas”, dê um clique no botão “Novo”, para criar uma nova consulta. Será mostra a janela do assistente, selecione a opção “Assistente de Consulta Simples”. Em seguida, dê um clique no botão OK.
Utilize a caixa de combinação “Tabelas/ Consultas:”, para selecionar o nome da tabela que possui os campos que serão usados na consulta.
Após selecionar o nome da tabela, o próximo passo é selecionar na caixa de listagem “Campos disponíveis”, o nome do campo que será usado na consulta. Dê um clique no botão “>” para adicionar o campo “cNome” a caixa de listagem “Campos
selecionados”. O botão “>>” é usado para adicionar todos os campos da tabela selecionada. Os botões “<” e “<<” são usados para remover algum campo adicionado erroneamente ou não mais necessário.
Após selecionados os campos desejados da tabela de “Clientes”, selecione na caixa de combinação “Tabelas/ Consultas:”, o nome da próxima tabela. Feito isto, selecione o nome dos campos e assim sucessivamente até que todos os campos desejados estejam selecionados.
Dê um clique no botão “Concluir” para finalizar a criação de sua consulta. Ao fazer isto, a consulta será automaticamente salva e executada. A execução nada mais é que a apresentação do resultado.
A apresentação do resultado da consulta, é um sinal da que a mesma está correta. Porém, como o que interessa é a sentença SQL correspondente, vamos mudar o modo de exibição para Modo SQL.
O comando SQL correspondente será apresentado conforme abaixo. Basta agora copiarmos para a área de transferência, em seguida, colar no Visual Basic.
O próximo passo será adicionar um novo “Command” no DataEnvironment, para tal, dê um clique com o botão direito do mouse sobre a conexão “conComercial”, em seguida, selecione a opção Add Command.
Após adicionar o novo Command, o próximo será a alteração de algumas propriedades. Dê um clique com o botão direito do mouse sobre o command criado.
Observe que como estamos usando uma sentença SQL, a fonte dos dados (Source of Data) deverá ser a opção SQL Statemend. Coloque o comando SQL criado no access conforme mostrado na figura anterior. Para finalizar dê um clique no botão OK. Após feito isto, o command deverá possuir as características mostradas abaixo:
Utilizando Sub Commands É comum a elaboração de relatórios ou consultas, onde dois ou mais commands estão relacionados entre sí. Isso é bastante útil quando se deseja agrupar os dados em função de um determinado registro. Só é possível usar um sub command quando ambos os commands tem um campo em comum. No exemplo abaixo, é possível relacionar “comEntradas” com “comItens_Entradas”, através do campo eID.
Ambas as sentenças SQL foram criadas no Access usando os passos descritos anteriormente. Para relacionar um command com o outro, ou deixar um command subordinado ao outro, é necessário alterar as propriedades do command filho. Ou seja, aquele que tem dependência de existência.
Selecione a guia “Relation” em seguida marque a opção “Relate to Parent Command Object”. Indique na caixa de combinação “Parent Command” o “command pai”. Finalmente selecione os campos comuns aos commands em seguida dê um clique no botão Add. Feito isso dê um clique no botão OK.
Os comands “comEntradas” e “comItens_Entrada” deverão ficar com a aparência mostrada abaixo:
Criando um relatório a partir de um Command Simples
Primeiro Passo: dê um clique com o botão direito do mouse sobre a janela do “Project Explorer”. No menu de atalho, selecione o comando Add, em seguida, a opção Data Report.
Segundo Passo: altere as propriedades do objeto Data Report (no caso da figura, DataReport1) de forma que ele fique ligado ao Command do item 7.3.2. Para cada DataReport (relatório), deverá ser definido um único Command. (Name): rptProdutos Caption: Relatório de Produtos DataSource: deComercial DataMember: comProdutos
Terceiro Passo: dê um duplo clique no ícone do objeto rptProdutos (antigo DataReport1) para que seja mostrado o formulário correspondente. Quarto Passo: dê um clique com o botão direito do mouse sobre o formulário aberto no passo anterior, em seguida selecione o comando Retrieve Structure.
Todos os objetos desenhados no relatório serão apagados após a execução deste comando. Por questões de segurança, é solicitada a confirmação do usuário. Dê um clique no botão Sim. As seções do relatório serão definidas de acordo com o respectivo Command.
Alterando as características do Relatório Como não se pode usar os componentes da caixa de ferramentas padrão para desenhar um relatório, o DataReport possui seus próprios componentes. Observe que os componentes da caixa de ferramentas “General” ficam indisponíveis se o DataReport estiver selecionado, da mesma forma que os componentes da caixa de ferramentas “DataReport” ficam indisponíveis se o Form estiver selecionado. O RptLabel, RptTextBox, RptImage, RptLine e RptShape são os equivalentes ao existentes na caixa general, aplicando-se neles todos os conceitos vistos anteriormente. O RptFunction é um caso que será tratado a parte.
Na seção “Page Header” deverá ser definido o cabeçalho da página, ou seja, o texto que será impresso no topo de todas as páginas do relatório. Na figura abaixo, um exemplo de um cabeçalho simples desenhado com o RptLabel.
Para a seção “Detail (comProdutos_Detail)”, deverão ser arrastados todos os campos do Command “comProdutos” que desejamos que sejam impressos no relatório.
Em Page Header deverá ser definido o cabeçalho da página, ou seja, o texto que deverá ser impresso no topo de todas as páginas. Usando o objeto RptLabel, desenhe 3.
Somente será permitido arrastar os campos do Command especificado na propriedade DataMember. Sendo assim, como foi especificado o command comProdutos, somente podemos arrastar os campos existentes nele.
Para cada campo arrastado da janela do DataEnvironment até a seção Detail são colados um RptLabel e um RptTextBox. Se você ainda não tiver rotulado o campo em questão, arraste o RptLabel para a seção “Page Header” em seguida modifique suas propriedades. Observe que ao ser colado um campo na seção Detail, os objetos RptLabel e RptTextBox vem selecionados, desmarque o objeto RptTextBox antes de mover o objeto RptLabel.
Alignment: 1-RptJustifyRight Caption: Código DataFormat: General Font: Negrito
É importante observar que campos numéricos devem ser alinhados sempre à direita (right), enquanto campos alfanumericos devem ser alinhados a esquerda (left). A propriedade DataFormat é usada para formatar a apresentação dos dados no relatório. Após alterar as propriedades do campo pCódigo, repita o procedimento para os campos pDescrição e pEstoque_Atual.
É importante observar as seguintes característica do DataReport: - Os objetos RptLabel, RptTextBox e todos os demais, ao serem movimentados através do mouse, observam o posicionamento do Grid (caixa retangular existente em segundo plano). - Para colocar um objeto em um determinada posição do relatório, faça-o através da alteração das propriedades Left (posição horizontal) e Top (posição vertical). - Use as propriedades Height e Width para modificar respectivamente a altura e o comprimento de um determinado componente. - Em hipótese alguma modifique o comprimento e a altura do relatório. Se após alterar o comprimento ou a altura, o relatório ficar maior que as dimensões do formulário selecionado, ocorrerá um erro durante a impressão. Se o fizer, faça-o aos poucos e teste a impressão (no vídeo a medida que for fazendo). - No DataReport existem diversas seções. Antes de alterar quaisquer propriedades, verifique antes na janela de propriedades se está atualmente selecionado o objeto desejado.
Incluindo número de página, data e hora ao relatório Para incluir o número da página atual, total de páginas, data atual e hora. Dê um clique com o botão direito do mouse sobre a seção Page Header do relatório, em seguida, selecione a opção Insert Control.
Fazendo a chamada do Relatório A maneira mais simples de chamar um relatório criado no Data Report, é através do método Show. A chamada deve ser digitada dentro de um botão de comando, conforme mostrado no exemplo abaixo. Private Sub cmdImprimir_Click() rptProdutos.Show End Sub
Filtrando os dados mostrados no relatório O método “Filter” é uma ótima alternativa para filtrar os dados apresentados em um determinado relatório criado no DataReport. Ele dever ser usado antes do método show, conforme exemplos abaixo: deComercial.rscomProdutos.Filter = "pCodigo=1" rptProdutos.Show ou deComercial.rscomProdutos.Filter = "pCodigo=" & rptProdutos.Show
TxtCodigo_Produto
deComercial.rscomProdutos.Filter = "pDescricao= ′Polvilho Azedo 1′ " rptProdutos.Show ou deComercial.rscomProdutos.Filter = "pDescricao= ′ " & rptProdutos.Show
TxtDescricao & "′′"
Se por acaso o campo usado no filtro for uma data, esta deverá delimitada por duas tralhas (e.g. vData_Emissao=#2001-08-31#”).
Criando um relatório a partir de um Sub Command As mudanças em relação a um relatório que usa um único Command são poucas. Entretanto, vamos detalhar as diferenças para que seja mais fácil compreende-la. 1ª Mudança: deve ser indicado como “DataMember” o nome do “command pai”, a partir dele, o Data Report recupera os demais dados existentes no “command filho”. (Name): rptEntradas_Periodo Caption: Relatório de Entradas DataSource: deComercial DataMember: comEntradas 2ª Mudança: o uso do comando “Retrieve Structure”, deixa de ser opcional e passa a ser obrigatório. Observe que pelo fato do “Command” possuir um “Sub Command”, a partir de agora o relatório tem agora as seções “Group Header” e “Group Footer”. Para visualizalas, aumente a altura do formulário.
33. PACKAGE & DEPLOYMENT WIZARD Veja como gerar os discos de distribuição e o programa de instalação para a sua aplicação usando o PACKAGE & DEPLOYMENT WIZARD. •
A questão da distribuição
Você acabou de desenvolver uma aplicação em Visual Basic, testou, depurou e, finalmente, está pronto para distribuí-la aos usuários finais. Geralmente tais usuários não possuem o Visual Basic instalado em suas máquinas (você deve sempre considerar essa situação como a padrão). Você terá então que distribuir com sua aplicação uma série de arquivos DLL, e, se sua aplicação usar controles personalizados, terá também que distribuir os arquivos de controle VBX/OCX que utiliza. Para isto, ou você cria um programa de instalação com o Wizard, que determina os arquivos que você precisa distribuir, ou tenta determinar por si mesmo quais os arquivos precisam ser distribuídos. O Package & Deployment Wizard é fornecido com o Visual Basic e você poderá usá-lo para criar um programa que instalará sua aplicação na máquina do usuário. As tarefas básicas que o Package & Deployment Wizard faz são: • • • • •
Construir o arquivo executável (EXE) do seu projeto. Criar um programa de instalação para a sua aplicação. Determinar os arquivos necessários para a aplicação. Compactar os arquivos do programa, copiá-los e dividi-los em discos para distribuição (Disquete, CD-ROM, Disco Rígido e Redes). Criar um grupo de programas e um ícone no sistema do usuário.
Gerando o assistente de Instalação e os discos para distribuição Vamos descrever passo a passo o processo de criação do programa de instalação e da geração dos discos de distribuição para um projeto: agenda.vbp. Vamos supor que a distribuição será feita em discos de 3 1/2 (1.44) e iremos usar o Package & Deployment Wizard. Então vamos lá: 1 - Inicie o Package & Deployment Wizard, clicando em Iniciar > Programas > Microsoft Visual Studio 6.0 > Microsoft Visual Studio 6.0 Tools > Package & Deployment Wizard. Surgirá a tela abaixo:
2- Nesta tela, clicamos no botão Browse para selecionar o projeto. Em seguida, clicamos em Package. 3- Caso o seu projeto ainda não tenha sido compilado, aparecerá uma janela solicitando a compilação. Nela, devemos clicar em Compile. Em seguida, aparecerá a seguinte tela:
4- Nesta tela, basta selecionar Standard Setup Package e clicar em Next. Surge a tela seguinte:
5- Aqui selecionamos a pasta onde os arquivos de instalação serão gravados. Então clicamos em Next e:
6- Clicamos no botão Add para adicionar arquivos que serão distribuídos junto com a aplicação, como por exemplo, um arquivo de banco de dados. Clicando em Next:
7- Escolhemos se a instalação será distribuída em um único arquivo (HD, rede, CD) ou em vários arquivos (disquete), podendo especificar o tamanho. Clicando em Next:
8- Especificamos um nome para o programa de instalação. Next:
9- Definimos o local onde os ícones aparecerão no Menu Iniciar. 10- A partir daí, basta clicar em Next até finalizar o assistente clicando em Finish.