problemas durante dbedit..

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

problemas durante dbedit..

Mensagem 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
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem 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.
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem 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 <>
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem por Daniel »

entao o erro e q vc esta comparando um variavel caracter e a outra numerica
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem 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 ??
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem 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"
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
ROMARIO
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 06 Jul 2004 11:25
Localização: AGUDO - RS

Mensagem 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
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem por clebermano »

Intindi. obrigado.
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
Responder