Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prática
IDE
Integrated Development Environment
IDE
Slide 3
IDE
Integrated
Development
Environment
Repositório
de
Objetos
Programa
Projeto
Fonte
IDE
Slide 4
REMOTE
Programa SERVER
Fonte
MATA010
APO
MATA010
Cad.Produtos
RPO Executa
MATA010
MATA010
Executa
MATA410 MATA410
Ped.Vendas
CTBR040
Executa
CTBR040
Balancete Cont.
IDE
Slide 9
• Utilizando o IDE.
IDE
Slide 11
TOTAL GERAL: 14
Customização
Slide 14
• Parâmetros,
• Tabelas,
• Perguntas,
• Fórmulas - Expressões em AdvPL / User Function,
• Lançtos Padrões / Expressões AdvPL/User Function,
• Validações,
• Gatilhos,
• Campos de Arquivos,
• User Function via menu,
• Pontos de Entrada,
• Dicionário de Dados Ativo,
• SigaRPM,
• Crystal,
• Integração Office (Word , Excel)
Dicionários – Sx´s
Slide 15
Arquivo Descrição
SX1 Perguntas e Respostas
SX2 Mapeamento de Tabelas
SX3 Dicionário de Dados
SX4 Agenda do Schedule de Processos
SX5 Tabelas
SX6 Parâmetros
SX7 Gatilhos
SX9 Relacionamento entre Tabelas
SXA Pastas Cadastrais apontadas no SX3
SXB Consulta por meio da tecla F3 (Consulta Padrão)
SXD Controle do Schedule de Processos
SXE Seqüência de Documentos (+1)
SXF Seqüência de Documentos (próximo)
SXG Tamanho padrão para campos
SXK Respostas das Perguntas (SX1) por Usuário
SXO Controle de LOGs por Tabela
SIX Índices dos Arquivos
.XNU Menu de Opções dos Módulos
Customização Pag. 41
Slide 16
• Parâmetros
GETMV - Retorna o conteúdo de um parâmetro cadastrado no SX6.
Sintaxe
GETMV( cNomPar, [ lRetPar ], [ uRet ] )
Slide 17
Rodar em fórmulas:
Msginfo(GETMV(“AD_DATAFIN”))
putmv(“AD_DATAFIN”,ctod(“01/05/2007”))
Msginfo(GETMV(“AD_DATAFIN”))
Customização Pag. 43
Slide 18
• Tabelas
TABELA - Retorna o conteúdo de uma tabela cadastrada no SX5.
Sintaxe
TABELA( cCodTab, cChave, [lHelp] )
Customização Pag. 43
Slide 19
Rodar em fórmulas:
Msginfo(TABELA( “Z1”,”2” ) )
msginfo(TABELA("Z1",cValToChar(DOW(dDATABASE))))
Customização Pag. 44
Slide 20
• Perguntas
PERGUNTE – Carrega e Monta a tela de perguntas cadastradas
no SX1.
Sintaxe
PERGUNTE( cGrupo, lMostra )
Customização Pag. 44
Slide 21
Slide 22
• Gatilho
Criar um gatilho no configurador
Clientes
Ao digitar o CEP deve preencher o estado com SP
Prefixo Descrição
SA1 Cadastro de Clientes
SA2 Cadastro de Fornecedores
SA3 Cadastro de Vendedores
SB1 Cadastro de Produtos
SB2 Saldos dos Produtos por Almoxarifado
SC1 Solicitações de Compras
SC5 Cabeçalho dos Pedidos de Venda
SC6 Itens dos Pedidos de Venda
SC7 Pedidos de Compras
SD1 Itens das Notas Fiscais de Entrada
SD2 Itens das Notas Fiscais de Saída
SD3 Movimentações Internas de Produtos
SE1 Títulos a Receber
SE2 Títulos a Pagar
SF1 Cabeçalho das Notas Fiscais de Entrada
SF2 Cabeçalho das Notas Fiscais de Saída
SI1 Plano de Contas
SI2 Lançamentos Contábeis
Nomenclatura
Slide 25
O sistema permite controlar até 99 Empresas. Cada Empresa pode ter até
99 Filiais:
Empresa 01 – Filiais 01 Empresa 02 – Filiais 01
02 02
... ...
99 99
Filiais
Todo arquivo, exceto SM2, tem um campo XX_Filial que identifica a Filial:
01
01
01
02
02
02
Inicio
Declarar variável M, I
Receber Valor da mercadoria em M
Perguntar se M > 10000
Se sim, Calcular I := M * 0.15
Se não, Calcular I := 0
Imprimir M
Imprimir I
Fim
Correção de Exercicio de casa Pag. 32
Exercício 5 Slide 31
Inicio
Declarar variável nValSal, nQtdHor, nSalRec
Declarar variável nMeta := 180
Receber Valor do Salário em nValSal
Receber Qtde de Horas em nQtdHor
Perguntar se nQtdHor > nMeta
Se sim, Calcular nSalrec := (nValSal+2) * nQtdHor
Se não, Calcular nSalRec := nValSal * nQtdHor
Mostrar nSalRec
Fim
Correção de Exercicio de casa Pag. 32
Exercício 6 Slide 32
#include "RWmake.ch"
user function quadrado(aArray)
n1 := aArray[1]^2 // calcula potência de n1
n2 := aArray[2]^2 // calcula potência de n2
n3 := aArray[3]^2 // calcula potência de n3
n4 := aArray[4]^2 // calcula potência de n4
n1 := str(n1) // converte para string para imprimir no box
n1 += " " + str(n2) // somar em apenas 1 variável
n1 += " " + str(n4)
if n3 >= 1000
msgbox("O Valor do quadrado de n3 :" + chr(13) + chr(10) + str(n3),;
"Questão 6", "Info")
else
msgbox("O Valor do quadro de n1, n2 e n4 são :" + ;
chr(13) + chr(10) + n1,"Questão 6", "Info")
endif
return
Correção de Exercicio de casa Pag. 32
Slide 33
Exercício 7
idade := 14
do case
case idade >= 5 .And. idade <= 7
msginfo("Infantil - Classe A")
case idade >= 8 .And. idade <= 11
msginfo("Infantil - Classe B")
case idade = 12 .or. idade = 13
msginfo("Juvenil - Classe B")
case idade >= 14 .And. idade <= 17
msginfo("Juvenil - Classe B")
case idade < 5
msginfo("Infantil - Criança só entra acompanhado“)
otherwise
msginfo("Adulto")
endcase
Criando tabelas de usuário
Slide 34
Slide 35
Exemplo:
cCodigo := “000015”
nNum := Val(cCodigo)+1
msginfo(nNum) // nNum terá o valor de 16
Manipulação de Textos pag.56
Slide 36
Slide 37
Exemplo:
cCodigo := “Paralelepipedo”
cPedaco1 := Left(cCodigo,5) // cPedaco1 terá o conteúdo “paral”
Manipulação de Textos pag.57
Slide 38
Exemplo:
cCodigo := “Paralelepipedo”
cPedaco1 := Right(cCodigo,5) // cPedaco1 terá o conteúdo “ipedo”
Manipulação de Textos pag.57
Slide 39
Exemplo:
cCodigo := “Parede”
cCodigo := Padc(cCodigo,14)
// cCodigo terá o conteúdo “ Parede ”
Manipulação de Textos pag.57
Slide 40
Exemplo:
cCodigo := “Parede”
cCodigo := Padr(cCodigo,14)
// cCodigo terá o conteúdo “ Parede”
Manipulação de Textos pag.58
Slide 41
Exemplo:
cCodigo := “ Parede ”
cCodigo := Alltrim(cCodigo) // cCodigo terá o conteúdo “Parede”
Manipulação de Textos pag.58
Slide 42
Exemplo:
cCodigo := “ Parede ”
cCodigo := Ltrim(cCodigo) // cCodigo terá o conteúdo “Parede ”
Manipulação de Textos pag.58
Slide 43
Exemplo:
cCodigo := “ Parede ”
cCodigo := Ltrim(cCodigo) // cCodigo terá o conteúdo “ Parede”
Manipulação de Numeros pag.61
Slide 44
Exemplo:
nCodigo := 1
cCodigo := Str(nCodigo) // cCodigo terá o conteúdo “ 1”
Manipulação de Numeros pag.61
Slide 45
Exemplo:
nCodigo := 1
cCodigo := Strzero(nCodigo, 6) // cCodigo terá o conteúdo “000001”
nCodigo := 158
cCodigo := Strzero(nCodigo, 6) // cCodigo terá o conteúdo “000158”
Manipulação de Numeros pag.61
Slide 46
Exemplo:
nCodigo := 1500
cCodigo := “Valor: ” + Transform(nCodigo, “@E 99,999.99”)
// cCodigo terá o conteúdo (Valor: 1.500,00)
Manipulação de Datas pag.59
Slide 47
Exemplo:
dDataAtual := date()
// dDataAtual terá o conteúdo da data de hoje
Manipulação de Datas pag.59
Slide 48
Exemplo:
cData := dtos(date()) // cData terá o conteúdo 20061231
Manipulação de Datas pag.59
Slide 49
Exemplo:
cData := dtoc(date()) // cData terá o conteúdo 31/12/06
Manipulação de Datas pag.59
Slide 50
Exemplo:
cData := “31/12/06”
cData := ctod(cData) // cData terá o conteúdo 31/12/06
Manipulação de Datas pag.59
Slide 51
Exemplo:
cData := “20061231”
cData := stod(cData) // cData terá o conteúdo 31/12/06
Manipulação de Datas pag.60
Slide 52
Exemplo:
nMes := Month(date())
// nMes terá o conteúdo 12 para a data 31/12/06
Manipulação de Datas pag.60
Slide 53
Exemplo:
nDia := Day(date())
// nDay terá o conteúdo 31 para a data 31/12/06
Manipulação de Datas pag.60
Slide 54
Exemplo:
nAno := Year(date())
// nAno terá o conteúdo 2006 para a data 31/12/06
Manipulação de Datas pag.60
Slide 55
Exemplo:
cMes := MesExtenso(date())
// cMes terá o conteúdo Dezembro para a data 31/12/06
Criação de Telas
Slide 56
Exer01.prw
Exer02.prw
Exer03.prw
Exer04.prw
Exer05.prw
Exer10.prw
Exer11Array.prw
Exercício de Casa
Slide 59
Exemplo:
MSGBOX(“Mensagem dentro da Janela ALERT”, “Titulo da Janela”, “ALERT”)
Manipulação de Mensagens
Slide 62
Exemplo:
MSGBOX(“Mensagem dentro da Janela INFO”, “Titulo da Janela”, “INFO”)
Manipulação de Mensagens
Slide 63
Exemplo:
MSGBOX(“Mensagem dentro da Janela STOP”, “Titulo da Janela”, “STOP”)
Manipulação de Mensagens
Slide 64
Exemplo:
MSGBOX(“Mensagem dentro da Janela YESNO”,“Titulo da Janela”,“YESNO”)
Manipulação de Mensagens
Slide 65
Exemplo:
MSGBOX(“Mensagem dentro da Janela RETRYCANCEL”,;
“Titulo da Janela”, “RETRYCANCEL”)
Manipulação de Mensagens
Slide 66
Exemplo:
nOpc := AVISO("Titulo da Janela", "Corpo da Mensagem", ;
{"Sim", "Nao", "Talvez"},1, "Titulo da Mensagem")
If nOpc == 1
msginfo("voce escolheu sim", "Titulo")
ElseIf nOpc == 2
msginfo("voce escolheu nao", "Titulo")
Else
msginfo("voce escolheu talvez", "titulo")
Endif
Manipulação de Mensagens
Slide 67
1 2
3
Manipulação de Mensagens
Slide 68
Msginfo()
Alert()
Msalert()
Msgrun()
Msaguarde()
Comandos de Base de Dados
Slide 69
dbSelectArea()
dbSetOrder()
dbGotop()
dbGoBottom()
dbSeek()
dbskip()
dbFilter()
dbSetFilter()
dbClearFil()
Entre outros...
Comandos de Base de Dados
Slide 70
Exemplo:
If ! SB1->(dbSeek(xFilial("SB1")))
// Não achei o registro
Endif
Comandos de Base de Dados
Slide 74
Exemplo :
dbSelectArea("SB1")
SB1->(dbSeek(xFilial("SB1")))
Do While SB1->(! Eof() .And. B1_FILIAL == xFilial("SB1"))
// Processamento
SB1->(dbSkip())
Enddo
Comandos de Base de Dados
Slide 75
Exemplo:
Dbselectarea("SD1")
aAreasd1 := Getarea() // Armazena o ambiente do arquivo SD1
SD1->(dbsetorder(3))
SD1->(dbseek(xfilial("SD1") + DTOS("01/03/01"), .T.))
Do While ! Eof() .And. D1_FILIAL == xfilial("SD1") .And. D1_EMISSAO <= mv_par02
// Processamento
Dbskip()
Enddo
Restarea(aAreasd1) // Restaura o ambiente do arquivo SD1
Comandos de Base de Dados
Slide 76
Função Posicione
Sintaxe:
Posicione(cAlias, nOrdem, cChave, cCampo)
Exemplo:
Posicione("SB1", 1, xFilial("SB1") + cCodigo, "B1_DESC")
Comandos de Base de Dados
Slide 77
Função Existcpo
Retorna se determinada chave existe ou não no arquivo.
Se existir retorna .T.
Se não existir retorna .F.
Sintaxe :
ExistCpo(cAlias,cChave,nOrdem)
Exemplo :
ExistCpo("SB1", cCodigo, 1)
Comandos de Base de Dados
Slide 78
Função Existchav
Retorna se determinada chave existe ou não no arquivo.
Se existir retorna .F.
Se não existir retorna .T.
Sintaxe :
ExistChav(cAlias,cChave,nOrdem)
Exemplo :
ExistChav("SB1", cCodigo, 1)
Telas padrões
Slide 79
•mBrowse()
•Modelo2()
•Modelo3()
Modelo 3
Slide 80
• aRotina
• aHeader
• aCols
Modelo 3
Slide 81
• Sintaxe
Modelo3(cCadastro, cAlias1, cAlias2, aCpoEnchoice, cLinOK, ;
cTudoOK, nOpcE, nOpcG, cFieldOK, lVirtual, ;
nLinhas, aAltEnchoice, nFreeze)
• cCadastro – Titulo da Janela
• cAlias1 – alias da enchoice
• cAlias2 – Alias da getdados
• aCpoEnchoice – Campos da enchoice
• cLinOk - Validacao da linha na Getdados
• cTudook – Validacao no Ok
• nOpcE - Opcao da Enchoice
• nOpcG – Opcao da Getdados
• cFieldOk – Validacao dos campos da enchoice
• lVirtual – Aceita campos Virtuais
• nLinhas – Qtde de Linhas da Acols
• aAltEnchoice - Campos que podem ser alterados na enchoice
• nFreeze – Campos que devem ser congelados
Banco de Dados
Slide 82
Comandos interpretados
Velocidade
Integridade
Banco de Dados
Slide 83
Exemplo
TCConType("NPIPE")
TCConType("TCPIP")
Banco de Dados
Slide 84
Exemplo:
If TcDelFile("SA1020")
MSGINFO(“Tabela excluída com sucesso”)
Else
MSGINFO(“Não foi possível excluir a tabela”)
Endif
Banco de Dados
Slide 85
Exemplo:
cQuery := 'SELECT X2_CHAVE, R_E_C_N_O_ from SX2990'
dbUseArea(.T., 'TOPCONN', TCGenQry(,,cQuery), 'TRB', .F., .T.)
cArqTrab := criatrab(Nil, .f.)
Copy to &cArqTrab via “TOPCONN”
TRB->(dbCloseArea())
Banco de Dados
Slide 86
Exemplo:
cTabela:= "SA1990"
cComando := "Delete "+ cTabela +" Where R_E_C_N_O_ > 50000 "
TCSqlExec(cComando)
TCRefresh(cTabela)
Banco de Dados
Slide 87
Exemplo
if TCSPExist("SP000001")
cStr := "DROP PROCEDURE "+ "SP000001 "
TCSqlExec(cStr)
endif