USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Pesquisando registros no MSFlexGrid...
ChicoVieira
CRUZEIRO
SP - BRASIL
ENUNCIADA !
Postada em 23/08/2011 23:13 hs            
'Estou precisando de um help... Tenho um sistema que acessa a base de dados via 'DAO. Ao ser carregado o form de Cliente, o MSFlexGrid exibe a relação
'dos clientes/telefones em ordem de cliente.
'Preciso entrar com uma textbox (text1.text) onde, no evento <Change>, à medida em 'que 'eu for digitando, o MSFlexGrid vá exibindo os registros que correspondem à digitação '(ex.: na textbox, <Cl> e na FlexGrid <Cláudio; Clemente; Clineu; Clóvis, etc.
'O banco em Access chama-se <Cliente.mdb> e a tabela <Dados>. Na tabela, há dois 'campos '<Nome> e <Telefone>... Já existe um sistema de Procura, onde os dados são mostrados numa msgbox. Estou precisando filtrar os dados, com exibição dos registros no MsFlexGrid. Ou seja, a cada letra digitada na textbox, o Grid iria se reposicionando (como acontecia no DBGrid).
Vejam o código abaixo:

Option Explicit
Dim DB As Database
Dim RS As Recordset

Private Sub Form_Load()
    Set DB = OpenDatabase("C:LocalCliente.mdb")
    Set RS = BD.OpenRecordset("Select * From Dados Order by Nome", dbOpenDynaset)
    'O recordset é carregado, já ordenado por nome de cliente.
    MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = "Nome"
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = "Telefone"
    MSFlexGrid1.ColWidth(0) = 2500
    MSFlexGrid1.ColWidth(1) = 1000
    MSFlexGrid1.Width = 3800
    cmdGravar.Enabled = False
    While Not RS.EOF
        MSFlexGrid1.AddItem "" & RS.Fields("Nome") & vbTab & RS.Fields("Telefone")
        RS.MoveNext
    Wend
    MSFlexGrid1.RemoveItem MSFlexGrid1.RowSel   'Remove linha em branco antes da relação.
End Sub


Private Sub cmdProcurar_Click()
    Dim Localizar As String, Criterio As String
    Localizar = InputBox("Nome a localizar: ")
    Criterio = "Nome Like'" & Localizar & "'"
    RS.FindMin Criterio
    If RS.NoMatch = True Then
        MsgBox "Nome não encontrado...", vbQuestion, "Procura por:  " & Localizar
        Exit Sub
    Else
        MsgBox "Cliente " & (UCase(RS.Fields("nome")) & Chr(13) & _
       " <localizado no arquivo>.")
    End If
    TXBNome.SetFocus    
End Sub

   
Eduardo
não registrado
ENUNCIADA !
Postada em 24/08/2011 07:33 hs   
Verificar,ai vc coloca do jeito seu.
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 24/08/2011 08:22 hs            
repare que o site troca o findfir_st por findmin
 
veja
 
Private Sub cmdProcurar_Click()
Dim Localizar As String, Criterio As String
Localizar = InputBox("Nome a localizar: ")
Criterio = "Nome Like'" & Localizar & "*'"
RS.FindFirs_t Criterio
MSFLexgrid1.Rows = 1
While Not RS.EOF
MSFlexGrid1.AddItem "" & RS.Fields("Nome") & vbTab & RS.Fields("Telefone")
RS.FindNex_t "Nome Like'" & Localizar & "*'"
Wend
End Sub
lembre-se apenas de retirar, underline das funções findfirs_t e Findnex_t
 
uma vez que o site sempre altera esta palavras.
 
 
   
ChicoVieira
CRUZEIRO
SP - BRASIL
ENUNCIADA !
Postada em 24/08/2011 09:51 hs            
Treze, tomei a liberdade de alterar umas poucas coisas no código que vc passou, e a coisa funciona da seguinte maneira: ao escolher, por exemplo, um nome como Ricardo, o FlexGrid é posicionado no primeiro registro onde existe o nome Ricardo, mantendo os nomes que vêm posteriormente (como Roberto, Rubens, Salvador, Severino, etc.). E os registros anteriores a Ricardo (como André, Carlos, Junior, Marcos, Nei, Renato) não são mais exibidos no FlexGrid, já que a primeira linha inicia com Ricardo...
Eis o código:

Dim Localizar As String, Criterio As String
    Localizar = InputBox("Nome a localizar: ")
    Criterio = "Nome Like'" & Localizar & "*'"
    RS.FindMin Criterio
    MSFlexGrid1.Rows = 1
    While Not RS.EOF
        MSFlexGrid1.AddItem "" & RS.Fields("Nome") & vbTab & RS.Fields("Telefone")
        RS.MoveNext
    Wend


Eu estava pensando num jeito em que, digitando numa textbox (evento Change), o FlexGrid
fosse se reposicionando a cada letra digitada. De forma que, clicando no BackSpace na
textbox, o FlexGrid fosse voltando à lista anterior (ex.: ao digitar Mar, o FlexGrid exibiria re-
gistros de Marcelo, Marcos, Norberto, Otávio, etc... Se clicar no Backspace, a textbox ficaria
assim: Ma. E o FlexGrid reposicionaria a lista, mostrando (Manoel, Manuela, Marcelo,
Marcos, etc...)...
Tem como fazer?
Grato.
   
ChicoVieira
CRUZEIRO
SP - BRASIL
ENUNCIADA !
Postada em 24/08/2011 09:56 hs            
Treze, uma pequena correção, que o site alterou quando digitei
a quarta linha do código ao postar a msg acima:
RS.FindMin Criterio, e não <FindMin>.
   
ChicoVieira
CRUZEIRO
SP - BRASIL
Postada em 24/08/2011 09:58 hs            
Credo...
é RS-ponto-FindMin, e não RS-ponto-FindMin...
     
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2018   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página