Página 1 de 1
GET + FUNÇÃO
Enviado: 26 Jun 2008 10:10
por Netavin
Bom dia amigos do FCOL!!
Necessito de uma ajuda p/ resolver a seguinte questão:
Tenho a seguinte linha:
... Get vvend Pict "@!" When sinal = 0 Valid !Empty(vvend)
Eu gostaria de acrescentar na mesma linha a função Buscano(), que é uma função de pesquisa do nome que estou GETando. Tentei de algumas formas, mas não funciona.
Agradeço antecipadamente!!
[]´s
Netavin
Enviado: 26 Jun 2008 10:20
por Maligno
Apenas faça sua nova função retornar um valor lógico e acrescente-a no VALID:
Código: Selecionar todos
... Get vvend Pict "@!" When sinal = 0 Valid !Empty(vvend) .AND. Buscando()
Re: GET + FUNÇÃO
Enviado: 27 Jun 2008 09:44
por gvc
Vc tb pode transferir a parte de !empty(vvend) para dentro da sua função buscando().
Ai seu código ficaria assim:
Código: Selecionar todos
Get vvend Pict "@!" When sinal = 0 Valid Buscando(vvend)
no seu código buscando:
Código: Selecionar todos
function buscando(q_vvend)
if empty(q_vvend)
return(.F.)
end
...
GET + FUNÇÃO
Enviado: 27 Jun 2008 10:31
por Netavin
Bom dia amigos!
Captei a mensagem. Porém não está dando certo. Acredito que seja "por causa" da construção:
Código: Selecionar todos
@ 18,03 Say "Data:" Get vdten
@ 18,21 Say "Nr romaneio:" Get vroma Pict "99999" Valid N_roma(vroma)
@ 18,41 Say "Qtde :" Get VQTD Pict "99" Valid C_QDE(VQTD)
@ 18,53 Say "Toreiro:" Get vvend Pict "@!" When sinal = 0 Valid !empty(vvend) .and. Buscar()
@ 19,52 Say "Freteiro:" Get VFRET Pict "@!"
Setcolor("r/w")
@ 20,01 Say Repl("-",78)
Setcolor("N/W,W/B")
Read
FUNCTION BUSCAR
LOCAL tam, buf, get, pos, lin, col, tec, n_nsx
N_NSX := INDEXORD()
DBSETORDER(1)
get := GETACTIVE()
lin := get:row
col := get:col
buf := get:VarGet()
tam := LEN(buf)
pos := 1
Set cursor on
DO WHILE .T.
SETPOS(lin, col)
DISPOUT(buf)
SETPOS(lin, col - 1 + pos)
tec := INKEY(0)
IF tec >= 32 .AND. tec <= 255
TEC := ASC( UPPER( CHR( TEC )))
buf := LEFT(buf, pos - 1) + CHR(tec) + SUBS(buf, pos + 1)
IF DBSEEK(LEFT(buf, pos), .T.)
buf := LEFT(&(INDEXKEY(0)), tam)
ELSE
buf := LEFT(buf, pos) + SPACE( TAM - POS)
ENDIF
pos := MIN(tam, pos + 1)
ELSEIF tec == K_LEFT
pos := MAX(1, pos - 1)
ELSEIF tec == K_RIGHT
pos := MIN(tam, pos + 1)
ELSEIF tec == K_HOME
pos := 1
ELSEIF tec == K_END
pos := MIN(tam, LEN(TRIM(buf)) + 1)
ELSEIF tec == K_BS
IF pos > 1
pos --
buf := LEFT(buf, pos - 1) + SUBS(buf, pos + 1) + " "
ENDIF
ELSE
KEYB CHR(tec)
get:VarPut(buf)
get:UpdateBuffer()
DBSETORDER( N_NSX )
RETURN .T.
ENDIF
ENDDO
[]´s
Netavin
Enviado: 27 Jun 2008 10:35
por Maligno
A função Buscar() tem um retorno lógico. Então, qual é o problema?
GET + FUNÇÃO
Enviado: 27 Jun 2008 11:25
por Pablo César
Sinceramente Netavin, com o código da função BUSCAR que você postou, não entendí qual seria a finalidade da função BUSCAR. Poderias explicar melhor ? É uma validação e uma edição condicional do GET ? Ou seria com o propósito de listar as opções do GET Toreiro ?? Lembre que essa função tem que retornar uma valor lógico (.T. ou .F.), como ja disse o Maligno.
Enviado: 27 Jun 2008 11:31
por Maligno
Note que essa função sempre retornará TRUE. Mas também não me ative aos detalhes e não saquei o que precisa ser feito. Busca é busca. Há uma busca. Mas se sempre retornará TRUE, fica bem estranho.
Re: GET + FUNÇÃO
Enviado: 27 Jun 2008 14:43
por Netavin
Bem... vou procurar ser mais explícito.
À medida que vou digitanto a informação do GET, a função buscar() faz a pesquisa no Banco de Dados e autocompleta o nome, uma vez que ele já esteja cadastrado em entradas anteriores. Eu já uso esta função em outros módulos e funciona perfeitamente.
Enquanto escrevo, estou imaginando se não seria porque está indexado pelo nº do romaneio(vroma) e não pelo nome do vendedor(vvend).
[]´s
Netavin
Enviado: 27 Jun 2008 15:05
por Maligno
Vcoê precisa utiliza na busca o índice apropriado para ela.
Re: GET + FUNÇÃO
Enviado: 27 Jun 2008 16:27
por Netavin
Caro Malígno, está dando certo ... quase. Não fosse um detalhe. Ao entrar no Get ref. a variável vvend, na primeira digitação, a função Buscar() não está sendo chamada. Para que funcione eu preciso teclar <Enter> antes de iniciar a entrada da informação.
Tem uma forma de contornar isso ?
Obrigado pela ajuda ....
Netavin
Auto-prenchimento
Enviado: 27 Jun 2008 17:43
por Pablo César
Quer um conselho ? Faça dentro do GETSYS.PRG e compile-o junto, você poderá determinar para cada nome de variavel da própira GET, a função e tipo de busca diferenciada e sugerir-la abaixo do get para ser confirmado após o terceiro caracter digitado (caso o encontrar no GET).