VB6 - Como criar um
paginador p/Banco de dados
Sabe por que eu gosto do VB ? Por que é fácil de aprender e usar e com ele você pode fazer coisas incríveis antes só possíveis para 'iniciados'.
Por isto não me canso de repetir : Eu sei , é apenas VB , mas eu gosto...
Grande parte de meus artigos referem-se ao acesso a fonte de dados usando VB. Creio que este assunto abranja hoje mais de 60% do assunto quando se pensa em desenvolver uma aplicação Windows.
Neste artigo vou voltar a usar DAO - Data Access Object , lembra dela ou dele ???
Pois bem, o DAO ainda é uma ferramenta poderosa de acesso aos dados quando usada de forma conveniente e para o problema específico.
Quer uma aplicação com acesso a banco de dados para desktop com bom desempenho ? Use DAO.
Vamos supor que você tenha um banco de dados que esta crescendo, crescendo , e, precisa carregar os dados de uma tabela de forma rápida em um controle de listagem de forma que permita escolher os pedidos em uma lista e então exibir os detalhes completos dos dados de um pedido em um controle ListBox.
Para o exemplo deste artigo eu vou usar o banco de dados Northwind.mdb. Por que sempre faço isso ? Porque quase todo mundo tem o bom e velho Northwind.mdb.
Neste banco de dados existe a tabela Orders que contem as informações dos pedidos de uma empresa. Sua estrutura é a seguinte:
![]() |
Como eu quero carregar de forma rápida as informações em um ListBox vou exibir na lista somente os seguintes campos: OrderId, ShipCountry e OrderDate. Assim eu identifico o pedido e posso selecionar os detalhes de um pedido apenas clicando no mesmo.
A aplicação será composta de dois formulários:
Form1 (frmPaginacao.frm) - que irá exibir a relação de pedidos no controle ListBox
Form2 (frmdados.frm) - que irá exibir os detalhes de um pedido.
Inicie então um novo projeto no VB do tipo Standard EXE e inclua no formulário - form1.frm - os controles : ListBox , Label e CommandButton, conforme abaixo:
![]() |
A seguir , no Menu Project , selecione Add form, e, adicione o formulário form2 no projeto, incluindo em seguida neste formulário, os controles TextBox (Text1()) , CommandButton e Label , conforme abaixo:
![]() |
- Os controles TextBox foram incluídos com um array de controles , assim temos os controles TextBox : Text1(0), Text1(1), Text1(2), Text1(3), Text1(4) |
Voltando ao formulário - form1 - inclua o seguinte código no formulário:
Option Explicit Dim db As Database Const caminho = "c:\teste\northwind.mdb" Private Sub Form_Load() Dim rs As Recordset Set db = OpenDatabase(caminho) Set rs = db.OpenRecordset("Select OrderID, ShipCountry, OrderDate from Orders order by orderid") Do Until rs.EOF List1.AddItem rs.Fields("OrderId") & vbTab & rs.Fields("ShipCountry") & " - " & rs.Fields("OrderDate") List1.ItemData(List1.NewIndex) = rs.Fields("OrderId") rs.MoveNext Loop rs.Close Set rs = Nothing End Sub Private Sub List1_Click() Dim rs As Recordset Dim f As Form2 Dim codigo As Long Set f = New Form2 codigo = List1.ItemData(List1.ListIndex) Set rs = db.OpenRecordset("Select * from orders where orderid = " & codigo) f.Text1(0) = rs.Fields("OrderID") f.Text1(1) = rs.Fields("ShipCountry") & "" f.Text1(2) = rs.Fields("OrderDate") f.Text1(3) = rs.Fields("ShipAddress") & "" f.Text1(4) = rs.Fields("ShipCity") & "" f.Show vbModeless, Me rs.Close Set rs = Nothing End Sub Private Sub Command1_Click() Unload Me End Sub |
No evento Load do formulário form1, eu defini um banco de dados , um recordset e abri a conexão com o banco de dados Northwind.mdb
A seguir eu percorro o recordset com os dados extraídos da tabela Orders via comando SQL , exibo os dados no ListBox e , usando a linha de comando: List1.ItemData(List1.NewIndex) = rs.Fields("OrderId") defino um índice único para a propriedade ItemData.
Eu uso então o evento Click do ListBox (poderia ter usado o DblClick) para que quando o usuário clicar em um item da lista aconteça o seguinte:
defino um novo recordset
defino um novo formulário do tipo form2 (Dim f As Form2)
codigo = List1.ItemData(List1.ListIndex) - pega o código da propriedade ItemData e armazena na variável codigo
Abre o recordset filtrando o pedido com o código obtido anteriormente
Atribuo os valores do recordset as caixas de texto do formulário
O formulário form2 somente tem o código para ser fechado quando o usuário clicar no botão : Fechar.
Executando o projeto e selecionando alguns pedidos temos:
![]() |
Com uma pequena quantidade de código conseguimos efetuar uma tarefa que se fosse feita em outras linguagens de programação levariam mais tempo e não teriam o desempenho que o VB tem , neste caso.
Pegue o
projeto aqui :
vbPaginacao.zip
Eu sei
, é apenas VB, mas, eu gosto !!!
José Carlos Macoratti