Cadastrando o produto chamando de outro modulo.

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:

Cadastrando o produto chamando de outro modulo.

Mensagem por clebermano »

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.
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
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

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

Mensagem por clebermano »

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 !
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Olá Clebermano :D

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.
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

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.

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

Mensagem por clebermano »

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 !
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Mensagem por lucimauro »

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
Responder