![Page 1: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/1.jpg)
VBDB01 1
Acesso a Bancos de Dados usando Visual Basic
![Page 2: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/2.jpg)
VBDB01 2
Generalidades
![Page 3: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/3.jpg)
VBDB01 3
Acesso a bancos de Dados
• VB fornece diversas ferramentas para criação e acesso à BD. As ferramentas principais, para isto são:
- O controle Data
- Os Data Access Objects
![Page 4: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/4.jpg)
VBDB01 4
O Controle Data
– O controle Data fornece um meio de ter acesso a BD sem qualquer programação. O que se faz é ajustar algumas propriedades deste controle e utilizar outros controles usuais, tais como caixas de texto para exibir os campos do BD.
![Page 5: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/5.jpg)
VBDB01 5
DAO
• Os objetos Data Access Objects constituem um modelo de estrutura de objetos para acesso a BD por meio de programação tradicional. Todas as funcionalidades do controle Data estão disponíveis pelo Data Access Objects(DAO).
![Page 6: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/6.jpg)
VBDB01 6
DAO
• Data Access Objects correspondem a um conjunto de objetos, cada qual com sua biblioteca de comandos, funções e estruturas para acesso a Bancos de Dados.
![Page 7: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/7.jpg)
VBDB01 7
DAO
– Sempre que for necessário usar DAO deve-se referenciar a versão através do Menu Project/References ativando a CheckBox da biblioteca desejada e acionando o botão OK.
![Page 8: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/8.jpg)
VBDB01 8
RecordSets
RecordSets são objetos que representam coleções de registros de uma ou mais tabelas. Na programação de BD os RecordSets são equivalentes às variáveis da programação tradicional. Não se pode ter acesso diretamente às tabelas em BD. A única maneira de ver ou manipular registros é por meio de objetos RecordSet. Um RecordSet é composto de linhas e colunas e seu processamento usual é por linhas, uma de cada vez.
![Page 9: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/9.jpg)
VBDB01 9
RecordSets
– Existem três tipos de Record Sets:- DynaSets, que são visões dos dados atualizáveis.
Apenas as chaves das tuplas e os ponteiros para as tuplas são trazidos para a memória.
- SnapShots, que são visões estáticas, e não atualizáveis dos dados. Todas as tuplas do RecordSet são colocadas em memória (ou em área de “swap”, em disco).
- Tables, que são visões diretas das tabelas. Toda a tabela do RecordSet é trazida para a memória (ou para uma área de “swap”, em disco).
![Page 10: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/10.jpg)
VBDB01 10
RecordSets
– DynaSets e SnapShots, são criados por comandos SQL. O tipo mais flexível e poderoso de RecordSet é o DynaSet. Para buscas a maior rapidez vem das Tables. Contudo, as Tables exigem maiores recursos de máquina e não podem representar mais de uma tabela do BD. SnapShots são os RecordSets que menos recursos de máquina exigem.
![Page 11: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/11.jpg)
VBDB01 11
O Controle Data
Este controle, em qualquer momento, está posicionado em uma única linha do RecordSet. O controle dispõe dos seguintes recursos (métodos e botões):
– MoveFirst- MoveLast- MovePrevious- MoveNext
![Page 12: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/12.jpg)
VBDB01 12
O Controle Data
Um controle Data tem, como propriedades importantes:
- DataBaseName, especificando o BD usado;- RecordSource, especificando a parte do BD
acessada.
![Page 13: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/13.jpg)
VBDB01 13
O Controle Data
Para exibir o conteúdo do BD, pode-se usar caixas de texto data-bound (ligadas a campos de um RecordSet). Nas caixas de texto a ligação é feita pelas propriedades:
– DataSource, que é o nome de controle Data de onde se vai exibir os dados;
- DataField, que é o nome de atributo no RecordSet que o controle exibe e atualiza;
![Page 14: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/14.jpg)
VBDB01 14
O Controle Data
O controle Data possui também os métodos:
– FindFirst, que encontra o primeiro registro que atende a um determinado critério;
- FindLast, que encontra o último registro que atende a um determinado critério;
- FindNext, que encontra o próximo registro que atende a um determinado critério;
- FindPrevious, que encontra o registro anterior que atende a um determinado critério;
![Page 15: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/15.jpg)
VBDB01 15
Associação de Objetos a Fontes de Dados
A associação de objetos ao tipo Database é feita usando o comandoset nomeDB = workspace.OpenDatabase
(Banco$, Exclusivo%, SomenteLeitura%, _
Conexão$)
![Page 16: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/16.jpg)
VBDB01 16
Abertura de Bancos de Dados
Parâmetro Descrição Opções
Workspace WorkSpace que contém o BD Opcional
Banco$ Drive, diretório e nome da base de dados. Pode receber“” se Conexão% for válida
Exclusivo% True para uso exclusivo e False (default) para usocompartilhado
Opcional
Somenteleitura% True para uso somente como leitura e False (default) emcaso contrário
Opcional
Conexão% string contendo o tipo de base de dados. Para Access énenhum string e para ODBC é longa lista
Opcional
![Page 17: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/17.jpg)
VBDB01 17
Métodos do objeto DataBase
• Os métodos utilizáveis do objeto Database são os seguintes:
• Execute
• OpenRecordSet
• Close
![Page 18: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/18.jpg)
VBDB01 18
Associação ao objeto RecordSet
A associação de objetos ao tipo RecordSet é feita usando o comando
• set nomeRS = nomeDB.OpenRecordSet (origem$, tipo$, opções$, bloqueios$)
![Page 19: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/19.jpg)
VBDB01 19
Associação a RecordSetsParâmetro Descrição Opções
origem$ nome de tabela física ou comando SQL SELECT
tipo$ constante VB (DBOpenTable, DBOpenDynaSet,DBOpenSnapShot)
Opcional
opções$ constante VB (dbAppendOnly, dbSeeChanges, dbDenyWrite,dbDenyRead, dbReadOnly, dbInconsistent, dbConsistent)
Opcional
bloqueios$ constante VB (dbReadOnly, dbPessimistic, dbOptimistic) Opcional
![Page 20: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/20.jpg)
VBDB01 20
Métodos do objeto RecordSet
• Os métodos utilizáveis para o objeto RecordSet são os seguintes:
• AddNew
• Close
• Delete
• Edit
• MoveFirst
• MoveLast
• MoveNext
• MovePrevious
• Seek
• Update
• FindFirst
• FindLast
• FindNext
• FindPrevious
![Page 21: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/21.jpg)
VBDB01 21
ADO
• ADO significa ActiveX Data Objects. O controle ADO Data Control é sucessor do Data Control.
![Page 22: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/22.jpg)
VBDB01 22
Acesso a campos em RecordSets
• Os controles data-bound podem exibir os campos do registro corrente de um controle Data mas também pode-se ter acesso aos valores desses campos nas aplicações. Através dos objetos Field dos RecordSets isso pode ser feito. O acesso pode ser feito pelo nome do campo ou pela posição ordinal na tabela.
![Page 23: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/23.jpg)
VBDB01 23
Acesso a campos em RecordSets
Exemplo, em quatro versões:
Titulo = Data1.RecordSet.Fields(0)
Titulo = Data1.RecordSet.Fields(“Titulo”)
Titulo = Data1.RecordSet.Fields!Titulo
Titulo = Data1.RecordSet!Titulo
![Page 24: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/24.jpg)
VBDB01 24
Propriedades dos RecordSets
Duas propriedades interessantes dos RecordSets :• RecordCount -número de registros no RecordSet• Count -número de campos em uma linha do
RecordSet
Quando um RecordSet é criado ou atualizado (via Refresh) ele não sabe o número de registros que possui. A propriedade RecordCount recebe o valor atual depois de utilizar o método MoveLast (usualmente seguido de um MoveFirst).
![Page 25: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/25.jpg)
VBDB01 25
Acesso a registros em RecordSets e Bancos de Dados
• O método Seek localiza o registro em um objeto RecordSet que satisfaça uma condição especificada e torna o registro correspondente o registro corrente do RecordSet com um índice.
![Page 26: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/26.jpg)
VBDB01 26
Método Seek
A sintaxe de seu emprego é da forma
RecordSet.Seek operador chave
Aonde chave é um valor a ser comparado com o campo chave do índice. É claro que se o índice contiver mais de um atributo (por exemplo índice por data e por hora) então chave deverá conter mais de uma grandeza para a comparação.
![Page 27: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/27.jpg)
VBDB01 27
Método Seek
• O operador pode ser =, >, <. >=, <= e deve aparecer entre aspas duplas. Caso o método Seek não encontre um registro que satisfaça à comparação então a propriedade NoMatch do RecordSet recebe o valor True.
![Page 28: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/28.jpg)
VBDB01 28
Método Seek
Exemplo:
Compromissos.Seek “=”, cboDatas.Text, _
CboHoras.Text, _
TxtTitulo.Text
If Compromissos.NoMatch Then
MsgBox “compromisso não cadastrado”, 64, “Consulta de dados”
![Page 29: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/29.jpg)
VBDB01 29
Inclusão de Registros
O tratamento de inclusões de registros em Bancos de Dados deve ser feito com a seguinte seqüência:
Comando Recordset.AddNew (cria um registro no “buffer”)
Atribuição de valores a cada um dos campos do registro criado
Inclusão no Bancos de Dados pelo comando RecordSet.Update
![Page 30: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/30.jpg)
VBDB01 30
Exclusão de Registros
O tratamento de exclusões de registros de Bancos de Dados deve ser feito com a seguinte seqüência:
Comando Recordset.Seek (localiza o registro e o coloca no “buffer”)
Exclusão do Bancos de Dados pelo comando RecordSet.Delete
![Page 31: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/31.jpg)
VBDB01 31
Atualização de Registros
O tratamento de atualização de registros em Bancos de Dados deve ser feito com a seguinte seqüência:
Comando Recordset.Seek (localiza o registro e o coloca no “buffer”)
Atribuição de novos valores a cada um dos campos do registro criado
Atualização do Bancos de Dados pelo comando RecordSet.Update
![Page 32: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/32.jpg)
VBDB01 32
Uso de duas Fontes de Dados
• Pode-se desejar obter dados de um RecordSet para fornecer dados para outro RecordSet
![Page 33: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/33.jpg)
VBDB01 33
Uso de duas Fontes de Dados
• Quando se deseja obter dados de um RecordSet para fornecer dados para outro RecordSet usa-se a seguinte técnica, exemplificada quando se tem um Combo com códigos obtidos de um RecordSet oriundo de uma tabela e deseja-se substituir esses códigos por seus nomes, obtidos de outra tabela.
![Page 34: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/34.jpg)
VBDB01 34
Uso de duas Fontes de Dados
• Nos atributos do Combo deve-se atuar nas seguintes propriedades:– Data Source– DataField– RowSource– ListField– BoundColumn
![Page 35: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/35.jpg)
VBDB01 35
Propriedade DataSource
• Identifica :– RecordSet que se deseja atualizar
• Exemplo:– Titles de Biblio
![Page 36: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/36.jpg)
VBDB01 36
Propriedade DataField
• Identifica :– Campo do RecordSet DataSource que se deseja
atualizar
• Exemplo:– PubID de Titles, de Biblio
![Page 37: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/37.jpg)
VBDB01 37
Propriedade RowSource
• Identifica :– RecordSet que vai fornecer as informações
• Exemplo:– Publishers de Biblio
![Page 38: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/38.jpg)
VBDB01 38
Propriedade ListField
• Identifica :– Campo do RecordSet RowSource que vai
fornecer as informações para preencher o Combo
• Exemplo:– Name de Publishers, de Biblio
![Page 39: VBDB011 Acesso a Bancos de Dados usando Visual Basic](https://reader035.vdocuments.com.br/reader035/viewer/2022062512/552fc10b497959413d8c178b/html5/thumbnails/39.jpg)
VBDB01 39
Propriedade BoundColumn
• Identifica :– Nome do campo que vai fornecer as informações
para atualizar, quando necessário, o RecordSet de DataSource, ou seja, o usuário seleciona ListField (Name) no Combo é gravado BoundColumn (PubID) em DataSource
• Exemplo:– PubID de Titles, de Biblio