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
|
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:
|
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