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
Moderador: Moderadores
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
busca no grid
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,
Se for possível, cole o seu código do Grid aqui.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
busca no grid
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
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
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
busca no grid
Marcelo, tente o seguinte:
Abraços,
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 NilToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
busca no grid
Fundamental isso !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.
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.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp