Problema com GET

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

david.miguel
Usuário Nível 1
Usuário Nível 1
Mensagens: 34
Registrado em: 07 Jul 2005 11:50

Problema com GET

Mensagem por david.miguel »

Ola turma,

Estou com um outro problema, estou querendo montar uma tela dinamica com os dados que tenho em um dbf. Peguei os dados que queria e salvei em um vetor.

Estou conseguindo montar a tela e até salvar os campos no dbf, mas não estou conseguindo utilizar a opção de VALID.

Segue o codigo que fiz para montar a tela:

FOR x := 1 TO Len(aCampos)
cVar := aCampos[x,1]
cPict := If(Empty(aCampos[x,06]),NIL , rTrim(aCampos[x,6] ))
cValid := If(Empty(aCampos[x,07]),".T.", rTrim(aCampos[x,7] ))
cF3 := If(Empty(aCampos[x,09]),NIL , aCampos[x,9] ))
cWhen := If(Empty(aCampos[x,14]),".T.", rTrim(aCampos[x,14]))

IF aCampos[x,2] = "C"
&cVar := Space(aCampos[x,3])
ELSEIF aCampos[x,2] = "D"
&cVar := Ctod(" / / ")
ELSEIF aCampos[x,2] = "N"
&cVar := 0
ENDIF
@ nLin, nCol SAY aCampos[x,5] GET &cVar PICT cPict VALID cValid
IF x != Len(aCampos)
IF Len(aCampos[x,5]) + aCampos[x,3] + nCol > 40 .OR.;
Len(aCampos[x+1,5]) + aCampos[x+1,3] + nCol > 40
nCol := 6
nLin := nLin + 1
ELSE
nCol := 40
ENDIF
ENDIF
NEXT
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Não deu pra entender muito bem, mas, quando vc usa a clausula Valid, tem que ser // Valid alguma coisa //
Como por exemplo @ 0,0 get var valid var > 0 // onde var deve ser maior que zero, senão ele nao avança para o Get seguinte.
Agora se vc estiver querendo por exemplo, que determinado Get não seja processado devido alguma condição, use a clausula When
Exemplo
aVar:= space(10)
bVar:= space(10)
cVar:= space(10)
@ 0,0 get aVar
@ 0,0 get bVar
@ 0,0 get cVar when bVar // processa este Get, se bVar não estiver vazio
read

Espero ter ajudado.
david.miguel
Usuário Nível 1
Usuário Nível 1
Mensagens: 34
Registrado em: 07 Jul 2005 11:50

Mensagem por david.miguel »

Sim o meu cValid tem uma função aonde faz a validação da váriavel. só que como o processo que quero fazer é dinamico, o valor do valid no final da montagem da tela é o do ultimo campo.

imagine isso, uma tabela de onde tiro os dados:
CAMPO TAMANHO VALIDACAO PICTURE
codigo 6 ExisteCodigo() 999999
nome 40 @!
estado 2 ExisteEstado() !!

ficaria algo assim em um vetor:
DO WHILE !EOF()
cVar := CAMPO
cPict := PICTURE
cValid := VALIDACAO
@ lin, col GET &cVar PICT &cPict VALID &cValid
ENDDO
READ
Responder