Página 1 de 1

busca no grid

Enviado: 26 Nov 2013 21:53
por marcelosantos
Pessoal, saudações.

Estou com um form onde tenho um grid, aprendi montar esse grid e funciona.

porem preciso fazer uma busca por nome.

digito em um textbox o nome e quero posicionar no grid a linha que tem esse nome.

estou apanhando um pouco por não entender ainda o funcionamento completo do grid, dei um seek na tabela e sei que encontrou o registro, mas não consigo posicionar no grid.

Ainda não entendi bem a ligação do grid e o dbf.
Devo fazer a busca no próprio grid ou é no dbf mesmo?

por favor os colegas do fórum podem me ajudar ?

abraços

marcelo

busca no grid

Enviado: 27 Nov 2013 21:21
por Toledo
Marcelo, dê mais detalhes de como você está montando o Grid, principalmente se está usando um Array para incluir os itens do Grid ou está usando diretamente o DBF.

Se for possível, cole o seu código do Grid aqui.

Abraços,

busca no grid

Enviado: 27 Nov 2013 21:50
por marcelosantos
Segue Toledo, obrigado.


Eu crio o grid depois tenho a função abre_txt_sped() onde seleciono o nome do arquivo com getfile() depois abro o dbf e com o do while preencho o grid com o campo do dbf. Depois tem um textbox onde digito uma palavra que gostaria de encontrar no grid.

O meu dbf tem apenas um campo onde armazeno um txt do sped.
A ideia é achar a linha que contem o string desejado na busca.

Conceitualmente é fácil, pra mim um at() no campo resolveria, a minha dificuldade é porque ainda não entendi direito como associar o grid ao dbf ou se a busca deve ser feita no grid mesmo e depois atualizar o dbf e por ai vai.

abraços, marcelo

Código: Selecionar todos


#include <hmg.ch>

Function ImportaSped()
     
   
     
     
    Define Window Imp_Sped at 0,0 WIDTH 1230 HEIGHT 660 TITLE "IMPORTA ARQUIVO SPED" modal
        @ 530,11 Label   LblPesquisa Value "Pesquisar" width 60
        @ 530,85 TextBox TxtPesquisa Width 600 On Change AcharReg()
        @ 568,10 BUTTON BtAbre_txt CAPTION "Abrir" WIDTH 100 ACTION(ABRE_TXT_SPED())
     
        Define Grid GridSped
            Parent Imp_Sped ; Row 10 ; Col 10
            Width 1195
            Height 500
            Headers {"Linhas do Sped"}
            Widths {1700}
            FontName "arial" && "Courier New"  
            FontSize 11 && 10
            FontBold .t.
            ToolTip "Arquivo texto do Sped - Efd - Sped Fiscal"
            On DblClick ChamaClick()       
        End Grid

      Define StatusBar 
         date
      End StatusBar
   End Window
    
    Imp_Sped.Center
    Activate Window Imp_Sped
    

FUNCTION ABRE_TXT_SPED()
LOCAL X 

    x:=GetFile({{"Arquivo *.TXT","*.txt"},{"Arquivo *.*","*.*"}},"Escolhendo o Arquivo","C:\prg\teste",.f.,.t.)
    
    select 1
    use arq.dbf
    zap
    Append from &x sdf
    dbgotop()
    
    
    do while .not. eof()
       add item {arq->linha} to GridSped of Imp_Sped
       dbskip()
    Enddo 
    
    Imp_sped.GridSped.setfocus
    /*
    if .not. empty(x)
        MsgInfo(x)
    endif*/
RETURN    


Function AcharReg()
   
   locate for At(Imp_Sped.txtPesquisa.Value, arq->linha) > 0
   
   IF FOUND()
          // add item {arq->linha} to Gindice of Imp_Sped
          // Imp_Sped.Gindice.refresh
          
          
   ENDIF
   

Return


busca no grid

Enviado: 27 Nov 2013 22:44
por Toledo
Marcelo, tente o seguinte:

Código: Selecionar todos

Function AcharReg()
   DbGoTop()

   LOCATE FOR AT(RTRIM(Imp_Sped.txtPesquisa.Value), arq->linha) > 0

   DELETE ITEM ALL FROM GridSped OF Imp_Sped

   DO WHILE Found()
     ADD ITEM {arq->linha} TO GridSped OF Imp_Sped
     CONTINUE
   ENDDO

   Imp_Sped.GridSped.Refresh

Return Nil
Abraços,

busca no grid

Enviado: 28 Nov 2013 09:27
por Pablo César
Toledo escreveu:Marcelo, dê mais detalhes de como você está montando o Grid, principalmente se está usando um Array para incluir os itens do Grid ou está usando diretamente o DBF.

Se for possível, cole o seu código do Grid aqui.
Fundamental isso !

O Grid é um ótimo componente, mas é complexo o seu uso. Há várias formas de utilizá-lo.

Mas acho que o colega Toledo, agora acertou porque conseguimos entender agora a forma que você está utilizando. Você está utilizando o seu grid com vetores, é mais laborioso mas é mais leve e rápido. Só que precisará você mesmo fazer o controle de navegação dentro do grid. O que é uma coisa laboriosa.

busca no grid

Enviado: 28 Nov 2013 19:15
por marcelosantos
Obrigado, Toledo, deu certo.

Obrigado Pablo