Font Size

Profile

Menu Style

Cpanel

21Fevereiro2019

MS Office Gurus

Onde os desenvolvedores Office se encontram

  • Criar conta
    *
    *
    *
    *
    *
    *

    Campos marcados com asterisco (*) são obrigatórios.

Mensagem
  • Kunena is not installed or the installed Kunena version is not supported. The plug-in has now been disabled. Please install/upgrade Kunena to version 1.7 for the Kunena Discuss Plug-in to function properly.

Curso Excel 2003 sobre ADO e ADOX (ActiveX Data Objects) - Parte 1

Bem-vindo ao Curso Excel 2003 online totalmente grátis sobre o ADO (ActiveX Data Objects) e ADOX. Com esta séria você poderá montar a sua apostila de Excel 2003 sobre ADO/ADOX. Caso o leitor não queira imprimir o material, objetivando a economia de papel, o meio ambiente agradecerá a grande ajuda.

Um ponto importante sobre este curso é que ele não virá com as planilhas Excel prontas. O leitor terá que construir as planilhas a partir do curso. Caso o leitor queira, ele pode obter o curso completo de ADO e ADOX (ActiveX Data Objects) em nossa loja.

Focando em nosso curso, se alguma vez o leitor programou acesso de dados no Access a partir do Excel você certamente já utilizou a biblioteca do Data Access Objects (DAO) ou do ActiveX Data Objects (ADO). Aqui, irei discutir somente o ADO e o DAO ficará para um módulo em separado (veja no site como obter o outro módulo  sobre DAO) para que os conceitos sejam compreendidos separadamente.

O usuário comum do Access provavelmente não se interessará pela utilização de VBA para efetuar o seu trabalho. Contudo, se o seu trabalho envolve o desenvolvimento de bancos de dados, então, conhecer o VBA e os métodos de acesso e manipulação de dados será crucial.

Como toda e qualquer biblioteca, a biblioteca ADO possui uma hierarquia. Dentro desta hierarquia existem objetos que são, de modo geral, mais importantes que outros.

A biblioteca ADO, assim como qualquer outra biblioteca, contém um conjunto de objetos que pertence a um mesmo grupo. Desta forma, fica relativamente fácil encontrar um objeto dentro de um grupo e, consequentemente, isolar as propriedades e métodos de tal objeto[1].

No decorrer deste módulo irei apresentar cada um deles individualmente com exemplos de como utilizá-los.

ADO pode ser utilizado para um número extenso de tarefas. Olharemos tais tarefas no decorrer do curso e como as mesmas podem nos ser úteis.

1.1.     Um pouco da história do ADO

A grande vantagem da utilização de DAO sobre ADO é que DAO é especificamente designado para os Jet Databases. Não obstante, como DAO funciona em cima do Jet Database Engine quando o assunto é conexão remota ADO superado DAO.

Muitos websites, mesmo utilizando um banco de dados Access, por exemplo, tendem a utilizar ADO na conexão de dados em detrimento ao DAO, pois ADO foi desenvolvido com a principal intenção de se conectar com as mais variadas fontes de dados.

ADO faz parte do esforço da Microsoft para criar uma biblioteca universal de acesso de dados (chamada de UDA – Universal Data Access).

1.2.     “Strings” de conexão

O provedor para uma conexão ADO é o Microsoft. Jet.OLEDB.4.0. Como a conexão em si possui vários parâmetros o leitor deve estar se questionando como lembrar isso tudo de cor. A verdade é que não precisamos.

Quando chegar a hora de determinar a string de conexão, nós podemos utilizar um artifício para obter tal informação. Obtido os detalhes o que fazemos é modificar onde é necessário. Para obter a string de conexão abra o projeto Access para o qual você precisa da string de conexão. Abra o VBE (Alt+F11) e na janela de verificação imediata digite:

?Currentproject.Connection

Na própria janela de verificação imediata, obteremos a string completa como segue (a string está quebrada para facilitar a leitura. Cada quebra ocorre onde há o ponto-e-vírgula):

Provider=Microsoft.Jet.OLEDB.4.0;
User ID=Admin;
Data Source=E:\Robert\mdbTeste.mdb;
Mode=Share Deny None;
Extended Properties="";
Jet OLEDB:System database=C:\dbsTrampo\System.mdw;
Jet OLEDB:Registry Path=Software\Microsoft\Office\11.0\Access\Jet\4.0;
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False.

Não é necessário utilizar todas as partes da conexão conforme mostrado acima. Neste módulo, nós estamos interessados em:

·         Provider

·         User

·         Data Source

·         Password (se houver uma senha no banco de dados)

O restante não será relevante para desenvolvermos o curso.

1.3.     Declaração de variáveis: evitando ambigüidades

Como DAO e ADO são bibliotecas destinadas à conexão de dados é de se imaginar que ambos possuirão objetos os quais são os mesmos (embora possuam diferentes propriedades e métodos). Para evitar ambigüidade no seu código, procure sempre declarar explicitamente qual biblioteca você estará usando.

Isso não somente melhora o desempenho do seu código como também lhe ajudará a identificar os objetos sendo declarados e usados. Por exemplo, para evitar ambigüidade entre os recordsets de uma e de outra biblioteca, faríamos:

Sub declarandoVariáveis()
    Dim daoRs  As DAO.Database
    Dim adoRs  As ADODB.Recordset
End Sub

O nome da variável é menos importante do que o objeto ao qual ele se refere. Por exemplo, eu geralmente declaro um recordset como sendo apenas um rs sem prefixá-lo com ado ou dao como fiz acima. Isso porque o objeto está claro logo a seguir, mas caso seja necessário é uma opção a ser considerada, pois reduz mais ainda as chances de confusão entre os objetos.

1.4.     Cursores “server-side” vs “client-side”

Quando usamos ADO podemos escolher entre os cursores “server-side” (lado do servidor) e “client-side” (lado do cliente). O cursor “server-side” é o padrão do ADO.

A grande diferença entre um cursor e outro diz respeito ao local onde os dados contidos em um recordset são “cached” (armazenados). No caso do “server-side” isso ocorre no servidor ao passo que o “client-side” ocorre no cliente.

Assim, se o cursor é “server-side”, quanto mais usuários estiverem conectados, mais estresse e colocado no servidor, pois mais recursos são exigidos dele para servir a todos os clientes. Por outro lado, no caso do “client-side” o armazenamento ocorre localmente o que reduz o estresse colocado no servidor. No caso do “client-side”, isso implica mais rapidez no acesso aos dados uma vez que os mesmos estejam armazenados localmente.

Testes de desempenho apontam para o uso de cursores “server-side” para instruções como INSERT, UPDATE e DELETE, pois liberam recursos do servidor após a execução. Por outro lado, instruções como SELECT e SELECT UNION são mais apropriadas para “client-side”, pois o armazenamento consome recursos do cliente e não do servidor.

Existem tipos de fonte de dados que não aceitam cursores “server-side” e nestes casos precisaríamos utilizam “client-side”, não obstante se estamos trabalhando com Access via Excel isso passa a ser irrelevante se o programa sendo desenvolvido é stand-alone.

1.5.     O que o leitor precisa fazer antes de continuar

Antes de continuar a leitura é importante que o leitor instale as referências ao ADO e ADOX. Para tanto, siga os passos abaixo:

·         Abra o VBE (Alt+F11);

·         Clique em Ferramentas à Referências;

·         Procure e selecione na lista as sequintes referências:

o   Microsoft ActiveX Data Objects X.x Library

o   Microsoft ADO Ext. X.x. for DLL and Security

O X.x indica a versão (para Office 2003 com as atualizações a versão é 2.8).

[1] O leitor pode utilizar o “Pesquisador de Objetos” para fazer isso.