Página 1 de 1

Colocar cursor em uma Busca utilizando GRID

Enviado: 17 Jun 2008 10:43
por mmaciel11
Bom dia,

Fiz a seguinte pesquisa so que o cursor na cai na pesquisa desejada

Function BTN_Pesquisar_Prestador()
Local cBuscar

cBuscar := upper(allTrim(inputbox('Digite a sua pesquisa:','Pesquisar')))

// Posiciona Indices

OrdSetFocus('Prest2')
Prestador->(DbGoTop())

If .not. empty(cBuscar)
If Prestador->(DbSeek(cBuscar))
Frm_Prestador.Grid_Prestador.Setfocus
Frm_Prestador.Grid_Prestador.value := Prestador->(recno())
Else
MsgExclamation('Prestador não encontrado !!!','Mensagem')
Endif
Endif

Return(nil)


observei que quando coloco por exemplo : AUREA ele posiciona certo no registro mais o cursor cai muito a cima do nome 'AUREA'


agradeço desde ja a ajuda

Grato Marco Maciel

Re: Colocar cursor em uma Busca utilizando GRID

Enviado: 17 Jun 2008 12:44
por sygecom
É Minigui ?

Tentou inverte ex:

Código: Selecionar todos

Function BTN_Pesquisar_Prestador()
Local cBuscar

cBuscar := upper(allTrim(inputbox('Digite a sua pesquisa:','Pesquisar')))

// Posiciona Indices

OrdSetFocus('Prest2')
Prestador->(DbGoTop())

If .not. empty(cBuscar)
If Prestador->(DbSeek(cBuscar))
Frm_Prestador.Grid_Prestador.value := Prestador->(recno())
Frm_Prestador.Grid_Prestador.Setfocus
// se existe alguma maneira de dar um refresh no GRID de aqui.
Else
MsgExclamation('Prestador não encontrado !!!','Mensagem')
Endif
Endif

Return(nil)

Re: Colocar cursor em uma Busca utilizando GRID

Enviado: 18 Jun 2008 17:13
por mmaciel11
amigao ok

testei mais nao deu certo !!!

Re: Colocar cursor em uma Busca utilizando GRID

Enviado: 19 Jun 2008 09:22
por MARCELOG
Parece que você está usando a minigui. Certo?
Então postou no forum errado.
Mas tudo bem, que nunca fez isso que atire a terceira pedra.

Bem, o erro acontece porque o arquivo está indexado e o recno() do registro não indica a sua posição no índice, mas a sua posição no banco de dados.
Experimente colocar no lugar do recno() a função que retorna o número referente a ordem do registro no índice. Acho que é ordkeyno().

Boa sorte.

MarceloG


Ou, acho mais rápido, use isso abaixo.

PROCEDURE PESQ_USUARIO()

/*
Func/Proc: PESQ_USUARIO
Objetivo.: Pesquisar nome do usuario
*/

LOCAL cPesquisa, i

// Curto circuito

IF USUARIO.GRD1.ITEMCOUNT <= 1 // Use 1 ou ou número de linhas visíveis do grid

RETURN

ENDIF

cPesquisa := ALLTRIM(USUARIO.TXT1.VALUE) // ou seu INPUTBOX


FOR i := 1 TO USUARIO.GRD1.ITEMCOUNT

IF SUBSTR(USUARIO.GRD1.ITEM(i)[Nº DA COLUNA],1,LEN(cPesquisa)) == cPesquisa

USUARIO.GRD1.VALUE := i

EXIT

ENDIF

NEXT i

ENDIF

RETURN

Ps: esse esquema usa um textbox para pesquisa letra a letra. Adapte para o seu usando inputbox.