You are on page 1of 118
lrabalhando com MTiclcli: Ui) Meri Ijaui Francisco da Silva si ie l ivro ps a) — tits Cin REQUISITOS DE SOFTWARE E DE HARDWARE : ee Software VISUAL BASIC 6.0 - instalag3o tipica. Crystal Reports (que vem junto com 0 Visual Basic 5). O Visual Basic 6.0 esté incluso no pacote Visual Studio 6.0, roda nos sistemas operacionais Windows 95/98 e Windows NT 4.0 ou superior, e € especialmente indicado para confecgées de aplicagdes comerciais ou gestéo empresarial. Hardware CPU - minimo: 586, recomendado: Pentium. Meméria RAM - minimo: 16 MB, recomendado: 32 MB ou mais. Espaco em disco rigido - minimo: 250 MB. PREFACIO : Este livro ensina como criar aplicativos de Banco de Dados utilizando 0 Microsoft Visual Basic 6.0. Cada capitulo mostra um exercicio para desenvolver um aplicativo, como expilicacio passo a passo para desenhar e acessar a Base de Dados. © capitulo 1 apresenta o que € um Banco de Dados, seus componentes e seu acesso via Data Control por meio de uma aplicacao criada a partir do Visual Basic 6.0. O capitulo 2 mostra como acessar um Banco de Dados MDB com Visual Basic, utilizando a Biblioteca DAO 3.51 da Microsoft. Neste capitulo vocé também vai aprender como criar relatérios Via Crystal Report, com cddigo personalizado para filtrar dados pesquisados. © capitulo 3 apresenta a grande novidade dos titimos tempos da Microsoft para acessar Banco de Dados: 0 ADO 2.6. Este capitulo mostra como criar uma Barra de Ferramentas para chamar outra janela (padro dos programas para Windows) e o formuldrio de pesquisa de uma Base de Dados. Também mostra como acessar um Banco de Dados em um Servidor SQL Server (SQL Server 7.0 ou SQL Server 2000). Todos os exemplos mostram como trabalhar com ADO 2.6; vocé vai conhecer os comandos SQL (Select , AddNew; Update; Delete). No capitulo 4 hd um projeto proposto em que temos as telase alguns cédigos criados passo a passo pelas instrucdes do livro, com a linguagem SQL (Select, Insert, Update, Delete From). Se vocé nao conseguir criar 0 restante do cédigo, podera baixar o projeto da Intemet. SOBRE O MATERIAL DISPONIVEL Este livro possui quatro programas disponiveis na seg3o Download no site da Editora Erica (www.editoraerica.com.br). A fim deutiliza-losem seu computador, Enecessério que possua o Windows 95 (ou superior) , Visual Basic 6.0 e 0 Crystal Reports (que vemjunto como Microsoft Visual Basic 5.0) instaladosem suamaquina. 1) PDATA 2)PDAO, 3)PADO 4) PSQL. Nas pastas PData, Pdao ¢ Pado, os programas sao feitos passo a passo com as explicagdesdo livro. A pasta PSQL éum exemplode programafeitocomalinguagem SQL para vocé analisar e depois criar 0 mesmo aplicativo utilizando os exemplos explicados no livro. Projetos.exe 124 KB Procedimento para Download Acesse o site da Editora Erica Ltda.: www.editoraerica.com.br. A transferéncia do arquivo disponivel pode ser feita de duas formas: 1) Pormeiodo médulo pesquisa. Localize o livro desejado, digitando palavras- -chaves (nome do livro ou do autor). Aparecerao os dados do livro eo arquivo para download, entdo dé um clique sobre o arquivo executavel que sera transferido. 2) Por meio do botao “Download”. Na pagina principal do site, clique noitem “Download”. Serd exibido um campo, no qual devem ser digitadas palavras- -chaves (nome do livro ou do autor). Serdoexibidos o nome do livro eo arquivo para download. Dé um clique sobre o arquivo exeautavel que seré transferido. Procedimento para Descompactacao Primeiro passo: apés ter transferido © arquivo, verifique 0 diretério em que se encontra dé um duplo-clique sobre oarquivo. Serd exibida uma tela do programa WINZIP SELF-EXTRACTOR que conduziré vocé ao processo de descompactacao. ‘Abaixo do Unzip To Folder, existe um campo que indicao destino doarquivoque sera copiado para disco rigido do seu computador. C:\Projetos Segundo passo: prossiga com a instalagao, clicando no boto Unzip, 0 qual se encarrega dedescompactar osarquivos. Logoabaixo dessa tela, aparece @ barra de status a qual monitora o processoparaque vocé acompanhe. Apéso término, outra tela de informagao surgira, indicando 0 arquivo foi descompactado com sucesso e estd no diretdrio criado. Para sair dessa tela, clique no botdo OK. Para finalizar 0 programa WINZIP SELF-EXTRACTOR, clique no botao Close. SUMARIO: Capitulo 1 - Acessando Banco de Dados com Componente Data Control . 1.1 - Banco de Dados 1.2 - Componentes de um Banco de Dados 1.3 - Banco de Dados para Multiusuarios .. 1.4 - Banco de Dados Orientado ao Objet 1.5 - SQL - Structured Query Language .. 1.6 - Banco de Dados com o Visual Basic 6 1.7 - Criando a Base de Dados no Visual Basic 6.0 1.7.1 - Visual DataManger (VisData) 1.8 - Tipos de Dados do Visual Basic 6.0 .. 1.9 - Criando Banco de Dados para Nossa Primeira Aplicagio.. 1.10 - Criando 0 Formulario Principal ... 1.11 - Ligando a Base de Dados com 0 Formulario .. 1.12 - Principais Métodos Recordset Aplicveis a Data .. 1.13 - Veja 0 Cédigo Completo do Projeto Alunos .... Capitulo 2 - Acessando Banco de Dados com DAO 3.51.. 23 2.1 - Objetos de Banco de Dados... 2.2 - Objetos de Banco de Dados do Visual Basic 2.2.1 - Alguns Objetos de Banco de Dados... 2.3 - Declarando e Inicializando os Objetos.. 2.4 - Objeto Workspace . 2.5 - Métodos do Objeto Workspace..... 2.6 - Objeto Database ......... 2.7 - Algumas Propriedades do Objeto Database .. CollatingOrder Connect sue. Name QueryTimeout Updatable 2.8 - Alguns Métodos do Objeto Database Close... CreateRelation .. CreateTableDef... Execute... OpenRecordset 2.9 - Objeto Recordset. 2.10 - Métodos do Objeto Recordset .... 2.11 - Propriedades do Objeto Recordset 2.12 - Acesso a Base de Dados Via Cédigo (DAO)... Componentes... Componentes do Frame Opcées . Componentes do Frame Navegagio .. Componentes do Frame Pesquisa Propriedades do Formulério Alteracio Componentes do Formulrio Alteragio... Componentes do Frame Opcao Componentes do Formuldrio Incluséo... Componentes do Frame Opsio.. 2.13 - Exclusto de Registros 2.14 - Navegacao entre Registros .. 2.15 - Salvando os Registros ... 2.16 - Alteragio de Registros 2.17 - Impressao de Relatorio.... 2.18 - Cédigo do Boto Imprimir . 2.19 - Pesquisando Registros 2.20 - Confira 0 Cédigo do Projeto ... Capitulo 3 - Acessando Banco de Dados com a Biblioteca ADO... 3.1 - Acesso 4 Base de Dados Via ADO .. 3.1.1 - ADO 2.6 Microsoft® Active® Data Objects (ADO)....... 63 3.2 - Conexéo com Banco de Dados e RECORSETS.. 3.3 - Objetos do ADO 3.4 - Objeto Connection .. 3.4.1 - Error Object e Errors Collection 3.5 - Command Object 3.5.1 - The Parameter Objeto e Parameters Collection 3.6 - Objeto RECORDSET... 3.6.1 - Alguns Métodos do Objeto RECORDSET... AddNew .. Close... Delete... Update .... Open... MoveFirst. MovePrevious .. MoveNext.... MovelLast.... RecordCount ....... 3.7 - Objeto Campo e Coleco de Campos (Field Object e Fields Collection .. 3.7.1 - Objeto RECORDSET.. 3.7.2 - Alguns Métodos do Objeto RECORDSET .. 67 3.8 - Adicionando a Barra de Ferramentas .. 70 3.9 - Adicionando mais Formuldrios. 72 3.10 - Adicionando 0 Cédigo dos Menus e Barra de Ferramentas ...... 75 3.11 - Barra de Ferramentas .. 3.12 - Acessando Banco de Dados Via ADO .. 3.13 - Atualizando Dados de um Registro (Update) .... 3.13.1 - Apagando Registros ... 3.14 - Impressao.. 3.15 - Formularios de Pesquisa . 3.15.1 - Impresséo 3.16 - Usando Visual Studio 6.0 para Acessar SQL Server 7.0 ou SQL Server 2000... 3.16.1 - Client/Server Connectivity .... 3.16.2 - Stored Procedure 3.16.3 - Como Inserir um Novo Registro em um SQL Server Database? Capitulo 4 - Aplicativo SQL - Projeto Proposto ... 4.1 - Menus... 4.2 - Veja em Seguida 0 Cédigo do Formulario Principal ...... Acessando Banco de Dados com Componente Data Control 1.1 - Banco de Dados Banco de Dados é qualquer sistema que retine e mantém organizada uma série de informacdes relacionadas a um determinado assunto. Todos nds sabemos que existem gigantescas bases de dados gerenciando nosso dia-a-dia. De fato, sabemos que nossa conta bancaria faz parte de uma colecio imensa de contas bancarias de nosso banco. Nosso RG ou nosso Cadastro de Pessoa Fisica, certamente, estéo armazenados em Bancos de Dados do Estado. Sabemos também que quando sacamos dinheiro no Caixa Eletrénico de nosso banco, nosso saldo e as movimentagées existentes em nossa conta bancatia jd esto 8 nossa disposicao. Todos nds sabemos que existe a necessidade ‘de realizar o armazenamento de uma série de informacdes que no se encontram soladas umas das outras, ou seja, existe uma ampla gama de dados que se refere a relacionamentos existentes entre as informacdes a serem manipuladas. 1.2 - Componentes de um Banco de Dados Um Banco de Dados é composto pelas seguintes partes: Tabela, Campo, indice e Registro. Tabela — Representa 0 arquivo de dados. ‘Campo - Ea menor unidade deinformacdo existente em um arquivo de banco de dados. Registro - £ a entidade que identifica uma entrada tinica em um banco de dados. indice -Osindices das tabelas s30 muito importantes, pois permitem que sejam pesquisadas informagées com maior rapidez. Gerenciador de Acesso ao Disco: 0 SGBD utiliza o Sistema Operacional para acessar os dados armazenados em disco, controlando 0 acesso concorrente as tabelas do Banco de Dados. 0 Gerenciador controla todas as pesquises Queries solicitadas pelos usuarios no modo interativo, os acessos do compilador DML, os acessos feitos pelo Processador do Banco de Dados 20 Dicionario de Dados e também aos préprios dados. 1.3 - Banco de Dados para Multiusudrios Nesses modelos, os dados sao dispostos em registros, previamente ordenados em classes que descrevem a estrutura de determinado tipo de registro. Os registros séo descritos em relacdes de conjuntos em, que so estabelecidas as ligagées ldgicas entre eles, 1.4 - Banco de Dados Orientado ao Objeto Representam os dados como colecies que obedecem a propriedades, S80 modelos geralmente conceituais, dispondo de pouquissim aplicagdes reais. Nesse modelo, seria interessante a existéncia de um tabela de alunos e dentro dela alguma referéncia para cada regis! de cada aluno, de forma a podermos saber onde (em que estagio) aluno seencontra. Um conjunto de regras disponibilizaria em separadi 05 alunos de uma turma, que, no entanto, estariam agrupados a demais, para o sistema de pagamento de mensalidades, 15 - SQL - Structured Query Language Quando os Bancos de DadosRelacionais estavam sendo desenvolvid foram criadas linguagens destinadas a sua manipulacéo. Departamento de Pesquisas da IBM desenvolveu a SQL como fort de interface para o sistema de BD relacional denominado SYSTEM inicio dos anos 70. Em 1986, o American National Standard Instit (ANSI) publicou um padréio SQL. ASQL estabeleceu-se como linguagem padrao de Banco de Dad Relacional. 1.6 - Banco de Dados com o Visual Basic 6.0 O Visual Basic 6.0 manipula varios bancos de dados, ¢ entre eles est SQL Server 6.5 © 7.0; Access; Dbase; FoxPro; ODBC e Oracle; O link entre seu programa e 0 banco de dados acessado é feito © Microsoft Jet, um conjunto de fungées oferecidas pela Microsoft que manipula banco de dados. Para acessar 0 banco de dados Access, 0 mecanismo usado pelo Visual Basic 6.0 é o JET; jé par acessar outros Bancos de Dados Relacionais, o JET utiliza Drive ISAM; e para acessar banco de dados Cliente Servidor, o JET utili os drivers ODBC. 1.7- Criandoa Base de Dados no Visual Basic 6.0 1.7.1 - Visual DataManger (VisData) © VisData é um gerenciador de banco de dados que permite criar e modificar um banco de dados, criar tabelas, inserir, modificar e apagar registros e criar indices primarios. Além de criar Base de Dados MDB 2.07.0, vocé pode criar e modificar banco de dados dbf. Neste livro, itemos trabalhar com base de dados tipo .MDB, que é padro do Visual Basic e do Ms-Access, marcas registradas da Microsoft Corporation. 1.8 - Tipos de Dados do Visual Basic 6.0 Como toda linguagem de programacgo, o Visual Basic 6.0 possui varios tipos de dados aplicaveis as varidveis que definem quais os valores que estas poderao armazenar. Os tipos de dados determinam ‘© que vocé pode armazenar em uma variavel ou no campo de uma tabela. A tabela seguinte mostra os principais tipos de dados com os quais vocé pode trabalhar no Visual Basic 6.0: Tipo de Dados Tamanho Tntervalos| Intero (Integer) 2 Bytes De = 32.758 até 32.767 De =2.147.483.648 até Inteiro Longo (Long) 4 Bytes Saanee De -922337203685477.5008 ale Moses (Currency) EB ites 922337203605477.5807 Booleano (Boolean) 2 Bytes Verdadeiro ou Falso De I de Janeiro de 100 até 31 de Data (Date/Time) 8 Bytes inhen oe ACES Memorando(Memo) |” 32000 caracteres | Todas_as faixa de tipo de dados Texto(Text) 255 caracteres | Todas as faixas de dados 1.9-Criando Banco de Dados para Nossa Primeira Aplicagao Ctie uma pasta no drive; C:\ com 0 Nome PData, Ficaré assim C:|PData. 12) Abra o Visual Basic 6.0; se jé estiver aberto, tudo bem. 2°) Clique no Menu Add-Ins. 32) Clique em Visual DataManager... Vocé tera a seguinte tela (figura 1.1): Figura 1.1 4°) Clique no Menu File e depois em Open Databasese vocé qui abrir uma base de dados existente, e em New para criar ul nova base de dados; no nosso exemplo, clique em “We”. 5°) Na opgio New, escolha Microsoft Access 7.0; vocé terd seguinte tela (figura 1.2): 6*) Escolha onde deseja salvar 0 banco de dados, no caso C:| PData. 7°) Nocampo Nome do Arquivo, escreva BDados e clique no botao Salvar. 8°) Apés vocé clicar no botdo Salvar, terd a seguinte tela (figura 1.3). Clique com 0 botio direito do mouse em cima da opcao Properties e escolha New Table. 9°) Na tela Table Structure (figura 1.4), no Campo Table Name Digite: 7A/uno. Digite o Nome de Cada Campo e clique no botéo OK para — digitar 0 proximo campo. 119) Crie os seguintes campos: Nome do Campo (Name) | Tipo de Dados (Type) | Tamanho (Size) Nome Text 50, Endereco Text 50, Fone. Text 15 Cidade Tet 30, Mensalidade Currency Depols que digitar todos os nomes dos campos, clique no botéo Close. 12°) Crie o indice Primario; para isso clique no botdio Add Index: Figural.6 13°) No Campo Mame, digite: Nome, e clique no campo Nome na opcdo: Available Fields. 14°) Clique no botao Oke depois Close. 15°) Clique agora no botao Build The Table para salvar a tabela. 16°) Clique com o botao direito do mouse no nome da tabela e escolha Open para adicionar informagées a tabela ou Design para modificar a estrutura da tabela. 17°) Escolha Open e clique na opcdo Add para adicionar um novo registro e Update para salvar. (Coloque pelo menos dois registros.) Mensalidade 150) 1.10 - Criando o Formulario Principal Crieo formulério Cadastro de Alunos que teré olayout seguinte(figura 1.7): Cadastro de Alunos Dede fo Ane — Nene: FI Enowess: a Doe Soa TSE Figura 1.7 Abra um novo projeto ou use o existente se ja estiver aberto, e redimensione o formulario com as sequintes medidas e propriedades: Height: 6600 Width: 8835 Caption: Cadastro de Alunos Name: FrmAlunos BackColor: Branco BorderStyle: Fixed Single StarTupPosition: 2 Center Screen Salve com 0 Nome de: Alunos. VBP, 0 formulério pode deixar com 0 Nome de : FrmAlunos. Componentes: ‘Objeto Nome Caption label [EbITitulo Cadastro de Alunos: Framet___|FrDados Dados dos Alunos eS Freme2 FroOpcao Opes. 2 Frnavegacao Tbltione Text 2 Labels Lblgndereco Text2 [txt Endereco Labela Lblcidade Cidade: Text Txtcidade Labels LbiFone Fone: Text4 TxtFone Label6 ‘LblMensalidade | Mensalidade: MeskEdGox_[MskMensalidade B] M2 ,propriedade Format, escolha a opséo $#,##0.00; ($4, 40.00). Componentes do Frame Opgées: Objeto Nome Caption ‘CommandButton | BtnNovo Novo. CommandButton [BtnSalvar | sanar ‘CommandButton [BtnAlterar | Alterar ‘CommandButton [Btnexcluir | excluir ‘CommandButton [BtnPesquisa | Pesquisa CommandButton | Btnsair Sair Componentes do Frame Navegacao: ‘Objeto ‘Nome ‘Caption [CommandButton [BtnPrimeiro | |<< [CommandButton [Btnanterior |< Commandsutton [BtnProximo [> CommandButton [Btnvitimo [>>| 1.11 - Ligandoa Base de Dados com o Formulario O Data Control 0 controle basico para manipulacio de banco de dados é o Data Control que permite a navegacao entre registros de uma tabela sem vocé precisar digitar qualquer linha de cédigo. SS saa Figura 1.8 - Objeto Data Control. 2 2 3 2. Quando vocé 0 insere no formulario, ele fica com esta aparéncia: ICES) - > Di) Figura 1.9 Principais Propriedades do Controle Data: BackColor, ForeColor: Definem, respectivamente, as cores de fundo e de frente do objet Data. BOFAction, EFAction: Especifica as agSes a serem realizadas quando séo encontrado: respectivamente, 0 infcio e o fim do Recordset. BOFAction: 0 (Zero) - Movimenta o cursor para 0 primeiro registro(MoveFirst). 1 (Um) - Sinaliza 0 inicio do recordset. A seta de retorno de regi: fica desabilitada. EOFActio. 0 (Zero) - Movimenta para o ultimo registro (MoveLast). 1 (Um) — Sinaliza o fim do Recordset. Aseta de avanco de registro fi desabilitada 2 (Dois) — Adiciona um novo registro ao Recordset. Connect: Especifica 0 formato do Banco de Dados. DatabaseName: Especifica o nome do Banco de Dados. Exclusive: Especifica a forma de abertura do arquivo. Se configurado para True, abre o arquivo de forma exclusiva. Se configurado para False, abre © arquivo na forma multiusuario. RecordsetType: Especifica a forma de montagem dos dados. Suas op¢bes sao: Table, Dynaset e Snapshot. RecordSource: Especifica a tabela ou visao ldgica a ser aberta. Visible: Inibe a visualizagao do controle de movimentacdo dos registros quando configurada para false. 1,12 - Principais Métodos Recordset Aplicdveis a Data MoveFirst: Movimenta o cursor para o primeiro registro do Recordset. Exemplo: Datal.Recordset.MoveFirst (Datal é 0 nome do objeto Data; pode ser outro nome se vocé renomear), Movelast: Movimenta o cursor para o tiltimo registro do Recordset. Exemplo: Datal.Recordset.MoveLast MoveNext: Movimenta o cursor para o préximo registro do Recordset. Exemplo: Data1.Recordset.MoveNext MovePrevious: Movimenta o cursor para o registro anterior do Recordset. Exemplo: Data1.Recordset.MovePrevious BOF Indica 9 inicio da tabela. Exemplo: Datai.Recordset.BOF EOF Indica o fim da tabela. Exemplo: Datal.Recordset.EOF Edit Permite alteragées no registro corrente, Exemplo: Data1.Recordset.Edit Update Salva as alterac6es efetuadas. Exemplo: Data1.Recordset.Update AddNew Adiciona um registro em banco ao banco de dados, Exemplo: Datal.Recordset AddNew Delete Exclui 0 registro corrente da tabela ou consulta. Exempio: Datal.Recordset. Delete Ligue agora a base de dados “Bdados .mab” com o Formulario (FrmAlunos). Insira um controle Data no Formulério (FrmAlunos) abaixo do Frame: Opgtes e defina as seguintes propriedades: DataBaseName (C:\PData\Bdados.mdb) —ou seja, este ¢ocaminho em que se encontra a base de dados. RecordSource: Clique e escolha tabela “ TAluno". Visble: False. Agora que a ligacdo com a Base de Dadbos esta feita, ligue os campos da tabela com as caixas de texto criadas anteriormente. 1%) Clique na primeira Caixa de Texto (TxtNome). 2°) Escolha a propriedade: DataSource, em seguida clique no DropDawn, e clique no nome do Objeto data (Datal). 3°) Agora clique na propriedade DataField e escolha o campo Nome. 4°) Facaa mesma coisa para as demais Caixas deTextos, colocando 0 devido campo correspondente com os nomes delas. Depois de fazer a ligagéo dos Campos da Tabela com os Visualizadores de Dados, clique duas vezes no botéo Sair, e coloque o cédigo dele: privat End End sub Sub BtnSair_click( ) 5°) Salve mais uma vez o projeto; clique no menu Fi/ee na op¢ao Save Project. 6°) Execute a.aplicacao, clique na op¢ao Startno Menu Run; vocé tera mais ou menos a tela seguinte (figura 1.10): Cadastro de Alunos Mime RR Ende: (RUTSDE ABR Figurat.10 Clique no botdo Sair para finalizar a aplicacéo, e vamos colocar 0 cédigo dos demais botées. Quando aparecer este sinal (_ ) no final de uma linha codigo, indica que vocé devera continuar escrevendo mesma linha. Clique duas vezes no botdo |<< (BtnPrimeiro) e digite 0 cédi abaixo: Private Sub BtnPrimeiro Click( ) On Error GoTo Primeiro ‘Declando a Varidvel Primeiro: ‘Publicando a Variavel I€ Err.Number = 3021 Then ‘Tratando o Erro usando a Fung&o Err.Number (3021) MsgBox "Este € o Primeiro Registro!!”, vbinformation, ‘Cadastro de Alunos!!” Exit Sub Else Datal.Recordset .MoveFirst ‘levando o cursor para o Primeiro Registro End If End sub Feche a Janela de Cédigo, clique duas vezes no boto < (BtnAnterio € digite 0 cédigo abaixo: Private Sub BtnAnterior Click( ) On Error GoTo Anterior Anterior If Err.Number = 3021 Then MsgBox “Este é o Primeiro Registra! vbInformation, *Cadastro de Alunos Datal. Recordset .MoveFirst Exit Sub Else Datal .Recordset .MovePrevious End If End sub Feche a Janela de Cédigo, clique duas vezes no botdo > (BtnProxim € digite 0 cédigo seguinte: Private Sub BtnProximo_Click( ) On Exror GoTo Proximo Proximo: If Err.Number = 3021 Then MsgBox “Este é o Ultimo Registro! !", vbInformation, "Cadastro de Alunos!!" Datal. Recordset .MovePrevious ‘Levando © Cursor para o Registro Anterior Exit Sub Else Datal. Recordset .MoveNext ‘Levando 0 Cursor para o Proximo Registro End If End Sub Feche a Janela de Cédigo, clique duas vezes no botdo >>| (BtnUltimo) e digite o cédigo abaixo: Private Sub BtnUltimo_Click() On Error GoTo Ultimo Ultimo: If Brr.Number = 3021 Then MsgBox “Este € 0 Ultimo Registro vbInformation, “Cadastro de Alunos! !* Exit Sub Else Datal .Recordset .MoveLast ‘Levando 0 Cursor para o Ultimo Registro End Tf End Sub Salve novamenteo projetoe execute. Faga testes clicando nos botdes de navegacéo. Entre no modo de construcéo (programagéo) do programa e coloque 0s cédigos dos demais botdes, comecando pelos do Frame opcao. Clique duas vezes no botéo Novo (btnNovo) e na janela de Cédigo digite 0 cédigo a seguir: Private Sub BtnNovo_Click( ) Datal.Recordset.AddNew ‘AddNew 6 0 comando que coloca um novo Registro txtNome.SetFocus ‘Colocando o cursor no TxtNome usando 0 comando SetFocus End Sub Feche a Janela de Cédigo, clique duas vezes no botéo Salv (BtnSalvar) e digite 0 cddigo abaixo: Private Sub BtnSalvar_Click( } T£ Len(txtNome.Text) = Empty Then ‘Verificando se txtNome esta Vazio usando a Fungéio Empty MsgBox ‘B Necessdério Preencher o Nome do _ Funcionério!”, vbInformation, “Cadastro de Alunos!* txtNome. SetFocus Else Datal.UpdateRecord ‘Salvando o Registro ‘Mensagem confirmando a Inclus&o dos Dados MsgBox “Incluso com Sucesso!’, vbInformation, “Cadastro de Alunos Novo!” End If End Sub Feche a Janela de Cédigo, clique duas vezes no botéo Alte (BtnAlterar) e digite 0 cédigo abaixo: Private Sub BtnAlterar_Click() Din Alterar As String Alterar = MsgBox("Alteragdo Realizada!!”, vbInformation, “Altera¢éio no Cadastro de Alunos!") Datal.UpdateRecord End sub Feche a Janela de Cédigo, clique duas vezes no botao Excl (BtnExcluir) e digite 0 cédigo abaixo: Private Sub BtnExcluir Click( ) Dim Excluir As String Excluir = MsgBox ("Deseja Excluir Este _ Registro?", vbQuestion + vbYesNo, “Cadastro de _ Alunos! !") If Excluir <> vbYes Then Exit Sub Else Datal.Recordset .Delete Datal.Refresh End If End sub Feche a Janela de Cédigo, clique duas vezes no botdo Pesquisa (BtnPesquisa) e digite 0 cédigo abaixo: Private Sub BtnPesquisa_Click( ) Dim Pesquisa As String ‘Declarando a Varidvel Pesquisa = InputBox("Qual o Nome do Aluno?”, _ “cadastro de Alunos!!*) ‘Criando o contetido da Variavel If Pesquisa = *” Then Exit Sub ‘Saindo da Rotina Caso vocé nao digite nada ou Clique no Botéo Cancelar Else Datal.Recordset.FindFirst "Nome = ‘* & Pesquisa &_ “** ‘Bigendo © Valor da Varidvel com o campo NOME usando 0 Comando (FindFirst) If Datal.Recordset.NoMatch Then ‘caso ndo localize © Nome Digitado vocé usa o Comando NoMatch ‘Mensagem Exibida se o Nome nao for Encontrado MsgBox “Aluno n&o Localizado!", vbInformation, _ “cadastro de Aluncs!” Exit Sub ‘Saindo da Rotina de Pesquisa End If End If End sub 1,13 - Veja o Codigo Completo do Projeto Alunos private Sub BtnAlterar_Click( } Dim Alterar As String Alterar = MsgBox(*Alterac&o Realizada!!", vbInformation, “Alterac&io no Cadastro de Alunos!*) Datal .UpdateRecord End sub Private Sub BenAnterior_Click( ) On Error GoTo Anterior Anterior: If Erx.Number = 3021 Then MsgBox “Este € 0 Primeiro Registro! vbInfornation, “Cadastro de Alunos!!* Datal Recordset .MoveFirst Exit Sub Else Datal. Recordset .MovePrevious End If End Sub Private Sub BtnExcluir_click( ) Dim Excluir As String Excluir = MsgBox("Deseja Excluir Este _ Registro?", vbQuestion + vbYesNo, "Cadastro de _ Alunos!!") If Excluir <> vbYes Then Exit sub Else Datal.Recordset .Delete Datal.Refresh End Tf End sub Private Sub BtnNovo Click( ) Datal.Recordset .AddNew ‘AddNew 6 0 comando que coloca um nove Registro txtNome. SetFocus ‘Colocando o cursor no TxtNome usando 0 comando SetFocus End Sub Private Sub BtnPosquisa Click( ) Dim Pesquisa As String ‘Declarando a Varidvel Pesquisa = InputBox("Qual o Nome do Aluno?", “Cadastro de Alunos!!") ‘Criando o contetido da Varidvel If Pesquisa = ** Then Exit Sub ‘Saindo da Rotina Caso vocé nao digite: nada ou Clique no Botaéo Cancelar Else Datal.Recordset .FindFirst "Nome = ‘* & Pesquisa “*™ ‘pigando o Valor da Varidvel com 0 campo NOME, usando 0 Comando (FindFirst) If Datal.Recordset.NoMatch Then ‘Caso ndo localize © Nome Digitado vocé usa o Comando NoMatch ‘Mensagem Exibida se o Nome ndo for Encontrado MsgBox “Aluno ndo Localizado!”, vbInformation, “cadastro de Alunos!”* Exit Sub ‘Saindo da Rotina de Pesquisa End Tf End If End Sub Private Sub BtnPrimeiro Click( ) On Error GoTo Primeiro ‘beclando a varidvel Primeiro: ‘Publicando a Varidvel If Err.Number = 3021 Then ‘fratando 0 Erro usando a Fungo Err.Number (3021) MsgBox “Este é 0 Primeiro Registro! !", _ vbInformation, “Cadastro de Alunos! !” Exit Sub Else Datal Recordset .MoveFirst ‘levando 0 cursor para © Prineiro Registro End If End sub Private Sub BtnProximo Click ( ) On Error GoTo Proximo Proximo: If Err.Number = 3021 Then MsgBox “Este 6 o Ultimo Recistro!!", vbInformation, “Cadastro de Alunos! Datal Recordset .NovePrevious ‘Levando o Cursor para o Registro Anterior Exit sub Else Datal.Recordset.MoveNext ‘Levando o Cursor para o Préximo Registro Bnd Tf End sub Private Sub BtnSair Click( ) End ‘Pinalizando a Aplicagdo End Sub Private Sub BtnSalvar_Click( ) T£ Len(txtNome.Text) = Empty Then ‘Verificando se txtNome esta Vazio usando a Funcdo Bmpty MsgBox “ Necessdrio Preencher o Nome do _ Funcionério!*, vbInformation, “Cadastro de Alunos!” txtNome. SetFocus Else Datal.UpdateRecord 'Salvando o Registro ‘Mensagem confirmando a Inclusie dos Dados MsgBox “Inclusdo com Sucesso!", vbInformation, “Cadastro de Alunos Novo!” End If End Sub Private sub BtnUltimo_click( ) On Error GoTo ULtino Ultimo: 1 Err.Nunber = 3021 Then MsgBox ‘Este é 0 Ultimo Registro!!", vbInfornation, “Cadastro de Alunos!!* Exit Sub Else Datal.Recordset .MoveLast ‘Levando 0 Cursor para ltimo Registro End If End Sub Acessando Banco de Dados com DAO 3.51 2.1 - Objetos de Banco de Dados . No aplicativo anterior, vocé observou que o Visual Basic oferece uma forma de manipulacao de dados por meio do Objeto Data Control. No : préximo aplicativo, vocé ira estudar os OBJETOS de acesso a banco + de dados via cédigo. : Objetos t Podemos definir um objeto como sendo um tipo de dado complexo que possui propriedades e métodos. As propriedades tém relacéo com as caracteristicas e configuracdes desses objetos, como, por exemplo, cor, borda, etc. E métodos s40 sub-rotinas embutidas no objeto que servem para executar uma determinada operacao. Exemplo: AddNew, Update, Delete, etc. Uma das grandes vantagens da programacgo baseada em objetos é a manutenco de sistemas. Caso vocé precise fazer manutengéo no sistema, ou em alguma propriedade ou método, as alteracoes séo internas ao objeto, no refletindo nos sistemas que usam esses ‘objetos. 2.2 - Objetos de Banco de Dados do Visual Basic Os objetos de banco de dados so a representaco Idgica de algum componente de um banco de dados. Por meio desses objetos poderemos manipular determinados componentes de um banco de dados, 2.2.1 - Alguns Objetos de Banco de Dados DDEngine Objeto que representa o Mecanismo JET. O DBEngine contém e controla todos os objetos de acesso a dados. WorkSpace Define uma classe Workspace, definindo uma sessdo de trabalho para um usuério. 0 objeto Workspace contém os bancos de dadosabertos, provendo métodos para o controle de transacGes e a seguranga em termos de grupos de usuarios em um banco de dados. Bi a ic 6. TH D. B Visual *) Fi RecordSet Um objeto da classe Recordset representa um conjunto de regis cobtidos por uma tabela, Query ou comandos em SOL. QueryDef Uma query € uma pesquisa, ctiada para podermos aces: determinados registros que satisfagam uma condicgo. Index Uma classe Index representa um indice de uma tabela. Field Um objeto da classe Field representa um campo de um Record: 2.3 - Declarando e Inicializando os Objetos Para trabalharmos com objetos, devemos fazer o seguinte: Médulo Declarar uma variével como sendo do tipo objeto por meio comando global. Formulario Declarar uma varidvel como sendo do tipo objeto por meio comandos Public ou Dim. Inicializar um objeto, usando 0 comando ser. Exemplo: Global Area as Workspace Global BD as Database Global 7B as Recordset Public sub Abrir( ) Set BD=Area.OpenRecordset (*C:\Pdao\Pdao.Mdb", Fal: Set TB=BD.OpenRecordset (*Tfuncionario", dbOpenDynasel End Sub Este exemplo acima mostra a abertura do banco de dados e a tal 126) 2.4 - Objeto Workspace Como explicado anteriormente, a classe Workspace define uma sesso para um usuario. O objeto Workspace contém os bancos de dados abertos para vocé fazer os métodos para uma transagéo e para trabalho em grupo seguro. 2.5 - Métodos do Objeto Workspace OpenDatabase Abre um banco de dados. g5 Exemplo: g 3 Set Variavel-orkspace .OpenDatabase ( Nome{ , Modo §< Exclusivo]{ , Sé para Leitura]{ , Tipo de Banco de ead Dados] ) 5 3 5 @ Variavel: é uma variavel declarada do tipo Database. Foo @ Modo Exclusivo: se for igual a True, s6 0 usudrio que abriuo ge banco de dados primeiro pode acessar seu registro. Se for igual a a False (Default), 0 banco de dados pode ser acessado por mais de um usuario. & Sé para Leitura: se for igual a True, o banco de dados sé pode ser lido. Sefor igual a ¥a se, novos registros podem ser incuides. @ Tipo de Banco de Dados: dBese III, dBase IV, Paradox, Btrieve, ODEC, Fox Pro etc. BeginTrans Inicia uma transacdo. Permite tratar as alteracdes de um ou de varios arquivos como uma Unica operagao; é muito utilizado em ambiente de rede, pois evita que aigum problema na rede prejudique as alteracées feitas nos arquivos. Exemplo: WorksPace .Begin?rans CommitTrans Termina uma transacio, gravando todas as alteracdes realizadas apés 0 comando BeginTrans. Exemplo: Workspace.comnitt'rans : RollBack . Cancela uma transaco, desfazendo todas as alteracées realiza : apés 0 comando BeginTrans. Exemplo: Workspace .RollBack Close Fecha um banco de Dados aberto. Exemplo: Workspace .Close 2.6 - Objeto Database O objeto Database éa representacao légica de um banco de dad Esse objeto possui propriedades e métodos que seraio utilizados pai gerenciar um banco de dados. 2.7 - Algumas Propriedades do Objeto Databa: CollatingOrder Retora um valor que especifica a seqUéncia de ordenacio de te para comparacao de strings. Connect Oferece informacées sobre a conexio com arquivo externo ou co uma tabela. Name Refere-se ao pardmetro nome do Objeto Database. QueryTimeout Retorna 0 nlimero de segundos antes de um erro ocorrer quan vocé tenta fazer uma pesquisa em um banco de dados por meio Drivers ODBC. Updatable Informa se os registros podem ou néo ser alterados. 2.8 - Alguns Métodos do Objeto Database Close Fecha o banco de dados. Exemplo: BD.Close CreateRelation Cria um novo objeto Relation, que representa um relacionamento entre campos em tabelas ou pesquisas. CreateTableDef Cria um novo objeto TableDef, que representa a estrutura de uma tabela. Execute Executa uma pesquisa ou um comando SQL em um banco de dados especificado. OpenRecordset Cria um novo objeto Recordset, que representa um conjunto de registros. 2.9 - Objeto Recordset O objeto Recordset representa os dados de uma tabela ou 0 resultado de uma pesquisa. Nas versées anteriores do Visual Basic, havia trés tipos de objetos para acesso a banco de dados: Table, Dynaset € Snapshot. Tipo Table Representa uma tabela na qual podem ser inseridos, alterados ou apagados os registros. Tipo Dynaset Representa o resultado de uma pesquisa cujos valores podem ser alterados. Um recordset Dynaset ¢ registros do tipo Dynaset podem conter registros de_mais de uma tabela em um banco de dados. Acessando Banco de Dados com DAO 3.51 Tipo Snapshot Representa uma c6pia estatica de um conjunto de registros que pt ser usado para gerar relatdrios ou consultas, A diferenca ent Snapshot e os demais é que seus dados nao podem ser alterados. 2.10 - Métodos do Objeto Recordset AddNew ria um novorregistro em branco no Recordset. Apés inserir os dat use 0 método Update para grava-los na tabela. CancelUpdate Cancela qualquer atualizagao pendente para o Recordset. Close Fecha o Recordset corrente. Delete Exclui o registro corrente. Edit Edita (altera) o registro atual. Apds alterar os dados, use o mét Update para salva-los na tabela. FindFirst Localiza o primeiro registro que satisfaca a condicéo especificad FindLast Localiza o Ultimo registro que satisfaga uma condicao. FindNext Localiza o préximo registro que satisfaca uma condicio especificat FindPrevious Localiza © registro anterior ao atual que satisfaca a condic especificada. Seek Localiza um registro baseado na condicio especificada, desde q tabelaesteja indexada. Voc8 precisa estabelecer o indice corrente meio da propriedade Index. Exemplo: VariavelRecordset .Seek Conparagao, Chavel, Chave2 Chave3 etc. em que comparacao é uma das expressées abaixo: As chaves correspondem ao estabelecimento da propriedade Primary da tabela. 2.11 - Propriedades do Objeto Recordset Algumas propriedades do Objeto Recordset: AbsolutePosition Retorna ou estabelece a posicao do registro corrente de um objeto Recordset. BOF Se for iguala True, indica que estamosno primeiro registro databela. BookMark Retorna ou estabelece um valor que marca 0 registro corrente. ChacheSize Indica 0 némero de registros que iré para meméria cache para melhorar a perfomance de uma conexdo via ODEC. EdiMode Indica 0 modo de edicaio do registro corrente. EOF Se for iguala True, indica que estamos no iiltimo registro da tabela LockEdits Se for igual 2 True, o registro fica travado enquanto estiver sendo alterado, e sé édestravado quando 0 método Update ou algum dos métodos Move ou Find for executado. Se for igual a False, 0 registro s6 é travado durante a execug3o do método Update. a Acessando Banco de Dados com DAO 3.51 NoMatch Se for iguala True, indica que o Ultimo comando de pesquisa (See! no encontrou nenhum registro. RecordCount Retorna 0 ntimero de registros acessados no Recordset. Sort Retorna ou estabelece a ordenacao dos registros no Recordset. 2.12 - Acesso 4 Base de Dados Via Codigo (DA Uma vez que vocé definiu a interface para a aplicacao, seu proxir passo é associa-la base de dados. Mas antes disso, crie o seguint banco de dados: 1°) Crie uma Pasta no Diretdrio raiz C: c:\Pdao. 2°) Nome do Banco de Dados: FOLHA.mdb. 3°) Crie a sequinte Tabela: Tfuncionario. 4°) Crie os campos relacionados para a tabela funcionario: NOME DO CAMPO TIPO DE DADOS. TAMANHO Codigo ‘AutoNumeragao ou Numérico Nome. Texto 40 Endereco Texto EY Salario Moeda’ Observacad| Crie um indice Primério para. 0 Campocodico. 5%) Preencha com mais ou menos dois registros: ‘CODIGO NOME ENDERECO ‘SALARIO, 1 ‘AMERICO. AV. PAULISTA, 546 1.542,00 2___| MARCIA CRISTINA | RUA DAS PALMETRAS, 456 | 2500 Agora que a base de dados estd pronta, crie as telas para visualize os dados na aplicacSo criada em Visual Basic 6.0, usando o objel (Data Access Objects) DAO 3 .51 ou simplesmenteo “Micros! DAO 3.51 Objetct Library” (figura 2.1). Figura 2.4 ‘Abra um novo projeto no Visual Basic 6.0, entre no Menu File e escolha a subopcd0 New Project. Crie a seguinte tela (figura 2.2). a =] Cadastro de Funcionarios Dacor do Fucks ode: Nowe: Caption: Cadastro de Funciondrios Name: FrmCadastro BackColor: Branco BorderStyle: 2~ Sizable ForeColor: Branco Height: 6915 StarTuPosition: 2 - centerScreen Width: 9690 Componentes Lb1ritulo Cor: Borderwidth: 5 FrDados Dados dos Funcionarios. Frame2 Frame3, FrNavegacao Frame4 FrPesquisa Lblcodigo Label3, Label4 LblEndereco Label5 Lblsalario TxtCadige Text2 ‘TxtNome Text3 ‘TxtEndereco MaskEdBoxi_|MskSalario Componentes do Frame Opcées ‘Objeto_[ Nome (Name) | Caption | Commandi [BtnNovo &Novo Command? [Btnalterar | aAlterar Command3 | BtnExcluir &Excluir Command4 [Btnimprimir | sdmprimir ‘Commands [Stnsaix &Sair Componentes do Frame Navegacao Objeto | Nome (Name) | Caption Commandi [BtnPrineiro [|<< Command2 [BtnAnterior |< Command3 [BtnProximo [> Command [Btnvitimo [>>| Componentes do Frame Pesquisa ‘Objeto_| Nome (Name) Caption Label1 1blNomePesquisa_|Nome do Funcionério para juisa Texti TxtPesquisa Commandi_| BtnPesquisa Pesquisa Salve o Projeto com o nome de PDAO. vpb; e o formuldrio deixe com oO nome de Frmcadastro. Crie mais um formuldrio pelo menu Project Add Forme deixe com a seguinte aparéncia (figura 2.3): Alteracao de Funcionarios peter Dacor tos orci Nowe: RGREERTAGE ndaege; _ RCWRORETE————— Savin [ERT Figura 2.3 Propriedades do Formuldrio Alteracao Caption: Alteracdo de Cadastro Name: FrmAlterar BackColor: Branco BorderStyle: 2- Sizable ForeColor: Branco Height: 5610 StarTuPosition: 2 - CenterScreen width: 8775 Componentes do Formulario Alteracdo . Objeto _| Nome (Name) Caption 2 Labiet EbIPitule | Alteragdo de Funciondrios Line Cor: Pink | BorderWidth: 5 Framel FrDados Dados dos Funciondrios Framez Fropeao Opgies Label2 LblNone Nome: Label3 Tbigndereco_| Enderego: Label Tbisalario | Salario: =| Text TxtNome Text2 TxtEndereco MaskEdBox1 | NskSalario Componentes do Frame Opcéo Objeto_ [Nome (Name) | Caption Commandi | BtnSalvar Salvar ‘Command2 [Btacancelar |Cancelar Crie mais um formulario pelo menu Project Add Form e deixe a seguinte aparéncia (figura 2.4): Incluséo de Funcionarios Figura 2.4 136) Caption: Inclus&o de Novos Funciondrios Name: FrmIncluir BackColor: Branco BorderStyle: 2- Sizable ForeColor: Branco Height: 5610 StarTuPosition: 2 - CenterSereen width: 8775 Componentes do Formulério Inclusao Objeto | Nome (Name) Caption Lablet LbiTitule [Inclusdo de Funciondrios - Line Cor: Pink | BorderWidth: 5 eS Framet Frbados Dados dos Funcionérios g Frame2 Fropcao Opgées iS Label2 LbINome Nome: 3 Label3 Lblgndereco |Endereco: a5 Label4 LbiSalario | Salario: g Text TxtNome & Text2 TxtEndereco MaskEdBox1 Msksalario Componentes do Frame Op¢ao ‘Objeto [Nome (Name) | Caption Command1 |BtnSalvar Salvar ‘Command2 |BenCancelar | Cancelar Dados com DAO 3.51 Salve novamente o projeto. Agora vocé ira ligar a base de dados as telas criadas anteriormente, utilizando a Biblioteca - “Microsoft DAO 3.51 Objetct Library”. Para isso entreno Menu Project e depois na subopsio References. .., Vocé terd a seguinte tela (figura 2.5): [eva Back Fx pleas ~ Val tone rare ebjocts and precede Maul ask obec and procedures oe i ‘ive Setup Cont Lary | Acveov cot type ary Figura 25 Clique na Biblioteca Microsoft DAO 3.51 object Libraryq € uma biblioteca para acesso a dados, depois clique no botao O! Depois que vocé adicionou a Biblioteca, insira noprojeto ummddul Clique no menu Project edepois em Add Module. Déo nome médulo de Nacodigo. Agora crie as seguintes varidveis dentro médulo: Global AFolha As Workspace ‘Ciando avarive para adres detratalto do ai Global BFolha As Database ‘*ciandoa varivel para o objeto banco de Global TpFuncionario As Recordset, TFuncionario As Recordset * Varives pra as tbelas ou consults Ainda no médulo, crie as sequintes funcées: Public sub Abrir( ) ‘Fungo pera abrir o banco de dades Set AFolha = DBEngine.Workspaces( 0 } On Error GoTo ErroAbrir variével para Tratarérros AFolha.BeginTrans "rand es operares ro bance de Set BFolha = AFolha.OpenDatabase _ (*C:\PDAO\folha.mdb", False) ——‘Absinds obancode dads Set TFuncionario = BFolha.OpenRecordset _ (“TFuncionario", dbOpenDynaset) ‘AbindsaTatela TFuncionario.Sort = “Codigo" ‘Clssicendo e Tabela Pele c Set TbFuncionario = TFuncionario.OpenRecordset ( "Faleando a abertura da Tabela AFolha.CommitTrans "Finaleando a Transagdo no Banco de Dados On Error GoTo 0 Exit Sub ErroAbri: Dim Aviso As Integer Aviso = MsgBox("Erro ao Acessar os Dados!”, vbCritical, ‘Aviso! !*) I£ Aviso = vbOK Then AFolha.Rollback — * Rallfcké wn comands que desfx 2 operaséo, cas0 acontega slgum erro na abertra do banco de dsdos com ‘grvar asinfoenagies. on Error GoTo 0 Exit Sub End If Resume End sub Arotina abaixo servird para vocé visualizar as informagées ao ea ar canleatio, Public Sub ExibirDaos( ) FrmCadastro.txtCodigo = “* FenCadastro.txtNome = “* FemCadastro.txtEndereco = ‘” FenCadastro-MskSalario = ** On Error Resume Next Frmadastro.txtCodigo.Text = TFuncionario!codigo FrmCadastro.txtNome.Text = TFuncionario!Nome FrmCadastro.txtindereco. Text = TFuncionario!Endereco FrmCadastro.MskSalario.Text = TFuncionario!Salario On Error GoTo 0 End sub Ao terminar as rotinas acima, feche a janela de cédigo do médulo, e entre no Formulario Cadastro, clique duas vezes, dentro do formulério | fora de qualquer outro objeto, para abrir a op¢ao: Private sub Form Load() End Sub As linhas em negrito sdo as propriedades de cada objeto. 0 codigo sdo as linhas escritas normalmente, Dentro desta Private Sub, digite os nomes das fungdes criadas no médulo. Private Sub Form Load( ) Abrir ExibirDados End sub Salve 0 projeto novamente e execute a aplicagSo apertando a F5, ou clicando no botéo start; vocé terd mais ou menos essa (figura 2.6): Cadastro de Funcionarios ne We Be) ba | greed | —— sa) a | none Fanconi par Pennsen : se | Ea Figura 2.6 Pare a aplicac3o. Se vocé jé colocou 0 cédigo do botao Sair, bem; se ndo, digite o seguinte cédigo: Private Sub BtnSair Click( ) End End sub Vamos colocar 0 cédigo dos demais botdes. Para o botdo Novo i chamar o formulario FrmIncluir por meio do Bot&o Novo; di cédigo seguinte: Private Sub BtnNovo Click( ) FrmIncluir. Show 1 znd sub Para fechar 0 formulario Inclusdo, digite 0 cédigo abalxo no Cancelar: Private Sub BtnCancelar Click( ) FrmIncluir .Hide Unload we End Sub aa Clique duas vezes no botdo Alterar para chamarmos 0 formulario : FrmAlterar: Private Sub BtnAlterar_click( ) FrmAlterar.show 1 End Sub Para fechar o formulario Alteragao, digite 0 cédigo abaixo no botdo : Cancelar: Private Sub BtnCancelar_Click() FrmAlterar Hide Unload Me End sub Salve o projeto novamente, execute pressionando F5 e clique nos botées Novo € Alterar. Analise se apareceram os formuldrios Inclusdo € Alteracao respectivamente, depois pare a aplicaco e adicione 0 cédigo para os demais botdes. Para adicionar 0 cédigo do botao Excluir, vocé iré usar os métodos de pesquisa para saber se est no inicio ouno fim databela; e também criar variaveis para que perguntem se o usuario deseja excluir o registro. 2.13 - Exclusao de Registros Dé um duplo-clique no botao excluir e digite 0 cédigo seguinte: Private Sub BtnExcluir_Click( ) If TFuncionario.£0F = True and TFuncionario.BOF = True _ ‘Then ‘Por mete das Propriedzdes BOF e EOF verficamos se estamos no inico uno fal da fade MsgBox “A Tabela ja est vazia!”, vbInformation, “Alerta!* Exit sub nd if Dim Exluir As string Excluir = MsgBox(*Deseja excluir este Registrol", _ vbguestion + vboxCancel, “Aviso! !) If Excluir = vbOK Then arolha.BeginTrans “Iniciando @ Operagao na Tabela com o comando Begintrans Truncionario.Delete ‘wanda. comando DELETE para apagar 0 registo ‘TFuncionario.MoveNext ExibirDados AFolha.CommitTxans * Finaizando a Operagio na tabela Else Exit Sub Bnd Tf End Sub OE Quando aparecer este sinal (_) no final de uma lin ~ codigo, indica que vocé deverd continuar escrevenc mesma linha. 2.14 - Navegacao entre Registros $ Para podemos visualizar os demais registros, temos os bot6 : navegacao: = l<< 2 Bi >>| Primeiro Anterior Préximo_—_—Uitimo me: = Para visualizarmoso préximo registro, iremos usar ométodo Movel MoveLast para o Ultimo; MovPrevious para anterior e MovFirst, © primeiro. 6.0— ic os Clique duas vezes no boto corresponde ao primeiro, e digite 0 coe abaixo: anco di Private Sub BtnPrimeiro Click() If TFuncionario.£OF = True And TFuncionario. = True Then MsgBox “A Tabela estd Vazia!", - vbExclamation, “Aviso!” Exit Sub End If Visual at On Error GoTo Primeiro TFuncionario, MoveFirst BxibirDados Exit Sub Primeiro: If Brr.Number = 3021 Then MsgBox "Voc j4 esta no Primeiro Registro!”, vbInformation, “Aviso! ‘TPuncionario.MoveFirst ExibirDados Exit Sub End If End Sub No cédigo acima ha variével para tratamento de erros. Se vocé no botio e for registro em branco, ou melhor, ndo existir d acontecera o ERRO 3021. Dé um duplo-clique no bot&o Anterior e digite as linhas de cédigo seguintes: Private Sub BtnAnterior Click( ) Xf Truncicnario.20F = True And TFuncionario.BOF = True - Then MsgBox “A Tabela esté Vazi saviso!” Exit sub End If , vbExclamation, ~ On Error GoTo Anterior truncionario.Noverrevious ExibizDados Exit sub anterior: af Err.Nunber = 3021 Then Msguox “Voce j4 esta no Primeiro Kegistro!”, - vbinformation, ‘Aviso!!* ‘TFuncionario.NoveFirst Exibirbados Exit Sub nd If End sub Clique duas vezes no botdo correspondente 20 préximo e digite o cédigo seguinte: Private Sub btnproximo_Click( ) If TFuncionario.BOF = True And TFuncionario.BOF = True - Then MsgBox "A Tabela estd Vazia!*, vbExclamation, “aviso!* Exit Sub End If On Error GoTo Proximo ‘TFuncionario.NoveNext ExibirDados Exit Sub Proxin If Err.Nunber = 3021 Then MsgBox ‘Vocé j4 esta no Ultimo Registro!", - vbInformation, ‘Aviso! !" ‘TFuncionario.MoveLast ExibizDados Exit Sub End If End sub Dé um duplo-clique no botdo Ultimo e digite as linhas de seguintes: Private Sub BtnUltino Click() If TPuncionaric. FOF = True And TFuncionario. BOF ‘True Then MegRox ‘A Tabela esté Vazial*, vbExclamation, vavigo!" Exit sub End If on Error GoTo Ultimo ‘TPuncionario.NoveLast ExibirDadoe Exit sub Uleimo: If Erx.Nunber = 3021 Then MsgBox ‘Vocé 34 esta no Ultimo Registro!*, — vbinformation, ‘Aviso!!* ‘TFuncionaric.Novelast ExibirDadoe Exit sub End If End sub 2,15 - Salvando os Registros Entre no formulario Inclusdo e clique duas vezes no botéo Nessa rotina, vocé ird user um comando que pesquise preenchido o campo devidamente; a fungdo é um comando i do Visual Basic (Len). A fungdo Len retorna um niimero em inteiro longo, val caracteresem uma string, ouosniimeros de bytes requerid a variavel da store. Também vocé ird criar funcGes de tratamento de erros caso a alguma coisa de errado ao acessar a tabela ou os campos. Ao as informaces, os dados ficardo em maiiisculos porque aqui usar também outra fungdo, Ucase$ (transforma caracteres mint em maitsculos). Private sub BtnSalvar_Click() If Len(txtNone.Text) = 0 Then MsgBox “S necess4rio Preencher o Nome do _ Funcionério!’, vbInformation, “Aviso!” txtNome . SetFocus Exit Sub End If Tf Len (txtEndereco.Text) = 0 Then MsgBox “f necess4rio Preencher o Enderego do _ Funcionério!*, vbInformation, “Aviso!” txtEndereco.SetFocus Exit Sub End If If Len(MskSalario.Text) = 0 Then MsgBox “f necessdrio Preencher 0 Saldrio do_ Funcionério!’, vbInformation, “Aviso!” MskSalario. SetFocus Exit Sub End If On Error GoTo ErroNovo AFolha.BeginTrans “Inilando a transagio no 8D TFuncionario.AddNew — * Giadoonovoreyisro If Len(txtNome.Text) <> 0 Then _ TFuncionario!Nome = UCase§ (txtNome. Text) If Len(txtEndereco.Text) <> 0 Then _ TFuncionario!Endereco = UCase$(txtEndereco.Text) If Len(MskSalario.Text) <> 0 Then _ TFuncionario!Salario = UCase$(NskSalario.Text) ‘TFuncionario.Update —_* Sakando os dados digitados AFolha .Commit'Trans * Fnalizando a tansacio ro &D ExibirDados On Error GoTo 0 txtNome.Text = Empty txtEndereco.Text = Empty MskSalario.Text = Empty txtNome . SetFocus Set ThFuncionario = TFuncionario.openRecordset () Exit Sub ErroNovo: Dim Aviso As Integer Aviso = MsgEox(*Erro ao Acessar os Dados!",_ vbInformation, “Aviso!") I£ Aviso = vbCancel Then AFolha -RolLback *canatando as medfiaes we acortee gure cosa erate On Error Goto 0 Exit Sub End If Resume End Sub Cédigo do botSo Cancelar do formuldrio Incluséo. Private Sub BtnCancelar_Click() Frmincluir.Hide Unload Me znd Sub 2.16 - Alteragao de Registros Para fazer alteracdes nos registros, temos que pesquisar e me registro a ser alterado no formulario Alteracao. Para isso cliqi vezes dentro do formuldrio Alterar e digite 0 cédigo abaixo: Private Sub Form Load( ) On Error Resume Next txtCodigo.Text = TFuncionario! codigo txtNome.Text = TPuncionario!Nome txtEndereco.Text = TFuncionario!Endereco MskSalario.Text = TFuncionario!salario On Error GoTo 0 End Sub Agora vamos fazer 0 cddigo que salva as informacoes alters Clique duas vezes no botio Salvar do formulario Alteracao e di linhas de cédigo seguintes: Private Sub BtnSalvar_Click( ) On Error GoTo ErroAlterar ‘ Giandoa vaiével pee ratar os enas AFolha.BeginTrans *Iniciando a transagBo no banco de da DFuncicnario. Fait “usando o comando Edit para aterar os TE Len(txtNome.Text) <> 0 Then TFuncionario! = Ucase$ (txtNome. Text) £ Len(txtEndereco.Text) <> 0 Then ‘TPuncionario!Endereco = UCase$(txtEndereco. Text) If Len(MskSalario.Text) <> 0 Then TPuncionario!Salario = MskSalario.Text TFuncionario. Update AFolha .Commit Trans’ Fnalzando a transacSo no banco de dados On Error GoTo 0 *Ssindo da Rotina se tuto ocorreu normalmente ExibirDados * mostrando os dodos akeredos (FungSo cada Unload Me “Saldoformulirioalteragio e vata pare o Principal (Fr Exit sub * Sal da rotin oe altragio ErreAlterar: *Dedarende 9 varive crads no Inkio para tatar oe eros c= ‘ecorteceu algonio esperado Dim Aviso As Integer Aviso = MsgBox("Erro ao Acessar os Dados!”, _ vbInformation, “Aviso!”) If Aviso = vbCancel Then AFolha .Rollback ExibirDados On Error GoTo 0 Exit Sub End If Resume End sub 2.17 - Impressao de Relatério Para imprimir relatérios, vocé ird usar o Crystal Reports, gerador de relatério, que até a vers&o 5.0 do Visual Basic vinha junto. Na versdo do Visual Studio 6.0 ou Visual Basic 6.0, ele ndo acompanha, por isso vocé terd que instalar o da verso anterior ou comprar o Crystal Reports separado. Ao entrar no Crystal Reports, vocé terd esta tela (figura 2.7) Figura 2.7 Cliquenobotéo Cancel e ird aparecer atela doCristal Reports (figura 2.8). | Acessando Banco. Dados com DAO 3.51 _ eit aie Figura 2.8 Na tela Create New Report, escolha por enquanto Standard; vocé podera fazer alguns testes com os outros modelos. Figura 2.9 Depois de escolher a opgdo Standard, vocé ird localizar o ba dados para escolher as tabelas das quais sairao os relatérios (f 2.10). : 2 Figura 2.10 ae Clique na opcao Data File, entre no localem que se encontrao nosso | banco de dados, clique no nome dele, depois em add e por ultimo clique em Done (figura 2.11). : com DAO 3.51 Figura 2.11 Cliqueno nome databela Trunci onario edepoisno botSoNext >>. Nesta préxima tela, clique na ppcio.Al1 - >>; este comando inclui todos os campos da tabela no relatério (figura 2.12). 5 CT "— Trabalhando :. de Ba n 4 sual Basic 6.0 Wise Figura 2.12 Clique mais uma vez no botéo Next >>; na proxima tela esc Opcao Cédigo para classificar o relatdrio: Mais uma vez clique no botéo Next >>, e terd a tela de Som Escolha o Salario para somar os valores (figura 2.13). ‘ip Tata rat [9 Sa Tal esl fo | | Se cerinae saat cortee ueeepnotinaaionss | Thecern a ee |) Stasometoereoreed sere fn q, Bicares =m ade eae] a ‘| "cea | Cana Breton | PeiewSerls Figura 2.13 Clique novamente no bot&o Next >>; natelaSelect um para pesquisa de Filter. Escolha novamente o campo Codigo e1 mais uma vez em Next >> (figura 2.14). Figura 2.14 Na etapa 6- Style, digite um titulo para o relatério e escolna um modelo, depois clique em Preview Report. Vocé tera o relatério pronto (figura 2.15). Figura 2.15 Clique no Menu Report e escolha Zoom para aumentar a sua visualizacao. ae Acessando Banco de Dados com DAO 3.51 Se vocé quiser fazer algumas mudancas, clique na opcao Desi lado superior esquerdo da tela e faca o que desejar, como au ou diminuir fontes, colocar cores, etc. 5 Na opcio Design, agrupe os campos, diminuindo um pouco as £ etiquetas, para colocarmos um Campo de Férmula depois do : Salario. Ainda na opgao Design, clique no menu INSERT e depois em For Field e vocé tera a seguinte tela (figura 2.16): le Dad Basic 6.0 d I bi co * oe Figura 2.16 No campo Formula Name, digite INSS e clique em OK. Ss Na préxima tela, clique em cima do campo Salério, multipliqu Por 0.08 e depois clique em Accept (figura 2.17). *| = # [Toe | ee | nero) cot af Figura 2.17 Va com o cursor depois do Campo Salério e clique parainseriro Férmula. Se nao apareceu a etiqueta INSS, clique no menu INSERT e depois em Text Field. Va como cursor na mesmalinha dos outros campos em negrito e clique para adicionar a etiqueta. Volte para o modo Preview. Vocé terd mais ou menos esta tela (figura 2.18): Figura 2.18 Para salvar 0 relatério, clique no menu DataBase e marquea op¢éo Verify On Every Print. Isto faz com ele verifique se foram incluidos mais dades no banco de dados para atualizar. Clique agora no menu File edesmarquea opgao save Data with Report para completar a tarefa de atualizacao de informagoes no banco de dados eno relatério. Salve como Nome de Folha. Rpt, na Pasta c : \PDAO para podermos ligar o relatério com nosso projeto. Feche 0 Crystal Reports, e volte ao Visual Basic 6.0 no nosso Projeto Funciondrio. Para ligar 0 relatdrio com a aplicag&o, entre no menu Project e depois na opcio Components... Na janela Components..., escolha a op¢do Crystal Report Control 4.6, como mostraa tela sequinte (figura 2.19). Clique nesta op¢do e depois no botao OK. ‘Acessando Banco AO 3.51 Tae So Gord 57 10 Cate odie ic neowarsiome WnENSEISEMDE OO 39 Jeet sree etre [cae dcactoge moe ae | cree ef mos tok Figura 2.19 Na Janela de Programacao do Projeto, insira o componente c: Report, clicando nele e deserhando no FrmCadastro: Componente Crystal Report Figura 2.20 ‘Ao inserir 0 componente Crystal Report no Formulrio configure as seguintes propriedades: Name: RFolha Destination: Crpt'Towindow ReportFileNane: C:\PDao\folha.rpt (Local em qi encontra nosso Relatério) WindowState: Maximized WindowTitle: Folha de Pagamento 2.18 - Codigo do Botao Imprimir As propriedades que vocé acabou de configurar sfio do com| Crystal Report. Name E 0 nome do Componente. Destination A visualizaco do Relatério na impressora, no monitor ou para um arquivo (nés escolhemos 0 monitor). ReportFileName © nome do relatério criado com o Crystal Report. WindowState Maximized mostra o relatério em tela cheia. Para chamar o relatério por meio do botéo Imprimir, vocé ira fazer uma férmula para sé ser exibido 0 relatério do funcionario em destaque. Clique duas vezes no botio Imprimir e digite as seguintes linhas de comando: Private Sub BtnImprimir_Click() If txtCodigo.Text <> Empty Then RFolha.SelectionFormula = _ *{TFuncionario.Codigo)=" & (txtCodigo.Text) « °” Else TFolha.SelectionFormula = Empty End If RFolha.Action = 1 End Sub Aqui vocé pesquisa 0 Contetido do Campo Codigo, se a caixa de texto TxtCodigo for diferentede Vazio(I£ txtCodigo. text <> Empty then), entéo nds temos 0 comando SelectionFormula (do Crystal Report), que vai chamar 0 campo Codigo da tabela TFunciondrio concatenando com a caixa de Texto (txtCodigo. Text). aE 7 Fssa pesquisa é para um Campo Numérico. Se fosse alfanmério, seria 0 seguinte: RFolha.SelectionFormla = *(TFuncionario.Codigo}= ' * & _ [txtCodigo. Text) & "7 ™ Se no tiver nenhum cédigo na caixa de texto TxtCodigo., a formula seria vazia; nao mostraria nenhum registro. E no final, vocé acrescenta a aco do relatério por meio do comando Action. com DAO 3.51 .cessando Banco de Salve © projeto, execute o projeto e aperte F5. Se vocé fez certinho tera mais ou menos essa tela (figura 2.21): Ona Sa Figura 2.24 Clique no bot&o Close, e faga 0 cédigo do boto Pesquisa. 2.19 - Pesquisando Registros Para pesquisar os Nomes dos Funcionérios, iremos usar 0 FindFirst do Recordset, e 0 comando Like. Para pesquise mesmo s6 com a primeira letra digitada: Clique duas vezes no botdo Pesquisa e digite as linhas de a seguintes: private Sub BtnPesquisa Click( ) TFuncionario.FindFirst "Nome Like ‘* + _ txtPesquisa + * ** © ExibirDados ‘ Mostrando os Dados If TFuncionario.NoMatch Then MsgBox “O Nome " + txtPesquisa + " Nilo Fg Localizado *, vbInformation, “Aviso! !” txtPesquisa.Text = "" txtPesquisa. SetFocus End If End sub Para aparecer o nome que vocé esta pesquisando, clique duas vezes na Caixa de Texto txt Pesquisa, e digite 0 cddigo seguinte. Onome ira aparecer no botéo Pesquisa. Private Sub txtPesquisa_Change( } If Len(txtPesquisa.Text) = 0 Then BtnPesquisa.Caption = “Pesquisa!” BtnPesquisa.Enabled = False Else BtnPesquisa Caption = “Pesquisa” + _ txtPecquisa.Toxt: BtnPesquisa.Bnabled = True End If End sub 2.20 - Confira o Cédigo do Projeto Codigo Formulario FrmCadastro private Sub BtnAlterar_click( ) FrmAlterar.Show 1 End Sub Private Sub BtnAnterior Click( ) If TFuncionario.EOF = True And TFuncionario.30F True Then MogBox “A Tabela esté Vazia!", vbExclamation, “Aviso!” Exit Sub End If On Error GoTo Anterior ‘Funcionario.MovePrevious ExibirDados Exit Sub Anterior: If Err.Wumber = 3021 Then MsgBox “Vocé j4 esta no Primeiro Registro vbInformation, “Aviso!!” ‘Funcionario.MoveFirst ExibirDados Trabalhando « Exit sub End If End sub Private Sub BtnExcluir Click( ) If TFuncionario.FOF = True And TFuncionario.80P = True Then MsgBox “A Tabela j& estar Vazia!”, vbInformation, “alerta!” Exit sub End If Dim Exluir As String Excluir = MsgBox(*Deseja excluir este Registrol”, vbQuestion + vb0KCancel, “Aviso!!") Tf Excluir = vbOK Then AFolha .Bogin?rans ‘Truncionario. Delete ‘TFuncionario.Movenext ExibirDados AFolha .Commit'Trans Else Exit Sub End Tf End Sub Private Sub BtnImprimix_click( ) IE txtCodigo.Text <> Empty Then RFolha.SelectionFormula = *(TFuncionario. Codigo & (txtCodigo.Text) & "* Else ‘TFolha.SelectionFormula = Empty End If RFolha-Action = 1 End Sub Private Sub BtnNovo_Click( ) FrmIncluir.show 1 End Sub Private Sub BtnPesquisa Click( ) ‘TFuncionario.FindFirst “Nome Like \ * + txtPesquisa +" * +» ExibirDades If TFuncionario.NoMatch Then MsgBox “O Nome * + txtPesquisa + * Nao Localizado *, vbInformation, “Aviso! !" txtPesquisa.Text = *" txtPesquisa.SetFocus End If End sub £ Private Sub BtnPrimeiro Click( ) If TFuncionario.ROF = True And TFuncionario.BOF_ = True Then MsgBox ‘A Tabela esté Vazia vbExclamation, “Aviso!” Exit Sub End If On Error GoTo Primeiro ‘TFuncionario.MoveFirst ExibixDados Exit Sub Primeiro: If Err.Number = 3021 Then MsgBox “Vocé jA esta no Primeiro Registro!”, vbInformation, ‘Aviso! !" ‘TFuncionario.MoveFirst ExibirDados Exit Sub Bnd If End Sub Private sub btnproximo_click( ) If TFuncionario.EOF = True And TFuncionario. BOF ‘True Then MsgBox “A Tabela esté Vazia!* "Aviso!" Exit Sub End If On Error GoTo Proximo TFuncionario.Movettext ExibirDados Exit Sub Proximo: If Err.Number = 3021 Then MsgBox “Vocé j4 esta no Ultimo Registro!”, vbInformation, ‘Aviso! !" @Puncionario.MoveLast ExibixDados Exit Sub End If End sub , vbExclamation, Private Sub BtnSair_Click( ) End End Sub Private Sub BEnUltimo Click( ) I£ TFuncionario.FOP = True And TFuncionario. = True Then MsgBox “A Tabela estd Vazia!”,_ vbExclamation, "Aviso!" Exit Sub End If on Error Gofo Ultino ‘TPuncionario.MoveLast ExibirDados Exit Sub ultimo: If Brr.Number = 3021 Then MsgBox “Vocé ja esta no Ultimo Registro!", _ vbInformation, “Aviso! !* ‘TFuncionario.MoveLast ExibirDados Exit Sub End If End sub Private Sub Form Load( ) Abrir ExibirDados End Sub Private Sub txtPesquisa_Change( ) TE Len (txtPesquisa. Text) = 0 Then BtnPesquisa.Caption = ‘Pesquisa!’ BtnPesquisa.Enabled = False Else BtnPesquisa.Caption = ‘Pesquisa’ + _ txtPesquisa. Text BtnPesquisa Enabled End Tf End Sub True 0 Acessando Banco de Dados com a Biblioteca ADO 3.1 - Acesso a Base de Dados Via ADO Microsoft ActiveX Data Objects Vocé ja conhece algumas ferramentas fornecidas pela Microsoft para accessar banco de dados, Data Access Objetos (DAO) e Remote Data Objects(RDO). Basicamente DAO foi desenhado para trabalhar em Solugdes para Desktop (Desktop Solutions), assim como MS — Access. RDO foi desenhado para accesso a banco de dados em ambiente de rede(Network). Essas tecnologias tém estado conosco por algum tempo. Todavia, a Microsoft sentiu que deveria prover um Universal Acesso a banco de dados para ser mais eficiente criar e unificar métodos para acessar banco de dados e combinar as funcionalidades do DAO e do RDO dentro de uma simples tecnologia ADO. 3.1.1 - ADO 2.6 Microsoft® ActiveX® Data Objects (ADO) Permitem que suas aplicacSes alcancem e manipulem dados de um server da base de dados por meio de um fornecedor do DB de OLE. Seus beneficios preliminares sao: J — Facilidadede utilizecéo, alta velocidade, baixa area dememéria. © ADO suporta as caracteristicas-chave para aplicagées Clienty -S _ Server e Web Server. goo | “| Para usar as Bibliotecas do ADO, clique no Menu Projecy 4g § & Refereces e escolha a opcao. i 8 § Z Microsoft ActiviX Data Objects 2.6 Library. 3 20 yas Exemplo: io 8 | cal Trabalhando com Banco de Dados no Visual Basic 6.0 3.2- Conexdo com Banco de Dados e RECOR: ‘A conexdo com 0 banco de dados vai depender daquele que estiver usando. Por exemplo, para o Access e SQL Server, vocé uma conexao para cada banco de dados em uso, E muito impot no abrir muitas conexSes com o BD, pois isto acarretaré qu performance e sempre que abrir uma conexo apds 0 uso término do programa, é interessante fechd-la. J4 no Oracle precisa abir uma conexo, pois todas suas tabelas provavell estarao no servidor (Servigo) do Oracle. 3.3 - Objetos do ADO © ADO nos fornece diversos objetos que ajudam a elimi complexo cddigo. 3.4 - Objeto Connection Este objeto é usado para estabelecer uma conexo com ul de dados. Em outras palavras, vocé usa 0 Connection obj estabelecer uma fisica conexio com o banco de dados. Com 0 banco de dados pode ser qualquer tipo, assim como ODBC sistema de gerenciamento de banco de dados que suporta aigu de OLE DB Provider. Como o OLE DB Provider pode ser fei personalizada especificacaio, 0 ADO pode se conectar com qui banco de dados existente. 3.4.1 - Error Object e Errors Collection 0 objeto Error é exposto por meio do objeto conexéo (Conn e contém detalhes de um erro retornado e um provedor de A Coleco de Erros (Errors Collection) & especificada para t ertos, resultando de uma falha na conexdo com o banco de 3.5 - Command Object O objeto comando é usado para executar no banco de dad acio; por exemplo, um comando pode ser qualquer tipo di Statement, como um INSERT ou UPDATE ou DELETE, no 0 objeto Comando Command é opcional. 3.5.1 - The Parameter Objeto e Parameters Collection 0 objeto parémetro contém detalhes de um simples parametro para uma Stored Procedure ou uma Query associada com 0 Objeto Command. A colecao de parametros possui parametros individuais usados para representar os valores passados dentro e fora de um comando. O objeto parametro também é opcional. 3.6 - Objeto RECORDSET Oobjeto Recordset simplesmente contém todos os dados pesquisados deum banco dedados, assim como qualquer dado adicional que vocé quer escrever de volta para o banco de dados, Em simples termos, um recordset contém linhas e colunas de dados. ADO Recordset pode ser muito versatil, porque fornece a habilidade de criar Recordset descnectado. Isto significa que um recordset contém dados e mantém dados de um banco de dados, e conseqientemente desconecta da base de dados. Literamente dropping a conexio. Uma aplicacao no lado do cliente (terminal) mantém um bloco de dados (registros), modifica cada registro e depois atualiza na base de dados. 2 3.6.1 - Alguns Métodos do Objeto RECORDSET E AddNew S Adiciona um novo registro a tabela. 5 Close a Fecha uma tabela ou banco de dados. Delete Apaga um registro corrente. Update Salva um registro ou mudangas no registro. Open Abre uma tabela ou BD. 65 Trabalhando com Banco de Dados no Vist MoveFirst Leva o cursor para 0 inicio da tabela. MovePrevious Mostra o registro anterior. MoveNext Mostra 0 proximo registro. MoveLast Mostra o tltimo registro. RecordCount Mostra quantos registros vocé tem em um Recordset. 3.7 - Objeto Campo e Colegdo de Campos Object e Fields Collection) Um campo é criado para cada campo em um Recordset e detalhes sobre aquele campo. A coleciio de campos possui campos em um Recordset. Objeto Propriedade e Colecdo de Propriedades (Property Properties Collection). Todos os objetos anteriores para ADO séio bem conhecidos vém com 0 ADO 2.6. Uma coleg3o de propriedades tipicamente contém uma Propriedades. O objeto propriedade contém informaggo si determinado objeto, como: Nome (Name); Valor (Value] (Type) e atributos (Attributes). 0 valor do Nome(Name) é para leitura. Esse valor é usado para identificar uma questo propriedade. Os Valores (Value), Tipo (Type) e Atributo (At 80 propriedades usadas para setar ourretornar o valor, tipo de! 3.7.1 - Objeto RECORDSET Um objeto Recordset representa o inteiro conjunto de regi uma base de dados ou 0 resultado de um comando execu 3.7.2 - Alguns Métodos do Objeto RECORDSET AddNew Adiciona um novo registro a tabela. Close Fecha uma tabela ou banco de dados, Delete Apaga um registro corrente. Update Salva um registro ou mudancas no reaistro. Open Abre uma tabela ou BD. MoveFirst : Leva 0 cursor para 0 inicio da tabela. core se MovePrevious 2 = Mostra o registro anterior. Be £ g os MoveNext gee ‘ - ozs Mostra 0 préximo registro. 853 ica Movelast Mostra o iiltimo registro. \Vamos agora criar nossa base de Dados no MS - Access para testar © acesso via ADO 2.6. Entre no Access e crie 0 seguinte banco de dados: Nome: BndPaula.mdb Crie agora as seguinte tabelas: Nome da Tabela: TClientes Campos: g Tabela de Cadastro de Clientes $ Nome do Campo Tipo de Dados _| Tamanho e ClienteID AutoEncremente Nome Texto 40 Endereco Texto 35 Bairro Texto 30 : Cidade Texto 35 : Estado Texto 2 CEP Texto 9 Fone Texto 15 Defina chave primétia para 0 campo ClientelD. Crie a tabela para cadastrar as Vendas dos Clientes Nome: TVendas - as tae se impos: gee Tabela_de Cadastro de Vendas 3 Nome Do Campo Tipo De Dados Tamanho fe Codigo Texto 40 |e gz GlienteID numero FS DataVenda Data/Hora Produto Texto 35 Qty Numero Valor Moeda ‘ValorTotal Moeda Defina chave primétia para campo Codigo e adicie [[ebsenazo] registros para cada Tabela depois que voce criou a dados entre 0 Visual Basic 6.0. Crie as sequintes

You might also like