Pessoal ja tenho algumas funcoes parecidas com esta, que sempre me dao o retorno que eu preciso.mas essa aki nao ta dando certo. olha so.
//esta linha chama o a funcao.
@ 08,02 say "Grupo.:" getwin Mgrupo pict "999" valid (if(Mgrupo==0,d_bedit("grupo","prd_2.ntx",@mgrupo,"codigo","descricao"),),.t.)
// afuncao eh esta aki.
// a retorno que eu preciso eh o Pret. voltar para a funcao chamadora acima.
*****************************************************************************
FUNC D_BEDIT(pDBF,pINDEX,pRET,pCAMPO1,pCAMPO2,pCAMPO3,pCAMPO4,pCAMPO5,pMENSAGEM,pLIN,pCOL)
*****************************************************************************
LOCAL TELADBEDIT
LOCAL mALIAS
mALIAS:=ALIAS()
SELE ( pDBF )
SAVE SCREEN TO TELADBEDIT
if !empty(Pcampo5)
aColunas:={Pcampo1,Pcampo2,Pcampo3,Pcampo4,Pcampo5}
elseif !empty(Pcampo4)
aColunas:={Pcampo1,Pcampo2,Pcampo3,Pcampo4}
elseif !empty(Pcampo3)
aColunas:={Pcampo1,Pcampo2,Pcampo3}
else
aColunas:={Pcampo1,Pcampo2}
endif
Drawinx(02,00,29,79,'PESQUISA ')//+ IF(!EMPTY(pMENSAGEM,ALLTRIM(pMENSAGEM)," ")))
*CAMPOS := { 'CODIGO','DESCRICAO'}
CABECA := { 'Codigo','DESCRICAO'}
rodamens("<INS>-Inclui þ <DEL>-Apaga þ <F2>-Calendario þ <F3>-Calculadora")
WHILE .T.
ORD := 1
DBEDIT( 06,01,20,78,ACOLUNAS,'FUNDBEDIT',,CABECA,'ÍÑÍ',' ³ ' )
SELE ( mALIAS )
@ 10,10 SAY pRET
@ 11,10 SAY VALTYPE(pRET)
INKEY(0)
pRET:=pRET
* RETURN(0)
RESTORE SCREEN FROM TELADBEDIT
RETURN
END
CLOSEALL()
RETURN
*****************************************************************************
FUNCTION FUNDBEDIT( MODO, COL)
*****************************************************************************
LOCAL TECLA
TECLA := LASTKEY()
DO CASE
CASE MODO = 4
IF TECLA = 27
RETURN 0
ENDIF
IF TECLA = -3
SET ORDER TO 2
SET SOFTSEEK ON
key:=space(30)
@ 19,15 say ' Digite a Chave.:' get key
read
REG := RECNO()
IF ! DBSEEK( RTRIM(KEY) )
ERRORMENS('Informacao Nao Encontrada! Verifique...')
DBGOTO( REG )
ENDIF
SET SOFTSEEK OFF
RETURN 1
ENDIF
IF TECLA = 22
APPEND BLANK
KEYB( REPL(CHR(19),5) )
RETURN 2
ENDIF
IF TECLA = 7
if Winquest('Deseja apagar este registro? ',ICON_QUES,{'Sim','Nao'}) == 1
DO WHILE !RLOCK()
ENDDO
DELETE
UNLOCK
endif
RETURN 2
ENDIF
IF TECLA = 13
pFIELD:=FIELD(1)
pRET:=&pFIELD
@ 10,10 SAY pRET //eu preciso que este valor volte para o prg produtos.
INKEY(0)
RETURN (0)
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() GET CODIGO PICT '@!'
CASE COL = 2
@ ROW(),COL() GET DESCRICAO PICT '@!'
ENDCASE
READY()
IF LASTKEY() = 27
DBUNLOCK()
RETURN 1
ENDIF
DBUNLOCK()
KEYB(CHR(4))
RETURN 2
ENDIF
ENDCASE
por que nao consigo pegar o valor desta variavel????
Moderador: Moderadores
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
por que nao consigo pegar o valor desta variavel????
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 !
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
amigo spereira, se eu colocar return (pcod) acontece da funcao dbedit entender como uma funcao do modo do dbedit, como por exemplo se o codigo for 1, nao sai do dbedit.
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 !
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
amigo rochinha, quando eu olho o say que esta dentro da funcao do dbedit, la no final, a variavel esta carrada com o valor que eu preciso, quando eu retorno, e verifico la em cima ela ja esta com valor 0, se eu passar @pret, da o maior pau na compilacao...
Ja passaram por isso??
Ja passaram por isso??
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 !
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Acrescente o seguinte:
FUNC D_BEDIT(pDBF,pINDEX,pRET,pCAMPO1,pCAMPO2,pCAMPO3,pCAMPO4,pCAMPO5,pMENSAGEM,pLIN,pCOL)
*****************************************************************************
LOCAL TELADBEDIT
LOCAL mALIAS
PUBLIC pRET
mALIAS:=ALIAS()
...
Analise também o funcionamento da seguinte função:
Uso:
Tenho um indice criado com a chave str(idcliente,5,0).
Uma tabela chamada clientes
O indice com a chave str(idcliente,5,0) esta na posicao 2
O campo nome contem o conteudo que preciso
Quando eu passo os parametros a função fica assim:
Veja que re_torno devolve o valor avaliado em &m_campo.
Pode-se usa-la para pegar qualquer valor de qualquer campo em qualquer tabela aberta.
Exemplo:
Passe a usa-la.
@braços :?)
Acrescente o seguinte:
FUNC D_BEDIT(pDBF,pINDEX,pRET,pCAMPO1,pCAMPO2,pCAMPO3,pCAMPO4,pCAMPO5,pMENSAGEM,pLIN,pCOL)
*****************************************************************************
LOCAL TELADBEDIT
LOCAL mALIAS
PUBLIC pRET
mALIAS:=ALIAS()
...
Analise também o funcionamento da seguinte função:
Código: Selecionar todos
FUNCTION pesq( m_relacao, m_area, m_ordem, m_campo, m_saida, m_vazio )
//
// -> funcao para leitura de dados em outro arquivo
u_areatua := alltrim( str( select(), 3 ) )
u_ordem := IndexOrd()
sele &m_area
if m_ordem = nil .or. m_ordem = 0
re_torno := &m_campo
sele &u_areatua
else
set order to m_ordem
seek m_relacao
re_torno := &m_campo
sele &u_areatua
set order to u_ordem
if pcount() > 4
&m_saida := re_torno
if pcount() = 6
return ""
endif
endif
endif
return iif (re_torno = nil, "", re_torno)
Código: Selecionar todos
nCodigoDoCliente := 5
cNomeDoCliente := pesq( str(nCodigoDoCliente,5,0), "clientes", 2, "nome" )
Uma tabela chamada clientes
O indice com a chave str(idcliente,5,0) esta na posicao 2
O campo nome contem o conteudo que preciso
Quando eu passo os parametros a função fica assim:
Código: Selecionar todos
...
set order to 2
seek str(nCodigoDoCliente,5,0)
re_torno := nome
sele &u_areatua // Seleciona area de trabalho anterior
set order to u_ordem // Seleciona ordem anterior
...
return iif (re_torno = nil, "", re_torno)
Pode-se usa-la para pegar qualquer valor de qualquer campo em qualquer tabela aberta.
Exemplo:
Código: Selecionar todos
use clientes
use pedidos
go top
lin = 0
do while .not. eof()
@ lin, 0 say pesq( str(pedidos->idcliente,5,0), "clientes", 2, "nome" )
@ lin,50 say pesq( str(pedidos->idcliente,5,0), "clientes", 2, "telefone" )
@ lin,65 say pedidos->valor
lin = lin + 1
skip
enddo
Passe a usa-la.
@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
