Académique Documents
Professionnel Documents
Culture Documents
Neste artigo eu vou mostrar como voc pode armazenar os dados de um tabela em um array (matriz) formando assim uma
matriz de dados.
A idia armazenar os dados de uma busca em uma tabela em um array predefinido. Para variar um pouco vou mostrar como
usar o controle slider para navegar pelos registros obtidos pela consulta e armazenados no array.
A idia a seguinte : Vamos usar o banco de dados Biblio.mdb e fazer uma busca na tabela Publishers pela coluna Name de
forma que todos os registros obtidos pelo critrio de seleo informado pelo usurio em uma caixa de texto sejam armazenados
em array.
Introduo
J ouviu falar no controle Slider ? No ? bem , ento vou apresent-lo... E-lo
O controle Slider esta presente na OCX - MSCOMCTL.OCX - Microsoft Windows Common Controls , e muito til quando
desejamos associar valores consecutivos dentro de um intervalo. No nosso caso teremos sempre um conjunto de registros
obtidos pelo critrio de seleo associados ao controle Slider
Ao mover o controle usando o mouse ou o teclado temos a movimentao pelos valores associados , no nosso caso os registros
da tabela Publishers. A tabela Publishers possui a seguinte estrutura:
A tabela possui 10 campos. A pesquisa ser feita pelo campo Name e iremos exibir os
campos :
PubID - Cdigo
Company Name - Empresa
Address - Endereo
1. Um controle TextBox - text1 - onde o usurio vai informa o critrio para busca
2. Um controle CommandButton - command1 - Procurar - onde disparado a rotina para iniciar a busca e preencher o
array
3. um controle Frame - frame1 - para agrupar os dados que vamos exibir como resultado da busca
4. Os controles : text2 para exibir o cdigo , text3 para exibir a empresa e text4 para exibir o endereo
5. Um controle Slider - Slider1 - que iremos associar aos registros armazenados no array como resultado da busca
O jeito do formulrio dever ser o seguinte:
E vou usar uma conexo DAO , mas voc pode usar uma conexo ADO ou RDO , no importa...
O cdigo do projeto
Na seo General Declarations vamos declarar as variveis usadas no sistema :
Option Explicit
Private Tab_encontrados() As String
Dim bdBiblio As Database
Dim rsPublishers As Recordset
bdBiblio e rsPublishers so variveis objeto para o banco de dados e recordset.
Declaramos tambm um array chamado Tab_encontrados() do tipo String que vai armazenar os dados da tabela Publishers.
Eu estou procurando a partir da posio 1 na string representada por .Fields(1) - que aqui a coluna Name - ento eu estou
procurando a partir da posio 1 no campo nome , pelo critrio informado em Text1 usando o modo de comparao vbTextCompare - ou seja uma comparao Textual. Se eu encontrar ento teremos que o valor retornado ser maior que zero .
3- O prximo bloco a se executado ser o seguinte :
ReDim Preserve Tab_encontrados(9, i)
For f = 0 To 9
Tab_encontrados(f, i) = .Fields(f) & ""
Next f
i=i+1
encontrado = True
Aqui eu estou usando a instruo Redim para realocar o espao de armazenagem do array Tab_encontrados.
Como a tabela Publishers possui 10 campos , eu vou definir o array bidimensional , com o tamanho :
(como o primeiro elemento tem ndice 0 , 9 indica que teremos 10 elementos)
Tab_encontrados(9, i)
A seguir em um lao for/next eu vou percorrer os dez elementos do array e atribuir a cada um o respectivo campo definido em -
. Fields(f)
No final teremos um array bidimensional preenchido com os valores encontrados pela busca no recordset Publishers.
4- Podemos ento fechar o banco de dados e o recordset , habilitar o controle slider se houver algum valor no array. Para
verificar isto usamos a funo Ubound :
If UBound(Tab_encontrados, 2) = 0 Then
Aqui estamos usando a funo Ubound ,UBound - Retorna um valor do tipo Long contendo o MAIOR ndice para a dimenso
definida de um array. Sintaxe:
LBound(nome_do_array[, dimenso])
Se o ndice for maior que zero ento temos dados no array
Slider1.Max = UBound(Tab_encontrados, 2) + 1
Slider1.Min = 1
6- S falta mostrar os dados , para isto invocamos a funo : mostra_dados. Vejamos o seu cdigo :
Public Sub mostra_dados(num As Integer)
Dim i As Byte
If UBound(Tab_encontrados, 2) = 0 Then
Frame1.Caption = "Registro: 1/1"
Else
Frame1.Caption = "Registro: " & Slider1.Value & "/" & Slider1.Max
End If
Text2.Text = Tab_encontrados(0, num) ' coluna codigo
Text3.Text = Tab_encontrados(2, num) ' coluna empresa
Text4.Text = Tab_encontrados(3, num) ' coluna endereco
End Sub
Este cdigo apenas atribui os valores do array - Tab_Econtrados() - a cada caixa de texto.
Para permitir que os dados sejam exibidos pela movimentao do controle precisamos do seguinte cdigo :
Private Sub Slider1_Change()
mostra_dados Slider1.Value - 1
End Sub
Private Sub Slider1_Click()
mostra_dados Slider1.Value - 1
End Sub
Lembrando que podemos movimentar o controle com o mouse , teclado e com as teclas PgDown Page Up.
Executando o projeto teremos a seguinte tela para uma busca pela letra Z :
Exibimos o registro atual e quantidade total de registros e o controle slider ao ser movido indica para qual registro se move e
exibe na parte inferior este numro e as marcas representando a quantidade de valores associados ao controle. Assim voc esta
exibindo os dados sem uma conexo com a base de dados.
Gostou ???? Ento pegue o cdigo arqui