Prezados amigos.
Tenho a seguinte situacao
Tenho um modulo de entradas de notas fiscais.
Quando o codigo do produto nao existe eu dou mensagem nao encontrado.
Eu gostaria que deste modulo eu chamasse minha rotina de cadastro e ja cadastrasse na hora
Fiz alguns testes e aconteceu o seguinte.
Se eu chamar a procedure asssim por exemplo.
if eof()
do produto
loop
endif
ae disgrama tudo.
eu gostaria de saber se tem como de dentro do meu modulo de entradas, eu pudesse aproveitar de alguma maneira meu programa de cadastro, sem ter que fazer uma rotina dentro do modulo de entradas.
Agradeco pela atencao.
Cadastrando o produto chamando de outro modulo.
Moderador: Moderadores
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
Cadastrando o produto chamando de outro modulo.
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 !
Prezado Colega
Isso é relativamente simples de fazer, só vai depender de como você projetou seu sistema, lembre-se que para você usar dessa forma precisará inicializar as váriaveis inerentes ao respectivo cadastro, abrir e restaurar as telas, etc... creio que seu problema maior será quanto a abertura do cadastro, pois é provável que você já abra o cadastro de produtos na rotina de notas fiscais e também abra-os noa rotina de cadastro, dessa forma o arquivo seria aberto 2 vezes o que não é aceito pelo Clipper versão 5.1 e 5.2, com uma certa dose de paciência crio que vocÊ conseguirá facilmente.
Até logo.
Marcelo
Isso é relativamente simples de fazer, só vai depender de como você projetou seu sistema, lembre-se que para você usar dessa forma precisará inicializar as váriaveis inerentes ao respectivo cadastro, abrir e restaurar as telas, etc... creio que seu problema maior será quanto a abertura do cadastro, pois é provável que você já abra o cadastro de produtos na rotina de notas fiscais e também abra-os noa rotina de cadastro, dessa forma o arquivo seria aberto 2 vezes o que não é aceito pelo Clipper versão 5.1 e 5.2, com uma certa dose de paciência crio que vocÊ conseguirá facilmente.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
bom vou dar uma estudada na solucao 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 !
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
Olá Clebermano
Eu utilizo algo semelhante ao que vc tá precisando... e tem funcionado até o momento.
Eu tenho um cadastro de CIDADES e outro cadastro de CLIENTES
No cadastro de clientes, verifico se a cidade do cliente já está cadastrada... se não... deixei a opcao de o usuário, através da tecla de função F03, cadastrar a nova cidade....
O que se deve estar atento é que após chamar a rotina de cadastro de cidades... ao voltar ao cadastro de clientes.... deve-se reabrir todos os arquivos relativos ao cadastro de clientes novamente...
veja,
Janio
Eu utilizo algo semelhante ao que vc tá precisando... e tem funcionado até o momento.
Eu tenho um cadastro de CIDADES e outro cadastro de CLIENTES
No cadastro de clientes, verifico se a cidade do cliente já está cadastrada... se não... deixei a opcao de o usuário, através da tecla de função F03, cadastrar a nova cidade....
O que se deve estar atento é que após chamar a rotina de cadastro de cidades... ao voltar ao cadastro de clientes.... deve-se reabrir todos os arquivos relativos ao cadastro de clientes novamente...
veja,
Código: Selecionar todos
@ 10,15 GET vCIDCLI PICT "@E 9,999" WHEN BUSCA_CID() .AND. CAD_CID() VALID VER_CID()
READ
*** ----------------------------------------------- ***
*** ----------------------------------------------- ***
STATIC FUNCTION BUSCA_CID
MENSAGEM(lf,ci,cf,"<F02> PROCURA CIDADE - <F03> CADASTRA CIDADE")
SET KEY -1 to busca_cidade
RETURN .t.
*** ----------------------------------------------- ***
*** ----------------------------------------------- ***
STATIC FUNCTION BUSCA_CIDADE
SELECT CIDADE
DBSETORDER(2)
GOTO TOP
save screen to BUSCID
PRIVATE GETliST:={}
pesquisa = space(25)
CORES(2)
MENSAGEM(lf,ci,cf,"Digite a Cidade:")
@ lf-01,ci+19 GET pesquisa PICT "!!!!!!!!!!!!!!!!!!!!" Color('&vCOR_GET')
READ
IF LASTKEY() = 27
MENSAGEM(lf,ci,cf,"")
RETURN .F.
ENDIF
IF pesquisa <> space(30)
goto top
SET softseek on
seek pesquisa
SET softseek off
ENDIF
PRIVATE VETCAMPO[1], VETCAB[1]
VETCAMPO[1]:="CIDADE+' | '+ESTADO"
VETCAB[1] :="Cidade Uf"
WIN(07,30,14,66,, vCOR_DBE, vCOR_DB1)
CORES(4)
dbedit(08,31,13,65,VETCAMPO,,,VETCAB,"=")
IF LASTKEY() = 27
SETCOLOR( "" )
RESTORE SCREEN FROM BUSCID
BUSCA_CIDADE()
RETURN (.f.)
ENDIF
vCIDCLI := CODIGO
KEYBOARD CHR(13)
DBSETORDER(1)
RESTORE SCREEN FROM BUSCID
MENSAGEM(lf,ci,cf,"")
RETURN .t.
*** ----------------------------------------------- ***
*** ----------------------------------------------- ***
STATIC FUNCTION CAD_CID
SET KEY -2 to CADCID
RETURN (.t.)
*** ----------------------------------------------- ***
*** ----------------------------------------------- ***
STATIC FUNCTION CADCID
PRIVATE GETLIST:={}
SAVE SCREEN TO CADCID
P16CCID() // aki chamo o meu PRG de cadastro de CIDADES
RESTORE SCREEN FROM CADCID
// reabro todos os arquivos do cadastro de CLIENTES
DBSELECTAREA(1)
DBUSEAREA(,,[A16CLI],[CLIENTE], .T.)
DBSETINDEX("A16CLI")
DBSELECTAREA(2)
DBUSEAREA(,,[A16CID],[CIDADE], .T.)
DBSETINDEX("A16CID")
DBSELECTAREA(3)
DBUSEAREA(,,[A16SGM],[SEGMENTO], .T.)
DBSETINDEX("A16SGM")
DBSELECTAREA(4)
DBUSEAREA(,,[A16OAR],[TITULOS], .T.)
DBSETINDEX("A16OAR")
RETURN .T.
*** ----------------------------------------------- ***
*** ----------------------------------------------- ***
STATIC FUNCTION VER_CID
SELECT CIDADE
DBSETORDER(1)
GOTO TOP
DBSEEK(vCIDCLI)
IF !FOUND()
MSG("** CIDADE NAO CADASTRADA **", , vCOR_MSG, vCOR_MS1)
RETURN .f.
ELSE
@ li+06,ci+49 SAY CIDADE PICT "!!!!!!!!!!!!!!!!!!!!" Color('&vCOR_MOS')
@ li+06,ci+71 SAY ESTADO PICT "!!" Color('&vCOR_MOS')
ENDIF
RETURN .T.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
evolver
- Membro Master

- Mensagens: 189
- Registrado em: 28 Ago 2004 01:02
- Localização: Cruz Alta - RS
- Contato:
Cleber eu costumo fazer códigos cujo reaproveitamento seja tão alto que acabe criando uma rotina pra fazer um monte de coisas.
Tente criar seu cadastro de produtos mais ou menos seguindo essa idéia.
Acho que isso dai já te dá uma bela força pra ter uma idéia de como criar módulos de programas onde um é chamado dentro de outro. É mais ou menos o que o jânio quis passar, só dei uma boa simplificada.
Tente criar seu cadastro de produtos mais ou menos seguindo essa idéia.
Código: Selecionar todos
procedure cad_produtos
local GetList:={} // isso fará com que os gets abertos aqui não se misturem
local v_arquant:=alias() // grave a área de travalho anterior
local v_tela_antiga:=savescreen(0,0,24,79) //tela
local v_posyant=row(),v_posxant=col() // posicao do cursor
// coloque aqui sua tela de cadastro,
// forma de gravar o produto, etc...
select(v_arquant)
restscreen(0,0,24,79,v_tela_antiga)
devpos(v_posyant,v_posxant)
return
Sergio "Evolver" Fagundes
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
-
clebermano
- Usuário Nível 3

- Mensagens: 187
- Registrado em: 03 Out 2004 12:39
- Contato:
Nossa, muito obrigado, ficou bastante claro, obrigado a todos
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 !
Caro amigo
eu ja uso isso a muito tempo em meus sistemas, neles eu posso chamar qualquer cadastrado dentro de outro!
Se voce nao tinver consequido, me mande um e-mail , que la posso lhe mandar umas rotinas ok.
t+
Abraços
Lucimauro@sobral.org
eu ja uso isso a muito tempo em meus sistemas, neles eu posso chamar qualquer cadastrado dentro de outro!
Se voce nao tinver consequido, me mande um e-mail , que la posso lhe mandar umas rotinas ok.
t+
Abraços
Lucimauro@sobral.org
