Página 1 de 1

problemas durante dbedit..

Enviado: 06 Mai 2006 15:12
por clebermano
Boa tarde.
Pessoal estou com uma duvida que sei q eh uma duvida besta.
tenho este dbedit, que eh o configurador do meu sistema.
o prob. esta qdo eu uso a funcao dica1()
pode ser q eu esteja usando a funcao errado.
Qdo eu teclo a seta pra baixo, ou seja chr(5), da um erro de argumento <> que eu ja tentei de tudo e nao consegui resolver, se alguem puder me ajudar agradeco.
obrigado.




*******************************************************************************
* configurador do sistema
*******************************************************************************
set proc to sisfunc
set date brit
sele a
use config
index on campo to cfg_1
use config index cfg_1
CLS
SETCOLOR("GR+/B")
sele a
CAMPOS := { 'CAMPO','VALOR'}
CABECA := { 'Campo','Valor'}
WHILE .T.
WMENS_STAT( '<ESC>-Sair <INS>-Incluir <DEL>-Excluir <F3>-Muda Ordem <F4>-Localizar' )
ORD := 1
@ 03,02 SAY 'Ordem: CODIGO '
DBEDIT( 06,01,20,78,CAMPOS,'FUNCONF',,CABECA,'ÍÑÍ',' ³ ' )
EXIT
END
CLOSEALL()
RETURN
*****************************************************************************
FUNCTION FUNCONF( MODO, COL )
LOCAL TECLA
TECLA := LASTKEY()
DO CASE
CASE MODO = 4
IF TECLA = 27
RETURN 0
ENDIF
IF TECLA = -2
IF ORD = 1
SET ORDER TO 2
@ 03,02 SAY 'Ordem: DESCRICAO '
ORD = 2
ELSE
SET ORDER TO 1
@ 03,02 SAY 'Ordem: CODIGO '
ORD = 1
ENDIF
RETURN 2
ENDIF
IF TECLA = -3
KEY :=SGET(19,15,' Digite a Chave.:',30)
REG := RECNO()
IF ! DBSEEK( RTRIM(KEY) )
ERRORMENS('Produto Nao Encontrado! Verifique...')
SET ORDER TO ORD
DBGOTO( REG )
ENDIF
RETURN 1
ENDIF
IF TECLA = 22
APPEND BLANK
KEYB( REPL(CHR(19),5) )
RETURN 2
ENDIF
IF TECLA = 7
IF GETMENU( 14,50,'Confirma Exclusao ?','N A O','S I M' ) # 2
RETURN 2
ENDIF
DO WHILE !RLOCK()
ENDDO
DELETE
UNLOCK
RETURN 2
ENDIF
IF TECLA >= 26 .AND. TECLA <= 126
IF LASTREC() = 0
APPEND BLANK
ENDIF
KEYB( CHR(TECLA) )
DO WHILE !RLOCK()
ENDDO
DO CASE
CASE COL = 1
@ ROW(),COL() SAY CONFIG->CAMPO PICT '@!'
CASE COL = 2
@ ROW(),COL() GET CONFIG->VALOR PICT '@!'
ENDCASE
READY()
IF LASTKEY() = 27
DBUNLOCK()
RETURN 1
ENDIF
DBUNLOCK()
KEYB(CHR(4))
RETURN 2
ENDIF
ENDCASE
if tecla==5 .or. tecla==24
DICA1(RECNO()) /////--->> o prob ta aki
endif
**************************************************************************
func dica1(Param1)
**************************************************************************
sele a
pl:=12;Pc:=30
GO PARAM1
if alltrim(valor)="PDV"
@ 10,30 say "Configura o numero do Pdv "
endif
*elseif alltrim(config->valor)=="CFGDAT3"
* @ 10,30 say "urano "
* @ 11,30 say "sweda "
* @ 12,30 say "Digitron "
*endif
return

Enviado: 06 Mai 2006 18:00
por Daniel
tente assim

Código: Selecionar todos

nRecno:= Recno()
if tecla==5 .or. tecla==24 
    DICA1(nRecno) 
endif 
************************************************************************** 
func dica1(Param1) 
************************************************************************** 
sele a 
pl:=12
Pc:=30 
DBGOTO( PARAM1 )
if alltrim(valor)="PDV" 
    @ 10,30 say "Configura o numero do Pdv " 
endif 
*elseif alltrim(config->valor)=="CFGDAT3" 
* @ 10,30 say "urano " 
* @ 11,30 say "sweda " 
* @ 12,30 say "Digitron " 
*endif 
return .t.

Enviado: 08 Mai 2006 15:58
por clebermano
amigo daniel, acho q me expressei mal.
o prob. esta na linha
if alltrim(valor)="PDV" //ta aki
@ 10,30 say "Configura o numero do Pdv "
endif
qdo eu dou apenas um say, funciona, agora qdo eu comparo alltrim(valor)=="PDV", ae eh q da o problema.
erro de argumento <>

Enviado: 08 Mai 2006 16:24
por Daniel
entao o erro e q vc esta comparando um variavel caracter e a outra numerica

Enviado: 09 Mai 2006 10:04
por clebermano
Daniel peco desculpas novamente, qdo eu fui testar do jeito q vc me falow, armazenando em variaveis, deu certo, agora me explica uma coisa, pq armazenando em variaveis, tanto o recno(), qto o valor da variavel a ser comparada, da certo, e comparando direto o campo nao ??

Enviado: 09 Mai 2006 10:49
por Daniel
recno() ele retorna numerico

uma ideia pra vc nao confundir mais as variaveis

Ex:
if alltrim(valor)="PDV"

a variavel valor por exemplo nao da para saber se ela e caracter o numerica!
se vc declarar ela sim cValor fica mais facil.

if alltrim(cValor) = "PDV"

Enviado: 09 Mai 2006 14:01
por ROMARIO
Colegas.

Só para complementar o que o Daniel explicou e esclarecer "bem esclarecido" para o Clebermano.

Antes de tudo deve-se criar as variáveis de preferência em notação Hungara, tipo assim:

Local cNome, nValor etc. (onde o "c" antes do Nome quer dizer que vai ser variavel caractere e "n" antes do valor quer dizer que vai ser variável numerica)

Depois deve-se inicializar as variáveis, assim:

cNome:=Space(50) // Variavel para armazenar temporáriamente 50 espacos ou caracteres.
nValor:= 0.00 // se vai ser armazenado valores com duas casas depois da virgula ou,
nValor:=0 // se numero inteiro apenas.

Em seguida atribui-se valores a estas variáveis com os tipos correspondentes e ai sim pode-se comparar. (Os dados poder vir de digitação ou do BD).

Abraços

Romario

Enviado: 11 Mai 2006 09:27
por clebermano
Intindi. obrigado.