Erro???????????????????

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

PITERGALDIANO
Usuário Nível 2
Usuário Nível 2
Mensagens: 91
Registrado em: 28 Nov 2003 08:48

Erro???????????????????

Mensagem por PITERGALDIANO »

Galera boa noite

acho que é bobeira minha, mas não está dando certo

tenho uma linha em meu PRG que é a seguinte:

@00,00 say "Convenio..:" Get cConvenio Pict "@!" Valid ValConvenio(cConvenio)

Obs.: A variavel cConvenio está assim:
Public cConvenio := Space (05)

Funcion ValConvenio(cConvenio)

Use CadCli Alias cadcli Shared New
Set Index To CadCli
Set Order To 1
cadcli->(DbGoTop())

cConvenio := Padl("1",5,"0")

Do While ! Eof()

If Empty(cConvenio)
Close cadcli
Return .F.
EndIf

Locate For cadcli->Codigo == cConvenio

If cadcli->(Eof())
MsgBox3d1("Convênio não cadastrado!","Atenção")
Close cadcli
Return .F.
EndIf

Close cadcli

EndDo

Return cConvenio

Quando retorna a variavel cConvenio na linha acima aparece o seguinte erro: Error BASE/1077 Argument error: .NOT.

Se coloco .T. no lugar de cConvenio ai funciona, mas preciso da função para verificar se cConvenio é cadastrada e formatar ela com zeros à esquerda

Alguém pode me ajudar?

OIbrigado

Piter Galdiano - Programador Clipper
Piter Galdiano
Programador Clipper
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Piter

Me desculpe, já havia postado uma solução, porém observei posteriormente que a msg era só para o colega Maligno, desta forma editei a mensagem e deixo a resposta para o colega Maligno. Quando precisar é só pedir.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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 »

Quando em edição, um campo GET não pode ser diretamente manipulado. Deverá ser utilizado um método da classe GET. Levando-se em conta que a lista GET padrão é a que está em uso, temos GetList como uma matriz privada (veja o PPO equivalente ao seu PRG), que contém tantos elementos quantos forem os campos, e na mesma ordem em que foram informados (observe que o PPO contém linhas do tipo AAdd(GetList,_GET_(...))). A classe GET dispõe de vários métodos que lhe permite manipular a lista de várias formas. Um desses métodos permite inserir um valor diretamente no buffer de um campo, da forma como você precisa. Veja um exemplo simples:

Código: Selecionar todos

function teste()
GetList[1]:VarPut("TESTE")
return .T.
Observe que o foco da alteração é o elemento informado na matriz GetList. Usei o campo 1 apenas como exemplo. Informe o número do campo que sofrerá a alteração. E lembre-se que a função informada na cláusula VALID deverá sempre retornar um valor lógico.

Se ainda sobrar alguma dúvida, volte ao assunto.

[]'s
Maligno
http://www.buzinello.com/prg


PS: Agradeço a deferência por solicitar minha ajuda especificamente, mas esse fórum tem muitas pessoas capacitadas. Talvez você já tivesse obtido sua resposta há mais tempo se não a tivesse "endereçado". Uma hora alguém responderia da mesma forma que eu. Além do mais, não sou a pessoa mais indicada para resolver esse tipo de problema. Meu sub-sistema GET é totalmente modificado e falar sobre o GET padrão é bem mais difícil pra mim do que pra muitos outros colegas, mais capacitados nesse assunto. Tem coisas que nem me lembro mais. Precisei pesquisar para lhe dar a resposta acima.
Assim, meu amigo, no futuro não peça a ajuda de um ou de outro especificamente. Apenas poste a dúvida. Como sempre acontece, e você bem sabe, alguém o responderá rapidamente.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Piter Galdino,

Existe uma forma mais simples de se fazer isto.

Apesar do PICTURE do GET estar "@!", acho que será digitado apenas números neste campo, se for isto, faça o seguinte:

1 - Altere a linha abaixo da sua função:

cConvenio := Padl("1",5,"0") //aqui vc perde o que foi digitado no GET

e troque por:

M->cConvenio := STRZERO(VAL(M->cConvenio),5)

2 - No final da função, altere também o comando:

RETURN cConvenio

por:

RETURN .T.

3 - Dentro da sua função, troque qualquer outra referência da variável cConvenio para M->cConvenio.

Obs.: se no GET você vai digitar apenas números, troque a PICTURE por "99999".

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
Responder