Escolar Documentos
Profissional Documentos
Cultura Documentos
Conteúdo
O objeto Workspace não faz parte do banco de dados , e pode ser visto como uma definição
de uma sessão para o usuário que está logado. Assim como o objeto DBEngine , o objeto
Workspace é criado automaticamente e por isso não precisamos de variáveis objetos para
referenciá-los. O primeiro objeto Workspace padrão criado será o primeiro da coleção
Workspaces (Workspace(0) ) e a propriedade UserName do objeto será definida como
'Admin'.
Você precisará usar variáveis objeto para referenciar o objeto Database, e essas
variáveis comportam-se como as demais varíaveis podendo ser públicas, privadas
ou locais. A diferença é que as variáveis objetos precisam ser destruídas quando
não forem mais necessárias , pois as mesmas não são automaticamente destruídas
quando fora do escopo como as variáveis regulares. Para destruir uma variável
objeto atribua a ela a palavara chave Nothing. Ex: Set db = Nothing.
Então para abrir um banco de dados você deve usar o método OpenDatabase do
objeto Workspace, e portando não precisa preceder o método de seu objeto. Assim
, apenas para ilustrar , as cinco linhas de código abaixo são equivalentes e todas
elas abrem a base de dados Teste.mdb.
Dim db as Database
Adivinha qual dessas linhas você vai preferir usar para abrir sua base de
dados ?????
Para trabalhar com os objetos de acesso a dados você usa as variáveis do objeto para cada
tipo de objeto (Database,Recordset,...). Para designar um objeto a uma variável do objeto
utilize a instrução SET.
No código acima , primeiro definimos uma variável objeto de banco de dados(meubd), e a
seguir usamos o método Opendatabase para designar nosso banco de dados, nome e
localização à variável objeto declarada.
Após abrir o banco de dados você deve definir um Recordset para ter acesso aos dados
contidos no banco de dados.
Conteúdo
Recordsets
O novo objeto Recordset é o recurso mais importante relacionado com os objetos de acesso
a dados.
Ele ocupa o lugar dos objetos tabela, dynaset e snapshot das versões anteriores.
Agora ao invés de abrir uma tabela ou criar um dynaset você abre um Recordset .
Há três tipos de Recordsets disponíveis:
Propriedade Descrição
-----------------------------------------------------------------------
-
BOF True se você estiver no início do recordset.
(antes do primeiro registro)
Conteúdo
É a única forma de Recordset que aceita o uso de índices, tornado desta forma a
pesquisa em uma tabela mais rápida do que em um dynaset ou snapshot.
As alterações efetuados pelos usuários ficam imediatamente disponíveis , não sendo
necessário dar o refresh para atualizar os dados.
Não se pode utilizar filtros para restringir os registros usando determinados critérios.
O comando Seek só encontra o primeiro registro que atende a seus critérios.
Para abrir uma tabela , defina um objeto Recordset e use o método OpenRecordset para
acessar a tabela.
Informe a constante DbOpenTable para identificar o tipo de recordset criado. Veja o código
abaixo:
Conteúdo
Configuração de um Dynaset
Para utilizar um dynaset você deve definir um objeto recordset (Dim) e depois gerar o
dynaset com o método OpenRecordset. Para selecionar os registros você pode usar uma
instrução SQL. Veja exemplo abaixo:
Conteúdo
Configuração de um Snapshot
Para utilizar um snapshot você deve definir um objeto recordset (Dim) e depois gerar o
snapshot com o método OpenRecordset. Para selecionar os registros você pode usar uma
instrução SQL. Veja exemplo abaixo:
Conteúdo
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.
Move n
Desloca o ponteiro de registro n registros para frente (n positivo) ou para
trás (n negativo) a partir do registro ativo no recordset aberto. Se o
deslocamento levar o ponteiro de registro além dos limites do recordset
ocorrerá um erro.
Conteúdo
FindFirst:
A partir do ínicio do recordset , localiza o primeiro registro que atende
aos critérios definidos.
FindNext:
A partir da posição atual no recordset , localiza o registro seguinte
(próximo) que satifaz aos critérios definidos.
FindPrevious:
A partir da posição atual no recordset , localiza o registro
seguinte(anterior) que satifaz aos critérios definidos.
FindLast:
A partir do ínicio do recordset , localiza o último registro que satisfaz aos
critérios definidos.
Como exemplo suponha que temos um banco de dados Controle, no diretório Controle, que
contém uma tabela Clientes, e que desejamos encontrar o cliente de nome Ana Maria Rosa
nesta tabela.Veja o fragmento de código abaixo:
Dim bd as Database
Dim rs as Recordset
Dim criterio as string
Set bd =
DBEngine.Workspaces(0).OpenDatabase("C:\Controle\Controle.m
db")
Set rs = bd.OpenRecordset("Clientes",DbOpenDynaset)
rs.findfirst criterio
if rs.nomatch
msgbox "Cliente não localizado. "
else
msgbox rs.Fields("nome") & " localizado no arquivo.
"
endif
Conteúdo
Para invocar o método Seek é necessário fazer a chamada ao método usando os operadores
de comparação (<, <="," =",">=, > , <>) , lembrando que os valores de chaves que
estão sendo comparados devem ter o mesmo tipo de dados dos campos no índice de
controle.Veja exemplo a seguir:
Dim bd as Database
Dim rs as Recordset
Set bd =
DBEngine.Workspaces(0).OpenDatabase("C:\Controle\Controle.m
db")
Set rs = bd.OpenRecordset("Clientes",DbOpenTable)
rs.index = "Nome"
if rs.nomatch
msgbox "Cliente não localizado. "
else
msgbox rs.Fields("nome") & " localizado no arquivo.
"
endif
No código acima definimos um recordset rs do tipo Tabela e a seguir definimos o indíce ativo
rs.index = "Nome" e invocamos o método Seek usando o operador = com nome a ser
procurado.
Obs:Note que: O índice ja deve ter sido criado , o operador deve estar entre aspas e que
deve ser separado por vírgula do valor a ser localizado.