GET + FUNÇÃO

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

GET + FUNÇÃO

Mensagem 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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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()
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: GET + FUNÇÃO

Mensagem 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
...
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

GET + FUNÇÃO

Mensagem 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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A função Buscar() tem um retorno lógico. Então, qual é o problema?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

GET + FUNÇÃO

Mensagem 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.
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Re: GET + FUNÇÃO

Mensagem 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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Vcoê precisa utiliza na busca o índice apropriado para ela.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Re: GET + FUNÇÃO

Mensagem 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
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Auto-prenchimento

Mensagem 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).
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.
Responder