Usando ADO sem um base de dados


E vamos nós lá novamente falar que a ADO é nova uma tecnologia de acesso a fonte de informações , veja bem eu não disse base de dados. Através dela podemos acessar base de dados Relacionais tipo SQL Server, Oracle, MsAcess,etc.. e também fontes de dados como documentos textos, gráficos etc. Ou seja ADO é como um controle remoto universal que serve para acessar diversos tipos de aparelhos.(forcei a barra...)

Então se você esta pensando que ADO é um novo acesso a base de dados do Visual Basic , chutou e chutou longe. Primeiro porque ADO não se restringe somente a base de dados ,segundo porque podemos usar ADO em qualquer ambiente que suporte o modelo COM. (Delphi, C++ , Word, Excel , Visual Basic, Fox Pro, etc...)

Nosso objetivo aqui é mostrar como usar ADO desvinculada de uma fonte de dados. É isto mesmo, veremos como usar toda a funcionalidade embutida na ADO para armazenar informações sem uma base de dados.

Normalmente quando usamos ADO para o acesso a uma base de dados usamos um objeto Connection e um objeto Recordset. O objeto Connection define a conexão com a base de dados e o objeto Recordset faz a interação com os dados permitindo a inclusão , exclusão e atualização dos registros. Podemos fazer basicamente a mesma coisa com a ADO sem que exista um base de dados e ainda utilizar suas propriedades para o tratamento das informações.

Vamos lá...

Você pode criar um objeto Recordset , e a seguir criar colunas e inserir dados sem precisar de um base de dados.Vejamos:

Vamos criar um objeto Recordset .( Usando um ADO Recordset não precisamos ter uma conexão com uma base de dados.)

Dim rs_teste as Recordset
Dim rs_teste = New Recordset  

Agora podemos inserir novos campos(colunas) ao Recordset criado. Para fazer isto uamos o método Append() para incluir os objetos Field(campo) a coleção Fields. Vamos incluir os campos Nome, Endereço e Idade.

rs_teste.Fields.Append "Nome", adBSTR
rs_teste.Fields.Append "Endereço", adBSTR
rs_teste.Fields.Append "Idade", adInteger

Como já definimos os campos , vamos atribuir valores reais a eles. Para isto temos que abrir o Recordset usando o método Open() e a seguir o método AddNew() para iniciar a inclusão e o método Update para gravar efetivamente os valores inseridos.

rs_teste.Open
rs_teste.AddNew
rs_teste.Fields("Nome").value = "Jose"
rs_teste.Fields("Endereço").value = "Rua XV de novembro, 100"
rs_teste.Fields("Idade").value = 19
rs_teste.update

Pronto você acabou de criar um recordset na memória que não está associado a uma banco de dados, definiu campos neste recordset e atribuiu valores ao mesmo. Adivinha se você vai poder usar os métodos MoveNext, MoveFirst, MovePrevious,MoveLast para navegar pelo recordset ? ( se ainda tiver dúvidas a resposta e sim ! )

Além disto vai poder ordernar os seus registros usando o método Sort. Se quiser ordernar pela idade basta fazer:

rs_teste.Sort = "Idade"

Se você ainda não assimilou o recado, vamos mostrar um exemplo prático de utilização da ADO sem uma conexão com uma base de dados. Vamos Criar um projeto que leia as informações de um diretório de sistema de seu computador local usando o objeto recordset.

Inicie um novo projeto no Visual Basic , e salve o projeto com o nome de dao_teste ( ou um nome a sua escolha!).

O formulário do Projeto deverá ter os seguintes objetos:

- Um DriveListBox - para selecionar o drive

- Um Botão de comando (command2) para carregar os arquivos do drive selecionado

- Dois Labels e dois TextBox (text1 e text2) para indicar o nome e mostrar o código e o nome dos arquivos carregados

- 4 botões de comandos (command(0) até 3 ) para fazer a movimentação pelo recordset e um botão de comando(command3) para encerrar o sistema.

Ao iniciar o projeto , voce deve selecionar o drive do qual deseja carregar os arquivos e a seguir clicar no botão para Carregar os Arquivos. A ADO cria o recordset e lê a informação do diretório usando um Recordset para armazenar o código do arquivo e o seu nome que serão mostrados nas caixa de texto. Voce pode se mover pelo recordset clicando nos botões apropriados e o total dos arquivos lidos é mostrado no projeto. Abaixo o projeto em tempo de execução:

Veja que usamos os seguintes métodos do objeto Recordset criado:
  1. RecordCount - Para contar o total de arquivos lidos
  2. MoveFirst - Para ir para o inicio do arquivo
  3. MoveNext - Para ir par o próximo registro do arquivo
  4. MovePrevious - Para ir para o registro anterior
  5. MoveLast - Para ir para o fim do arquivo

Abaixo o código completo do projeto:

General Declarations
Dim rsFileInfo As Recordset 
Private Sub Command1_Click(Index As Integer)
 Select Case Index
   Case 0 'primeiro
     rsFileInfo.MoveFirst
     load_recs
   Case 1 'anterior
     rsFileInfo.MovePrevious
       If rsFileInfo.BOF Then
          MsgBox "Inicio do arquivo "
          rsFileInfo.MoveNext
       End If
     load_recs
   Case 2 'proximo
     rsFileInfo.MoveNext
       If rsFileInfo.EOF Then
          MsgBox "Fim do arquivo "
          rsFileInfo.MovePrevious
       End If
     load_recs
   Case 3 'ultimo
     rsFileInfo.MoveLast
     load_recs
 End Select
End Sub

Private Sub Command2_Click()
Dim sFileDir As String
Dim drive As String
Dim Idx As Integer
Set rsFileInfo = New Recordset
    ' inclui novos campos no recordset
    rsFileInfo.Fields.Append "ID", adInteger
    rsFileInfo.Fields.Append "FileName", adBSTR, 255    
    'abre o recordset
    rsFileInfo.Open
    ' usa o comando dir para retornar os arquivos do drive escolhido
    drive = Drive1
    drive = Left(Drive1, 2) & "\"
    sFileDir = Dir(drive)
    ' se existir um arquivo valido
    Do While sFileDir <> ""
        If sFileDir <> "." And sFileDir <> ".." Then
        Idx = Idx + 1
            ' inclui um novo registro para este arquivo
            rsFileInfo.AddNew
            rsFileInfo!ID = Idx
              rsFileInfo!FileName = sFileDir
              rsFileInfo.Update
            ' e vai para o proximo arquivo do diretorio
            sFileDir = Dir
        End If
    Loop
    rsFileInfo.MoveFirst
    Label3.Visible = True
    load_recs
End Sub
Private Sub load_recs()
  'carrega o controles com os nomes do arquivo e seu codigo
  Text2.Text = rsFileInfo!FileName
  Text1.Text = rsFileInfo!ID
  Label3.Caption = "Total de Arquivos = " & rsFileInfo.RecordCount
End Sub
Private Sub Command3_Click()
  Unload Me
End Sub

E vamos ficando por aqui... Download do projeto: ADO sem base de dados (2 KB)


retorna