Página 1 de 1

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

Enviado: 03 Abr 2005 19:37
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

Enviado: 03 Abr 2005 20:48
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

Enviado: 03 Abr 2005 21:58
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.

Enviado: 03 Abr 2005 23:56
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,