Tenho uma modulo principal como segue abaixo. Me desculpe por ele ser longo.
Código: Selecionar todos
set scoreboard off
set console off
set procedure to lojaproc
set softseek on
set bell off
set wrap on
set decimals to 3
set date german
public fim
registro = 0
clear
set color to w+/r
@ 04,14 to 18,61
@ 05, 15 clear to 17, 60
@ 05, 21 say " Configurando arquivos do sistema "
@ 07, 18 say "Gerando Arquivos de Indices"
*******************************************
use clientes
if .NOT. file("ind1.NTX")
index on ccodigo to ind1
pack
endif
if .NOT. file("ind2.NTX")
index on cnome to ind2
pack
endif
if .NOT. file("ind3.NTX")
index on ccpf to ind3
pack
endif
*******************************************
use credito
if .NOT. file("ind11.NTX")
index on accodigo to ind11
pack
endif
*******************************************
use produtos
if .NOT. file("ind21.NTX")
index on pcodigo to ind21
pack
endif
if .NOT. file("ind22.NTX")
index on pdescricao to ind22
pack
endif
*******************************************
use estoque
if .NOT. file("ind31.NTX")
index on ecodigo to ind31
pack
endif
if .NOT. file("ind32.NTX")
index on enotafisc to ind32
pack
endif
if .NOT. file("ind33.NTX")
index on eFORNECEDE to ind33
pack
endif
if .NOT. file("ind34.NTX")
index on dtos(edatalanc) to ind34
pack
endif
*******************************************
use vendas
if .NOT. file("ind41.NTX")
index on vpedido to ind41
pack
endif
if .NOT. file("ind42.NTX")
index on vcodclient to ind42
pack
endif
if .NOT. file("ind43.NTX")
index on vcodprodut to ind43
pack
endif
if .NOT. file("ind44.NTX")
index on vvendedor to ind44
pack
endif
********************************************
use cpagar
if .NOT. file("ind51.NTX")
index on cpforneced to ind51
pack
endif
if .NOT. file("ind52.NTX")
index on dtos(cpvencimen) to ind52
pack
endif
*********************************************
use creceber
if .NOT. file("ind61.NTX")
index on crcodclien to ind61
pack
endif
if .NOT. file("ind62.NTX")
index on dtos(crvencimen) to ind62
pack
endif
if .NOT. file("ind63.NTX")
index on CRPEDIDO to ind63
pack
endif
*********************************************
use forneced
if .NOT. file("ind71.NTX")
index on fcodigo to ind71
pack
endif
if .NOT. file("ind72.NTX")
index on frazao to ind72
pack
endif
*********************************************
use vendedor
if .NOT. file("ind81.NTX")
index on vvcodigo to ind81
pack
endif
if .NOT. file("ind82.NTX")
index on vvnome to ind82
pack
endif
**********************************************
use gprod
if .NOT. file("ind91.NTX")
index on gpcodigo to ind91
pack
endif
if .NOT. file("ind92.NTX")
index on gpdescrica to ind92
pack
endif
***********************************************
use tpgto
if .NOT. file("ind105.NTX")
index on tpcodigo to ind105
pack
endif
if .NOT. file("ind102.NTX")
index on tpdescri to ind102
pack
endif
************************************************
use config
if .NOT. file("ind115.NTX")
index on registro to ind115
pack
endif
close all
************************************************
select 1
use clientes index ind1,ind2,ind3 alias clientes
************************************************
select 2
use credito index ind11 alias credito
*******************************************
select 3
use produtos index ind21, ind22 alias produtos
*******************************************
select 4
use estoque index ind31,ind32,ind33,ind34 alias estoque
*******************************************
select 5
use vendas index ind41, ind42, ind43 alias vendas
********************************************
select 6
use cpagar index ind51, ind52 alias cpagar
*********************************************
select 7
use creceber index ind61, ind62, ind63 alias crecebe
*********************************************
select 8
use forneced index ind71, ind72 alias forneced
*********************************************
select 9
use vendedor index ind81, ind82 alias vendedora
**********************************************
select 10
use gprod index ind91, ind92 alias gprod
***********************************************
select 11
use TPGTO index ind105, ind102 alias TPGTOS
***********************************************
***********************************************
select 12
use config index ind115 alias configura
***********************************************
@ 07,48 say "Indices OK"
v_uso = 0
v_sen = space(06)
v_sen0 = space(06)
v_sen1 = space(01)
v_sen2 = space(01)
v_sen3 = space(01)
v_sen4 = space(01)
v_sen5 = space(01)
v_sen6 = space(01)
v_tempo = 0
do while .t.
if v_tempo = 2
clear all
quit
endif
* @ 09,18 say "Libera‡ao para o Sistema "
* @ 11,18 say "Codigo usuario..:" get v_uso pict "999"
* read
* if v_uso = 0
* clear
* quit
* endif
* select vende
* set order to 1
* go top
* seek v_uso
* if .not. found()
* do limpa23
* @ 12,18 say "Usuario nao cadastrado.."
* v_uso = 0
* wait
* set color to w+/r
* loop
* else
* v_nome = vvnome
* v_sen = senha
* @ 12,18 say v_nome
* endif
* @ 14,18 say "Senha usuario...: [ ]"
* @ 14,37 get v_sen1
* read
* @ 14,37 say "*"
* @ 14,38 get v_sen2
* read
* @ 14,38 say "*"
* @ 14,39 get v_sen3
* read
* @ 14,39 say "*"
* @ 14,40 get v_sen4
* read
* @ 14,40 say "*"
* @ 14,41 get v_sen5
* read
* @ 14,41 say "*"
* @ 14,42 get v_sen6
* read
* @ 14,42 say "*"
* v_sen0 = v_sen1+v_sen2+v_sen3+v_sen4+v_sen5+v_sen6
* set color to w+/r
* read
* if v_sen0 <> v_sen
* @ 15,18 say "Senha invalida...."
* quit
* else
do razao
DO WHILE .t.
SET MESSAGE TO 23 CENTER
SET COLOR TO w/B/W+/RB
@ 23,01 SAY " "
@ 04,01 to 21,22
@ 05,02 say " -> M E N U <- "
@ 06,01 SAY "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 07,02 PROMPT " *-Produtos " MESSAGE "Cadastro de Produtos"
@ 08,02 PROMPT " *-Fornecedores " MESSAGE "Cadastro de Fornecedores"
@ 09,02 PROMPT " *-Cliente " MESSAGE "Cadastro de Clientes"
@ 10,02 PROMPT " *-Estoque " MESSAGE "Movimenta‡ao de Estoque"
@ 11,02 PROMPT " *-Vendedores " MESSAGE "Cadastro de Vendedores"
@ 12,02 PROMPT " *-Tipos Produtos " MESSAGE "Cadastro de Tipos de Produtos"
@ 13,02 PROMPT " *-Tipos Pagamento " MESSAGE "Cadastro de Tipos de Pagamentos"
@ 14,02 PROMPT " *-Contas Pagar " MESSAGE "Cadastro de Contas a Pagar"
@ 15,02 PROMPT " *-Contas Receber " MESSAGE "Cadastro de Contas a Receber"
@ 16,02 PROMPT " *-Abertura Credito " MESSAGE "Cadastro de Abertura de Credito"
@ 17,02 PROMPT " R-Relatorios " MESSAGE "Relatorios do Sistema"
@ 18,02 PROMPT " C-Configuracoes " MESSAGE "Cadastro de Configura‡oes"
@ 19,02 PROMPT " P-P.D.V " MESSAGE "Programa de Vendas"
@ 20,02 PROMPT " *-Fim " MESSAGE "Fim do Aplicativo"
MENU TO VCF
DO CASE
CASE VCF = 1
DO LOJA01 && produtos
CASE VCF = 2
DO LOJA02 && fornecedores
CASE VCF = 3
DO LOJA200 && clientes
CASE VCF = 4 && estoque
DO LOJA04
CASE VCF = 5 && vendedores
DO LOJA05
CASE VCF = 6 && tipos produtos
DO LOJA06
CASE VCF = 7 && tipos pagamentos
DO LOJA07
CASE VCF = 8 && contas a pagar
DO LOJA08
CASE VCF = 9 && contas a receber
DO LOJA09
CASE VCF = 10 && Abertura credito
DO LOJA10
CASE VCF = 11 && realatorio
DO LOJA100
CASE VCF = 12 && configuracoes
DO LOJA03
CASE VCF = 13 && pdv
DO LOJA300
CASE VCF = 14 && sair
clear
quit
ENDCASE VCF
VCF = 0
ENDDO
*ENDIF
ENDDO
**************
* F i m *
**************
Nos outros modulos vou usar as areas selecionadas com o select, por exemplo abaixo:
save screen to tela1
select clientes
set order to 3
do tela
@ 04,01 say " A L T E R A C A O D E C R E D I T O S "
@ 23,02 say "Mensagem:"
@ 05,00 say "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
V_data = date()
v_acodi = space(14)
v_anome = space(40)
v_aempresa = space(40)
v_aendereco= space(40)
v_abairro = space(25)
v_acep = space(09)
v_auf = space(02)
v_acidade = space(25)
v_afuncao = space(25)
v_aadmissao= date()
v_asalario = 0
v_alimite = 0
v_amae = space(40)
v_apai = space(40)
v_aconjuge = space(40)
v_arefpess = space(40)
v_arefcome = space(40)
v_afone = space(25)
v_cf = space(01)
DO WHILE .t.
do limpa23
@ 06,03 SAY "Digite o CPF.:" get v_acodi pict "999.999.999/99"
@ 23,15 SAY "Tecle [ENTER] para retornar !"
read
if v_aCODI = SPACE(14)
DO TELA
exit
endif
seek v_Acodi
if .NOT. found()
do limpa23
@ 23,15 say "C.P.F nao cadastrado "
wait
v_acodi = space(14)
loop
else
v_anome = cnome
set color to w+/b
@ 06,35 say v_anome
set color to w/b
Select credito
set order to 1
seek v_acodi
if .not. found()
do limpa23
@ 23,15 say "Este cliente nao tem credito aberto.."
else
V_data = datA
v_acodi = accodigo
v_aempresa = acempresa
v_aendereco= acendereco
v_abairro = accbairro
v_acep = acccep
v_auf = accuf
v_acidade = accidade
v_afuncao = accfuncao
v_aadmissao= accadmissao
v_asalario = accsalario
v_alimite = acclimite
v_amae = accmae
v_apai = accpai
v_aconjuge = accconjuge
v_arefpess = accrefpess
v_arefcome = accrefcome
v_afone = accfone
do tacredito
read
V_alimite = v_asalario * 40 /100
@ 19,25 say v_alimite pict "@E 999,999.99"
@ 23,15 SAY "Confirma a Alteracao " GET v_cf pict "!" VALID(v_cf$"SN")
READ
IF v_cf = "S"
Select credito
set order to 1
REPLACE data WITH v_data;
accodigo WITH v_acodi;
acempresa WITH v_aempresa;
acendereco WITH v_aendereco;
accidade WITH v_acidade;
accbairro WITH v_abairro;
acccep WITH v_acep;
accuf WITH v_auf;
accfuncao WITH v_afuncao;
accadmissa WITH v_aadmissao;
accsalario WITH v_asalario;
acclimite WITH v_alimite;
accpai WITH v_apai;
accmae WITH v_amae;
accnome WITH v_anome;
accconjuge WITH v_aconjuge;
accrefcome with v_arefpess;
accrefpess with v_arefcome;
accfone with V_afone
v_acodi = space(14)
v_anome = space(40)
v_aempresa = space(40)
v_aendereco= space(40)
v_abairro = space(25)
v_acep = space(09)
v_auf = space(02)
v_acidade = space(25)
v_afuncao = space(25)
v_aadmissao= date()
v_asalario = 0
v_alimite = 0
v_apai = space(25)
v_aconjuge = space(25)
v_arefpess = space(25)
v_arefcome = space(25)
v_afone = space(25)
v_cf = space(01)
@ 06,01 CLEAR TO 21,78
select clientes
set order to 3
ELSE
v_acodi = space(14)
v_anome = space(40)
v_aempresa = space(40)
v_aendereco= space(40)
v_abairro = space(25)
v_acep = space(09)
v_auf = space(02)
v_acidade = space(25)
v_afuncao = space(25)
v_aadmissao= date()
v_asalario = 0
v_alimite = 0
v_apai = space(25)
v_aconjuge = space(25)
v_arefpess = space(25)
v_arefcome = space(25)
v_afone = space(25)
@ 06,01 CLEAR TO 21,78
select clientes
set order to 3
loop
ENDIF
endif
endif
ENDDO
restore screen from tela1
return
*******
* fim *
*******aproveitando alguem sugere alguma mudança na forma de eu programar, nunca fiz curso. comprei um livro usado do Geraldo Vidal e comecei a seguir os exemplos deles.
Abraços a todos. :{
-----------------------------------------------------
Nota da Moderação (Toledo):
O presente tópico foi editado para colocar a tag CODE


