Programação EMS 2.0
direito de efetuar alterações sem aviso prévio. A DATASUL S.A não assume nenhuma responsabilidade pelas conseqüências de quaisquer erros ou
inexatidões que possam aparecer neste documento. DATASUL S.A.
Índice
CAPÍTULO 1 Revisão do Dicionário de Dados ... 1
Construção do Dicionário de Dados ... 2
Gatilhos do Dicionário de Dados ... 3
Campos Livres ... 4
Validações... 4
Considerações sobre o Dicionário de Dados do Datasul-HR 1.00 ... 5
CAPÍTULO 2 Estrutura de Diretórios ... 7
Datasul-EMS 2.0... 7
Datasul-HR 1.0 ... 12
CAPÍTULO 3 Nomenclatura ... 15
Sigla de bancos de dados ... 15
Banco de Dados do Datasul-EMS 2.00 ... 15
Banco de Dados do Datasul-HR 1.00 ... 15
Siglas de módulos do produto ... 16
Módulos do Datasul-EMS 2.00 ... 16
Módulos do Datasul-HR 1.00 ... 17
Tipos de Atributos ... 17
Dump-name de tabelas ... 18
Gatilhos do dicionário de dados... 18
Programas ... 19
Includes ... 20
Include com view-as de campos para o dicionário de dados ... 21
Includes de programas ... 21
Includes padrões ... 21
Widgets ... 21
Variáveis ... 22
Datasul-HR 1.00 ... 22
Outros componentes da linguagem Progress ... 22
Siglas de países ... 23
Nomenclatura para Caixas de diálogos em programas de Zoom e SmartBrowser ... 23
Adapters ... 24
CAPÍTULO 4 Layout de Telas ... 25
Tipos de Telas (janelas) ... 25
Janela Mestre ... 25 Janela Detalhe ... 25 Caixas de Diálogo ... 25 Objetos ... 26 Combo-boxes ... 26 Retângulos ... 26 Botões ... 26 Fill-in´s ... 26 Frames(Telas) ... 26 Radio-Sets ... 27 Editores ... 27
Considerações sobre os SmartObjects ... 28
SmartBrowser ... 28
SmartViewer ... 28
SmartQuery ... 28
Considerações sobre as Imagens ... 28
WebEnabler ... 28
CAPÍTULO 5 Estilos ... 29
Cadastro Simples ... 29
Cadastro Complexo ... 31
Quando utilizar o Cadastro Complexo ... 31
Cadastro Simples - Atualiza... 32
Cadastro Complexo - Atualiza ... 33
Pai x Filhos - Atualiza Filho ... 34
Quando utilizar Pai x Filhos - Atualiza Filho ... 34
Manutenção de Filhos ... 35
Pai x Filhos - Atualiza Ambos ... 36
Manutenção de Pais ... 37
Consulta Cadastral Simples ... 38
Consulta Relacionamento ... 40
Relatórios, Cálculos, Fechamentos ... 41
Parâmetros Únicos ... 45
Parâmetros Múltiplos ... 45
Formação ... 46
Formação sem Navegação ... 47
Importação ... 48 Exportação ... 50 Zoom de Tabelas ... 53 Vá Para ... 54 Digitação Rápida ... 55 Painéis ... 55 Funções ... 56 Relatórios Relacionados ... 56 Consultas Relacionadas ... 56
CAPÍTULO 6 Includes e Utilitários Padrão ... 57
UT-FIELD.I ... 57
UT-RTLBL.I ... 58
UT-RUN.I ... 58
UT-MSGS.P... 62
IND01-10.I, IND11-50.I E IND51500.I ... 64
UT-TABLE.I ... 65 UT-LITER.I ... 66 UT-LIMIT.P ... 67 UT-GLOB.I ... 67 I-FREEAC.I ... 67 UT-DIR.P ... 68 BTB917ZX.P ... 69 BTB917ZY.P ... 70 BTB917ZZ.P ... 71 UT-VRBIN.P ... 72 UT-FINFO.P ... 73 UT-CMDLN.P ... 73 UT-OSVER.P ... 74 I-COUNTDS.I ... 74 UT-WIN.I ... 75 UT-TRACE.P ... 78
CAPÍTULO 7
Tradução ... 80
TRADUÇÃO MONO-IDIOMAS ... 80
Tradução de variáveis com view-as nas telas ... 80
Espaço Extra para tradução em relatórios ... 85
TRADUÇÃO MULTI-IDIOMAS ... 86
Nomenclatura Padrão e Características do modelo... 86
Pontos de tradução ... 88 Contextos de tradução ... 88 Itens de Tradução ... 89 Sequência de busca ... 91 UT-TRCAMPOS.P ... 92 UT-TRFRRP.P ... 92 UT-LSTIT.P ... 93 UT-LITER.P ... 94 UT-MSGS.P ... 95 UT-FIELD.P ... 96 UT-TABLE.P ... 97 UT-LTMNU.P ... 97
OBJETOS PROGRESS NÃO-INDEXADOS ... 99
Tradução de variáveis com view-as nas telas ... 99
Espaço Extra para tradução em relatórios ... 103
PRÁTICAS PARA IMPLEMENTAÇÃO MULTI-IDIOMAS ... 104
Caso Prático Diferenças LIST-ITEMS para LIST-ITEM-PAIRS ... 104
Caso conversão de List-items para LIST-ITEM-PAIRS ... 107
Tradução automática em frame de relatório ... 108
Traduzir valor armazenado em uma variável ... 109
Tratando lista enorme de tradução em includes ... 110
CAPÍTULO 8 Construção de Programas utilizando os Estilos e suas Técnicas ... 115
Como construir um Cadastro Simples ... 115
Como construir um Cadastro Complexo ... 117
Como construir um Cadastro Pai X Filho - Atualiza Filho ... 121
Como construir um Cadastro Inclui/Modifica Filho ... 125
Como construir um Cadastro Pai X Filho - Atualiza Ambos ... 131
Como construir um Cadastro Inclui/Modifica Filho ... 135
Como construir um Cadastro Inclui/Modifica Pai ... 139
Como construir um CustomBrowser Inclui/Modifica ... 142
Como construir uma Consulta Simples ... 148
Como construir uma Consulta Complexa ... 150
Como construir uma Consulta Relacionamentos ... 154
Como construir um programa de Relatórios ... 157
Preparação do Relatório - Interface ... 158
Página de Impressão ... 160
Relatórios no formato RTF ... 161
Dicas para criação do Programa RP.P de Relatório ... 162
Preparando o Relatório para Execução no Módulo JOB EXECUTION ... 168
Como construir um programa de Parâmetros Únicos ... 175
Como construir um programa de Formação ... 176
Como construir um programa de Formação sem Navegação ... 180
Seqüência ... 181
Como construir um programa de Importação ... 183
Dicas Gerais ... 183
Preparação do programa ... 184
Dicas para criação do Programa RP.P de Importação ... 186
Como construir um programa de Exportação ... 189
Dicas Gerais ... 189
Preparação do programa ... 189
Dicas para criação do Programa RP.P de Exportação ... 192
Como construir um programa de Pesquisa ... 195
Como construir um programa "Vá Para" ... 197
Como construir um programa de Digitação Rápida ... 198
Como construir um Browse de Digitação ... 198
Como construir uma Query ... 199
Como construir viewers ... 200
Como definir viewer Padrão ... 200
Como definir viewer sem campos de tabela: ... 203
Como definir viewers só com campos chave: ... 208
CAPÍTULO 9 Validações ... 214
Validações de Tela ... 214
Validações na Navegação de Registro ... 214
Validações Antes da Alteração ... 214
Validações em Entrada de Dados ... 215
Validações em Cadastro Simples ... 215
Validações em Cadastro Complexo ... 215
Validações para Window Relatório ... 216
CAPÍTULO 10 Mensagens ... 217
Regras para a criação de novas mensagens ... 219
Padrões para tradução de mensagens para Inglês e Espanhol ... 222
CAPÍTULO 11 Programas Reutilizáveis ... 223
Procedures Internas ... 223
CAPÍTULO 12 Ferramentas ... 225
Application Compiler ... 225
Selecionar arquivos a serem compilados ... 226
Eliminar e Modificar a lista de arquivos a serem compilados ... 227
Opções de Compilação ... 227
Iniciar Compilação ... 228
Roundtable ... 229
CAPÍTULO 13 API´s ... 233
O que são API´s e como construí-las ... 233
Código da API ... 237
Como documentar API´s ... 238
Como implementar evoluções de API´s ... 239
UTAPI001.P ... 249 UTAPI002.P ... 249 UTAPI003.P ... 249 UTAPI004.P ... 250 UTAPI005.P ... 251 UTAPI006.P ... 253 UTAPI007.P ... 253 UTAPI008.P ... 253 UTAPI009.P ... 254 UTAPI010.P ... 254 UTAPI011.P ... 255 UTAPI012.P ... 255 UTAPI013.P ... 256 UTAPI018.P ... 256 UTAPI019.P ... 256 UTAPI027.P ... 257 UTAPI028.P ... 257 UTAPI029.P ... 257 APAPI009.P ... 258 Parâmetros de Entrada ... 258
Parâmetros de Saída ... 259
Execução ... 259
CAPÍTULO 14 Portabilidade de RCODES ... 261
Regras para Portabilidade de RCODE ... 261
Caso em Especial ... 262
CAPÍTULO 15 Técnicas ... 265
Como alterar o caracter de senha ... 265
Como alterar o diretório corrente... 265
Como alterar ou criar uma variável de ambiente ... 266
Como dar foco a qualquer objeto ... 267
Como deixar uma janela sempre visível ... 268
Como utilizar OCX ... 268
Como executar um aplicativo do Windows ... 289
Como implementar Correção Ortográfica em Editores ... 290
Como obter as coordenadas do mouse ... 292
Como obter o diretório corrente... 293
Como obter o diretório de sistema do Windows ... 294
Como obter o diretório do Windows ... 294
Como obter o nome do computador ... 295
Como obter o valor de uma variável de ambiente ... 296
Como transformar uma janela em barra de ferramentas ... 297
Como desabilitar Radio-Buttons ... 298
Como executar programas que são janelas ... 298
Como habilitar ou desabilitar botões em painéis ... 300
Como habilitar ou desabilitar botões específicos em Browse Inclui/Modifica ... 301
Como implementar campos indicadores com view-as combo-box nas telas ... 302
Como implementar campos indicadores com view-as radio-set nas telas . 304 Como implementar campos indicadores num SmartBrowser ... 306
Como implementar labels em retângulos utilizando o dicionário de dados ... 307
Como implementar mensagens para o usuário ... 308
Mensagem de Erro/Advertência/Informação sem Parâmetros ... 308
Mensagem de Erro/Advertência/Informação com Parâmetros ... 309
Mensagens com Questionamento ao Usuário ... 309
Como implementar Tooltip em um determinado botão ... 310
Como implementar acompanhamento (UT-ACOMP) ... 313
Como implementar Zoom e campos de referência para campos chave estrangeira ... 315
Como implementar ThinZoom e campos de referência para campos chave estrangeira em SmartObjects ... 319
Como imprimir campos editores nos relatórios ... 323
Como totalizar colunas de um browse ... 324
Como adaptar a procedure pi-retorna-valor no Custom Browser Zoom Wizard ... 325
Situações necessárias ... 325
Como implementar Parâmetros de Impressão em Relatórios ... 327
Impressão Página de Parâmetros: ... 327
Formato de Impressão (80 colunas ou 132 colunas): ... 329
Como implementar Botão de Filtro em Zoom ... 331
Como implementar reposicionamento de registro com base nas variáveis globais ... 331
Definição da Variável Global ... 331
Reposicionamento Automático do Browser de Zoom ... 333
Como validar campos em viewers diferentes ... 334
Como construir gatilhos de dicionários de dados ... 336
Como implementar localizações ... 338
Padronização dos parâmetros do progress.ini ... 340
Como setar os modos de inclusão (Simple/Multiple) ... 341
Como utilizar "functions" no UIB ... 342
Como verificar o registro de um OCX ... 343
Como construir um browse com ordenação por coluna ... 345
Mini-Flexibilização ... 347
Como registrar campo do tipo Fill-in para o WebEnabler ... 354
Como contar a quantidade de registros numa tabela... 355
Como chamar um programa que é janela a partir de uma transação ... 356
Como descobrir se o EAI está habilitado ... 357
Como enviar gráficos ou documentos office para o WebEnabler... 357
Como migrar relatórios antigos para RTF ... 358
Como converter consultas For Each para Send-SQL-Statement ... 365
Utilitário para Geração de Comandos SQL ... 370
Conversão de Query em Frame para SmartQuery ... 381
CAPÍTULO 16 Dicas de Desenvolvimento ... 383
CAPÍTULO 1
Revisão do Dicionário de Dados
Antes do início da conversão de cada módulo deve ser realizada uma revisão n Dicionário de Dados do MAGNUS versão I.00, que abrange os seguintes itens:
trocar os campos do tipo narrativa (exemplo: "x(76)" x10) nas tabelas por campos view-as editor e formato "X(2000)";
criar os campos necessários para limpar os campos do tipo char-1, dec-1, int-1, etc...;
criar tabelas necessárias que hoje estão "camufladas" em arquivos temporários e/ou em tabelas não utilizadas;
para todos os campos que são indicadores, sejam de tipo de dado caracter ou lógico, trocar por campo indicador correspondente com tipo de dado inteiro. Exemplo: DE PARA Emitente.identific Emitente.identific "C"liente 1 "F"ornecedor 2 "A"mbos 3
implementar o view-as nos campos possíveis. Exemplo: editor, radio-set, e toggle-box;
substituir os campos do tipo "texto livre" por campos do tipo caracter formato "x(15000)" view-as editor;
revisar os labels e column-labels dos campos para internacionalização, reservando espaço extra para tradução;
as palavras que compõem os labels e column-labels, quando não abreviadas, devem ser acentuadas;
os labels não podem conter preposições (de, da, em ...) e pontuação (.;-);
a primeira letra de cada palavra, que compõe o label ou col-label, deve ser maiúscula, as demais minúsculas;
evitar column-labels com duas ou mais linhas;
sugestão: Incorporar no Field-Validation as validações que estão no formato de include. Exemplo: {inc/conta.fv};
Dump-Name das tabelas tem a nomenclatura: xx999, onde 'xx' é a sigla do banco conforme tabela abaixo, e 999 é o número seqüencial da tabela.
SIGLA BANCO AD Administrativo BH Bancos Históricos CL Coletor de Dados DI Distribuição ED EDI IN Industrial IV Investimentos MP MultiPlanta PE Ponto Eletrônico RH Recursos Humanos UN Universal
Construção do Dicionário de Dados
alterar o campo "CEP" único para formato x(12) com parâmetro global formato-cep;
campo "Unidade da Federação" deve ter formato x(04);
campo "Condado(Bairro)" deve ter formato x(30);
campo "Número do Documento (do AP/CR)" para MAGNUS deve ter como nomenclatura x(16);
campo "Série do Documento" deve ter formato x(05);
os campos de "Conta + sub-conta" devem ter formato x(8) + x(8);
os campos de "Códigos de Contribuição Fiscal (CGC, Inscrição Estadual, etc ...)" devem ter como nomenclatura x(18);
campo "Código do Item" deve ter formato x(16);
separar tudo que for especificados no Brasil em folder separados. Exemplo: Cadastro de Cliente-Código Febraban, Cacex ...;
na confecção de Relatórios evitar posicionamento de campos;
os indicadores comuns a várias tabelas, na composição do seu nome devem considerar o nome da tabela principal;
não existe o campo do código da empresa nas telas, deve ser sempre assumido a empresa do corrente usuário, que é definida no menu, e está disponível na variável global i-ep-código-usuário;
em todas as tabelas, que representem pessoas físicas ou jurídicas, implementar o campo para endereço eletrônico da entidade: e-mail formato 'x(40)' label "Internet E-Mail".
Gatilhos do Dicionário de Dados
No Dicionário de Dados, os seguintes itens deverão ser obedecidos: 1. Todas as tabelas deverão possuir os gatilhos de dicionário de dados
CREATE, DELETE e WRITE mesmo que não possuam código algum para validação.
2. As triggers de WRITE e DELETE deverão conter a chamada as includes para EPC´s em Gatilhos de Dicionário de Dados.
3. Ao especificar caminhos, deverá ser referenciado apenas o caminho relativo, ou seja, a partir do diretório de instalação do produto. O caracter "\" (contra-barra) NÃO pode ser utilizado, devendo ser substituído por "/" (barra).
5. Todas devem ter o Check CRC = no.
Campos Livres
Em todas as tabelas dos bancos de dados do produto Datasul-EMS 2.0, existem no mínimo 10 campos livres, sendo 2 de cada tipo de dado, conforme tabela abaixo:
Campo Livre Tipo de Dado char-1 Caracter char-2 data-1 Data data-2 dec-1 Decimal dec-2 int-1 Inteiro int-2 log-1 Lógico log-2
Os antigos campos livres são para uso do cliente, como por exemplo, u-char-1, u-livre-1, não são mais implementados nas tabelas.
Validações
as validações de campo simples permanecem no Field Validation (VALEXP), no dicionário de dados, entende-se por validações simples aquelas que dependam apenas do dado informado do próprio campo, não fazendo referência a outros campos da tabela. Exemplo: item.descrição-1 <> "";
todas as validações, inclusive as constantes no Field Validation dos campos atualizados na tela, devem ocorrer no momento de confirmação de gravação (botões OK, Gravar, GO of frame);
normalmente, é feita a validação em um destes locais, pi-validate, quando existirem mais de uma viewer ou na local-assign-record, quando for apenas uma;
na SmartViewer retirar as validações automáticas do UIB, para chaves estrangeiras, chamadas "XFTR-Foreing Keys";
todas as validações de eliminação constantes no Delete Validation de uma tabela no dicionário de dados devem ser transferidas para o Delete Gatilho desta tabela, assim o Delete Validation das tabelas fica vazio;
também podem ser transferidas para o Delete Gatilho as validações de eliminação que estão nos programas de eliminação pois antes, não eram suportadas pelo Delete Validation.
Considerações sobre o Dicionário de Dados do Datasul-HR 1.00
a versão atual do Datasul-HR somente possui integração com o produto Datasul-EMS 2.00, e o controle do dicionário de dados é feito no DWB-DDD;
Datasul-HR, pode acessar tabelas do banco MGUNI e neste caso, não se deve cadastrar as tabelas do MGUNI no DWB-DDD, não sendo utilizado o conceito do DWB de base externa, uma vez que não é utilizado o
módulo de construção de programas (DML) no DWB-DDD. O controle de integridade referencial, nestes casos, é feito manualmente nos gatilhos e validações;
todas as validações do Datasul-HR são realizadas nos programas ou em trigger´s de write das tabelas, não existem validações no FIELD-VALIDATION.
CAPÍTULO 2
Estrutura de Diretórios
Este capítulo relaciona e descreve os diretórios referentes ao Datasul-EMS 2.0 e o Datasul-HR 1.0.
Datasul-EMS 2.0
Diretórios Conteúdo
\ADBRW Objetos Browsers do banco Administrativo \ADGO Objetos "Vá para" do banco Administrativo \ADINC Includes de campos indicadores do banco
Administrativo
\ADQRY Objetos Queries do banco Administrativo \ADVWR Objetos Viewers do banco Administrativo
\ADZOOM\ Zooms do banco Administrativo
\AEP Programas do módulo Aplicações e Empréstimos
\APP Programas do módulo Contas a Pagar
\BCP Programas do módulo Coleta de Dados
\BHP Programas do módulo Bancos Históricos
\BSP Programas do módulo Benefícios Sociais
\BTB Programas do módulo Básico
\CBP Programas do módulo Caixa e Bancos
\CCP Programas do módulo Compras
\CDP Programas do módulo Cadastro
\CEP Programas do módulo Controle de Estoque
\CFP Programas do módulo Configurador Produto
\CLBRW Objetos Browsers do banco Coletor de Dados Definição
\CLGO Objetos "Vá para" do banco Coletor de Dados \CLINC Includes de campos indicadores do banco Coletor de
Dados
\CLQRY Objetos Queries do banco Coletor de Dados \CLVWR Objetos Viewers do banco Coletor de Dados
\CLZOOM Zooms do banco Coletor de Dados
\CPP Programas do módulo Controle da Produção
\CQP Programas do módulo Controle de Qualidade
\CRP Programas do módulo Contas a Receber
\CSP Programas do módulo Custos
\DATABASE \DMAD Programas de Dump do banco MGADM \DMCL Programas de Dump do banco MGLCD \DMDI Programas de Dump do banco MGDIS \DMIN Programas de Dump do banco MGIND \DMIV Programas de Dump do banco MGINV \DMMP Programas de Dump do banco MGMP \DMPE Programas de Dump do banco MGPE \DMRH Programas de Dump do banco MGRH \DMUN Programas de Dump do banco MGUNI \LDAD Programas de Dump do banco MGADM \LDCL Programas de Dump do banco MGCLD \LDDI Programas de Dump do banco MGDIS \LDIN Programas de Dump do banco MGIND \LDIV Programas de Dump do banco MGINV \LDMP Programas de Dump do banco MGMP \LDPE Programas de Dump do banco MGPE \LDRH Programas de Dump do banco MGRH \LDUN Programas de Dump do banco MGUNI \TGAD \TAP Gatilhos de assign do banco MGADM
\TCP Gatilhos de create do banco MGADM \TDP Gatilhos de delete do banco MGADM \TFP Gatilhos de find do banco MGADM \TWP Gatilhos de write do banco MGADM \TGCL \TAP Gatilhos de assign do banco MGCLD \TCP Gatilhos de create do banco MGCLD \TDP Gatilhos de delete do banco MGCLD
\TFP Gatilhos de find do banco MGCLD \TWP Gatilhos de write do banco MGCLD \TGDI \TAP Gatilhos de assign do banco MGDIS \TCP Gatilhos de create do banco MGDIS \TDP Gatilhos de delete do banco MGDIS \TFP Gatilhos de find do banco MGDIS \TWP Gatilhos de write do banco MGDIS \TGIN \TAP Gatilhos de assign do banco MGIND
\TCP Gatilhos de create do banco MGIND \TDP Gatilhos de delete do banco MGIND \TFP Gatilhos de find do banco MGIND \TWP Gatilhos de write do banco MGIND \TGIV \TAP Gatilhos de assign do banco MGINV
\TCP Gatilhos de create do banco MGINV \TDP Gatilhos de delete do banco MGINV \TFP Gatilhos de find do banco MGINV \TWP Gatilhos de write do banco MGINV \TGPE \TAP Gatilhos de assign do banco MGPE \TCP Gatilhos de create do banco MGPE \TDP Gatilhos de delete do banco MGPE \TFP Gatilhos de find do banco MGPE \TWP Gatilhos de write do banco MGPE \TGRH \TAP Gatilhos de assign do banco MGRH
\TCP Gatilhos de create do banco MGRH \TDP Gatilhos de delete do banco MGRH \TFP Gatilhos de find do banco MGRH \TWP Gatilhos de write do banco MGRH \TGUN \TAP Gatilhos de assign do banco MGUNI
\TCP Gatilhos de create do banco MGUNI \TDP Gatilhos de delete do banco MGUNI \TFP Gatilhos de find do banco MGUNI \TWP Gatilhos de write do banco MGUNI \DIBRW Objetos Browsers do banco Distribuição \DIGO Objetos "Vá para" do banco Distribuição
\DIINC Includes de campos indicadores do banco Distribuição \DIQRY Objetos Queries do banco Distribuição
\DIVWR Objetos Viewers do banco Distribuição
\DIZOOM Zooms do banco Distribuição
\DOC Módulo Documentação
\DOCAPI Documentação de API´s
\DOCHLP Documentação dos módulos em formato.hlp \DOCRTF Documentação dos Manuais impressos (*.rtf) \DPP Programas do módulo de Desenvolvimento Produto
\ENP Programas do módulo de Engenharia
\FCP Programas do módulo de FASB/CMI
\FPP Programas do módulo Folha de Pagamentos
\FRP Programas do módulo Férias Rescisões
\FTP Programas do módulo Faturamento
\GEP Programas do módulo Gerencial
\GRP Programas do módulo Gerador Relatórios
\IMAGE Imagens
\IMGDIS Diretório padrão de imagens do Aplicativo Distribuição
\IMGFIN Diretório padrão de imagens do Aplicativo Financeiro \IMGHUR Diretório padrão de imagens do Aplicativo Recursos
Humanos
\IMGMAN Diretório padrão de imagens do Aplicativo Manufatura
\IMGMAT Diretório padrão de imagens do Aplicativo Materiais \IMGTEC Diretório padrão de imagens do Aplicativo
Tecnologia
\INBRW Objetos Browsers do banco Industrial
\INCLUDE Includes Padrões
\INGO Objetos "Vá para" do banco Industrial
\ININC Includes de campos indicadores do banco Industrial
\INP Programas do módulo Investimentos
\INQRY Objetos Queries do banco Industrial
\INTERFAC Arquivos de interfaces Produto com outros softwares \INVWR Objetos Viewers do banco Industrial
\INZOOM Zooms do banco Industrial
\IVBRW Objetos Browsers do banco Investimentos \IVGO Objetos "Vá para" do banco Investimentos \IVINC Includes de campos indicadores do banco
Investimentos
\IVQRY Objetos Queries do banco Investimentos \IVVWR Objetos Viewers do banco Investimentos
\IVZOOM Zooms do banco Investimentos
\LAYOUT Layout´s de Importação
\MASTERS Masters do SmartObjects
\MEN Módulo Menu
\MIP Programas do módulo Manutenção Industrial
\MPBRW Objetos Browsers do banco MultiPlanta \MPGO Objetos "Vá para" do banco MultiPlanta
\MPINC Includes de campos indicadores do banco MultiPlanta
\MPP Programas do módulo MultiPlanta
\MPQRY Objetos Queries do banco MultiPlanta \MPVWR Objetos Viewers do banco MultiPlanta
\MPZOOM Zooms do banco MultiPlanta
\OFP Programas do módulo Obrigações Fiscais
\PANEL Painéis dos SmartObjects
\PCP Programas do módulo Planejamento Capacidade
\PDP Programas do módulo de Pedidos
\PEBRW Objetos Browsers do banco Ponto Eletrônico \PEGO Objeto "Vá para" do banco Ponto Eletrônico \PEINC Includes de campos indicadores do banco Ponto
Eletrônico
\PEP Programas do módulo Ponto Eletrônico
\PEQRY Objetos Queries do banco Ponto Eletrônico \PEVWR Objetos Viewers do banco Ponto Eletrônico
\PEZOOM Zooms do banco Ponto Eletrônico
\PIP Programas do módulo Planejamento Manutenção
Industrial
\PLP Programas do módulo Planejamento
\PMP Programas do módulo Plano Mestre
\PTP Programas do módulo Patrimônio
\PVP Programas do módulo Previsão de Vendas
\QOP Programas do módulo Cotação de Vendas
\REP Programas do módulo Recebimentos
\RHGO Objetos "Vá para" do banco Recursos Humanos \RHINC Includes de campos indicadores do banco Recursos
Humanos
\RHQRY Objetos Queries do banco Recursos Humanos \RHVWR Objetos Viewers do banco Recursos Humanos
\RHZOOM Zooms do banco Recursos Humanos
\SCRIPTS Scripts de Carga da Aplicação
\SEC Módulo Segurança
\SPOOL Diretório default de destino dos Relatórios
\SPP Programas especiais dos módulos (não será expedido)
\SRC Includes Padrões PROGRESS
\SUPPORT Programas UIB customizados
\UNBRW Objetos Browsers do banco Universal
\UNGO Objetos "Vá para" do banco Universal
\UNINC Includes de campos indicadores do banco Universal
\UNQRY Objetos Queries do banco Universal
\UNVWR Objetos Viewers do banco Universal
\UNZOOM Zooms do banco Universal
\UTB Módulo Universal
\UTP Programas Utilitários
\VARINC Includes de variáveis indicadores
\LOCAL Programas que possuem localizações
\XXX Prefixo do País
\DATABASE Gatilhos do Banco de Dados do País
Datasul-HR 1.0
Diretórios Conteúdo
\DATABASE \INPM Includes de campos indicadores do banco MGPMG \INPY Includes de campos indicadores do banco MGPYC \INTM Includes de campos indicadores do banco MGTMA \INUN Includes de campos indicadores do banco MGUNI \TGPM \TAP Gatilhos de assign do banco MGPMG
\TCP Gatilhos de create do banco MGPMG \TDP Gatilhos de delete do banco MGPMG \TFP Gatilhos de find do banco MGPMG
\TWP Gatilhos de write do banco MGPMG \TGPY \TAP Gatilhos de assign do banco MGPYC
\TCP Gatilhos de create do banco MGPYC \TDP Gatilhos de delete do banco MGPYC \TFP Gatilhos de find do banco MGPYC \TWP Gatilhos de write do banco MGPYC \TGTM \TAP Gatilhos de assign do banco MGTMA
\TCP Gatilhos de create do banco MGTMA \TDP Gatilhos de delete do banco MGTMA \TFP Gatilhos de find do banco MGTMA \TWP Gatilhos de write do banco MGTMA \TGUN \TAP Gatilhos de assign do banco MGUNI \TCP Gatilhos de create do banco MGUNI \TDP Gatilhos de delete do banco MGUNI \TFP Gatilhos de find do banco MGUNI \TWP Gatilhos de write do banco MGUNI
\DOCAPI Documentação de API´s
\DOCHLP Documentação dos Módulo em formato .hlp \DOCRTF Documentação de Manuais Impressos (*.rtf)
\IMAGE Imagens
\IMGHUR Diretório padrão de imagens do Aplicativo Recursos Humanos
\INCLUDE Includes Padrões
\INTERFAC Arquivos de interfaces do Produto com outros softwares
\LAYOUT Layout´s de importação
\MASTERS Masters do SmartObjects
\MEN Módulo Menu
\OBJECT \SOPM \BRW Browsers do Banco MGPMG
DIALOG Filtros, narrativas, etc ... do Banco MGPMG \QRY Objetos Queries do banco MGPMG \GO Objetos "Vá para" do banco MGPMG \VWR Objetos Viewers do banco MGPMG \ZOOM Zoom do banco MGPMG
\SOPY \BRW Browsers do Banco MGPYC
DIALOG Filtros, narrativas, etc ... do Banco MGPYC \QRY Objetos Queries do banco MGPYC
\GO Objetos "Vá para" do banco MGPYC \VWR Objetos Viewers do banco MGPYC \ZOOM Zoom do banco MGPYC
\SOTM \BRW Browsers do Banco MGTMA
DIALOG Filtros, narrativas, etc ... do Banco MGTMA \QRY Objetos Queries do banco MGTMA \GO Objetos "Vá para" do banco MGTMA \VWR Objetos Viewers do banco MGTMA \ZOOM Zoom do banco MGTMA
* \SOUN \BRW Browsers do Banco MGUNI
DIALOG Filtros, narrativas, etc ... do Banco MGUNI \QRY Objetos Queries do banco MGUNI \GO Objetos "Vá para" do banco MGUNI \VWR Objetos Viewers do banco MGUNI \ZOOM Zoom do banco MGUNI
\PANEL Painéis dos SmartObjects
\PGHUR \ATP Programas do módulo Administração de Treinamento \BSP Programas do módulo Benefícios
\CAP Programas do módulo Cargos e Salários
\DSP Programas do módulo Desenvolvimento de Pessoal \FPP Programas do módulo Folha de Pagamento \FRP Programas do módulo Férias e Rescisões \PEP Programas do módulo Ponto Eletrônico *\PRGTEC \BTB Módulo Básico
\DOC Módulo Documentação \MEN Módulo Menu \SEC Módulo Segurança
\SCRIPTS Scripts de Carga da Aplicação
\SPOOL Diretório default de destino dos Relatórios
\SRC Includes Padrões PROGRESS
\SUPPORT Programas UIB customizados
\UTB Módulo Universal
\UTP Programas Utilitários
\VARINC Includes de variáveis indicadores
CAPÍTULO 3
Nomenclatura
O objetivo deste capítulo é descrever as regras de nomenclatura para os objetos dentro do Datasul-EMS 2.00 e Datasul-HR 1.00.
Sigla de bancos de dados
Para cada banco de dados do Datasul-EMS 2.00 e Datasul-HR 1.00, foi determinada uma sigla de dois caracteres. Esta sigla serve para compor o dump-name das tabelas, nome do diretório de gatilhos, nome de objetos como zoom e browsers.
Banco de Dados do Datasul-EMS 2.00
Banco Sigla Nome lógico Administrativo AD MGADM Coletor de Dados CL MGCLD Distribuição DI MGDIS Industrial IN MGIND Investimentos IV MGINV MultiPlanta MP MGMP Ponto Eletrônico PE MGPE Recursos Humanos RH MGRH
Universal UN MGUNI
Banco de Dados do Datasul-HR 1.00
No Datasul-HR 1.00 deve-se utilizar nomes e abreviaturas no idioma inglês.
Banco Sigla Nome lógico
Definição
Personal Management (Administração de Pessoal) PM DTHRPMG Payroll (Folha de Pagamento PY DTHRPYC Time and Attendence (Controle de Freqüência) TA DTHRTMA
Universal (Universal) UN MGUNI
Siglas de módulos do produto
Cada módulo do produto possui uma sigla para ser utilizada na definição dos nomes de seus programas e diretórios.
Módulos do Datasul-EMS 2.00
Módulo Sigla Aplicações e Empréstimos AE Benefícios Sociais BS Caixas e Bancos CB Coleta de Dados BC Coletor de Dados CL Compras CC Configurador Produto CF Contabilidade CT Contas a Pagar AP Contas a Receber CR Controle Contratos CN Controle de Estoque CE Controle de Produção CP Controle de Qualidade CQ Cotação de Vendas QO Custos CS Desenvolvimento Produto DP EDI ED Engenharia EN FASB/CMI FC Faturamento FT Férias Rescisões FR Folha de Pagamento FP Gerencial GEInvestimentos IN Manutenção Industrial MI MultiPlanta MP Obrigações Fiscais OF Patrimônio PT Pedidos PD Planejamento PL Planejamento Capacidade PC Planejamento Manutenção Industrial PI
Plano Mestre PM Ponto Eletrônico PE Recebimento RE Recebimento Internacional RI
Módulos do Datasul-HR 1.00
Módulo Sigla Administração de Treinamento AT Benefícios BS Cargos e Salários CA Desenvolvimento de Pessoal DS Férias e Rescisões FR Folha de Pagamento FP Ponto Eletrônico PETipos de Atributos
Tipos de Atributos são classificadores para os tipos de informações que são gravadas. Segue abaixo, uma lista de todos os tipos de atributos, descrições e tipos de dados.
Tipo Descrição Tipo de Dado Formato Default cb1 Código de Barra Tipo 1 Integer >>>>>>>9 cb2 Código de Barra Tipo 2 Integer >>>>>>>>>>>9 cb3 Código de Barra Tipo 3 Character X(20)
cdd Código - Decimal Decimal >>>,>>>,>>9 cdn Código - Numérico Integer >>>,>>9 cod Código Character X(8)
dat Data Date 99/99/9999 des Descrição Character X(40) dsl Descrição - Longa Character X(15000) hra Hora Character 99:99:99 idi Indicador - Inteiro Integer 9 Img Imagem Character X(08) log Lógico Logical Sim/Não mmp Memory pointer MenPtr X(8)
nom Nome Character X(30)
num Número Integer >>>>,>>9 qtd Quantidade Decimal ->>>>,>>9.9999 qti Quantidade - Inteira Integer >>>,>>9 raw Raw Character X(15000) rec Recid Recid >>>>>>9
row Rowid Rowid X(20)
som Som Character X(40)
val Valor Decimal ->>,>>>,>>>,>>9.99 vid Vídeo Character X(40)
vli Valor-inteiro Integer >>>,>>9 wgh Widget-Handle Widget-Handle >>>>>>9
Dump-name de tabelas
O Dump-name de uma tabela, tem o formato "xx999", onde "xx" é a sigla do banco de dados do produto, no qual, a tabela é armazenada, e 999 é um
número seqüencial único dentro do banco de dados, Assim, a tabela "item" que está no banco de dados industrial tem o dump-name "in172". É importante utilizar letras minúsculas para a sigla da base de dados.
Não existe processo automático para determinar o número seqüencial para a tabela no banco de dados. Basta acrescentar uma unidade ao último número já utilizado.
Gatilhos do dicionário de dados
Create da tabela tcxx999.p1 database/tgint/tcp/tcin172.p Delete da tabela tdxx999.p database/tgin/tdp/tdin172.p Find da tabela tfxx999.p database/tgin/tfin172.p Write da tabela twxx999.p database/tgin/twin172.p Assign de campo TA999999.p²2 database/tgin/tap/ta002242.p
Programas
A nomenclatura de um programa é determinada em função do seu tipo/estilo, e a sua extensão é .w, se possuir interface e .p, quando não. Entretanto dois programas, mesmo se tiverem extensões diferentes, não podem ter o mesmo nome de arquivo, porque na geração do executável .r, ambos tem o mesmo nome do arquivo com extensão .r.
Todos os arquivos - sejam programas com extensão .p, includes com extensão .i*, imagens, nomes de diretórios, etc., deverão obedecer a regra imposta pelo DOS para o seu nome, isto é, o tamanho máximo do arquivo deve ter 8 caracteres e o tamanho máximo para a extensão deve ter 3 caracteres no máximo.
Também, todos os nomes de arquivo dos programas devem estar em letras minúsculas.
Para os programas que são objetos (SmartObjects) e estão ligados a uma tabela adota-se a nomenclatura abaixo:
Tipo do Objeto Diretório destino Nomenclatura Exemplos para a tabela "item" Browser xxbrw3 b99xx999.w4 bo01in172.w
Dialog xxdialog d99xx999.w d01in172.w Go (Vá para) xxgo g99xx999.w g01in172.w
Query xxqry q99xx999.w q01in172.w
Viewer xxvwr v99xx999.w v01in172.w Zoom (Pesquisa) xxzoom z99xx999.p z01in172.w
1 "xx999" é o dump-name da tabela.
2 O gatilhos de assign do campo obedece a nomenclatura diferenciada pois podemos ter mais de um gatilho
assign por tabela, assim a parte 999999, no padrão, é um número seqüencial de campos em todo o Datasul-EMS 2.0.
3 "xx" é a sigla do banco de dados da tabela principal do objeto.
4 "99" é um número seqüencial de objetos de um determinado tipo para uma tabela e "xx999" e dump-name
para os programas que estão ligados a um módulo do Datasul-EMS 2.00, sendo então, containers ou programas .p, sem interface ou ainda API´s, adota-se a nomenclatura abaixo, sendo que o diretório destino do programa é sempre o diretório do módulo:
Tipo Nomenclatura Exemplos
API xxapi999.p cep/ceapi001.p
Container xx9999zz.w5 cep/ce0401.w
Subprograma de relatório xx9999rp.p6 cep/ce0401rp.p Subprograma qualquer sem interface xx9999zz.p cep/ce0401a.p para programas do produto Datasul-HR 1.00 deve ser observado um
controle na criação da numeração do nome do programa, conforme tabela a seguir:
Numeração Tipo de Programas 0000 à 0099 Manutenções Cadastrais 0100 à 0199 Manutenções Gerais 0200 à 0299 Consultas Cadastrais 0300 à 0399 Consultas Complexas/Relacionamento 0400 à 0499 Listagens Cadastrais 0500 à 0699 Relatórios 0700 à 0799 Tarefas 0800 à 0899 Especiais/Gráficos 0900 à 0999 Utilitários
Os programas CADASTRAIS tem sempre uma numeração concordante, conforme exemplo:
Cadastro: AT0017 Consulta: AT0217 Relatório: AT0417.
Includes
Da mesma maneira que os programas, os includes, também, devem ter seus nomes de arquivo em letras minúsculas, e também, obedecem a algumas regras
5 "xx" indica a sigla do módulo e "zz" caracteres de diferenciação entre programas e subprogramas. 6 Os caracteres "rp" são fixos para nomenclatura deste tipo de subprograma construído através dos Estilos
de nomenclatura, conforme o objetivo do include. As extensões dos includes devem ser sempre .i, i1, .i2, ... e .i9.
Include com view-as de campos para o dicionário de dados
São includes que incorporam a definição do view-as de campos indicadores com tipo de dado inteiro. Estes includes são fundamentais para a tradução do produto.
Diretório destino Nomenclatura Exemplos varinc var99999.i7 varinc/var00002.i
Includes de programas
A nomenclatura destes includes é dada em função do seu grau de reutilização: Quando um include é apenas utilizado por um mesmo programa/procedimento, o nome deste include é igual ao do programa, apenas com a extensão .i ou .i1 a .i9. Exemplo: cdp/cd0206.i para cdp/cd0206.w ou advwr/v01ad102.i para advwr/v01ad102.w.
Quando um include é utilizado por vários programas de um mesmo módulo, o nome deste include é a sigla do módulo mais um número seqüencial,
geralmente acima de 9000. Exemplo: cep/ce9000.i.
Quando um include é utilizado por vários programas de vários módulos, o nome deste include é 'cd' mais um número seqüencial. Exemplo:cdp/cd9500.i.
Includes padrões
Os includes padrões dos Estilos devem ser depositados no diretório include, e o seu nome de arquivo iniciar por "i-" mais um nome significativo, que indique o estilo ou a função. Exemplo: include/i-rpini.i.
Widgets
O padrão de nomenclatura adotado é um prefixo que identifique o widget mais um nome significativo. A tabela de prefixo é apresentada a seguir:
Widget Prefixo Exemplo Botão bt- bt-ok Browse br- br-zoom Combo-box cb- cb-tipo-conta
Fill-in fi- fi-texto Radio-set rs- rs-modo-execucao Retângulo rt- rt-moldura Selection-list ls ls-estados Slider sl sl-percentual Toggle-box tb tb-ativo
Observação O padrão para nome de retângulo não é importante, pois dificilmente são realizados tratamentos nos programas para este tipo de widget.
Variáveis
Datasul-EMS 2.00
Quando uma variável não for um widget o seu tipo de dados determina o prefixo que deve ser utilizado para nomear as variáveis, conforme tabela a seguir:
Tipo de dado Prefixo Exemplo Caracter c- c-conta Inteiro i- i-contador Data da- da-atualizacao Decimal de- de-total-geral
Handle h- h-acomp
Lógico l- l-ativo Raw raw- raw-param
Rowid rw- rw-
Widget-handle wh- wh-botao
Datasul-HR 1.00
A nomenclatura de variável é formada de acordo com a seguinte regra: v_tipo de atributo_qualificador
Tipo de Atributo Qualificador Exemplo
Conforme tabela no item 4.3 Nome que qualifica a variável V_cod_fornec
Outros componentes da linguagem Progress
Componente Prefixo Exemplo Buffer de Tabela b- b-item
Frame f- f-cad Parâmetro p- p-rw-emitente Stream s- s-import Temporarytable tt- tt-param
Siglas de países
Siglas de três letras seguindo padrão internacional que é utilizado para designar objetos e diretórios criados para localização dos produtos nos países:
País Prefixo País Prefixo
África do sul saf Guiana Francesa guf Argentina arg Haiti hai Bahamas bah Honduras hon Barbados bar Jamaica jam
Belize bel México mex
Bolívia bol Nicarágua nic
Brasil bra Panamá pan
Canadá can Paraguai par
Chile chi Peru per
Colômbia col Porto Rico por Costa-rica cos República Dominicana rep Cuba cub San Vicente vic El Salvador sal Santa Lucia luc Equador ecu Suriname sur Estados Unidos usa Trinindad-Tobago tri Granada gra Uruguai uru Guatemala gua Venezuela ven Guiana gui
Nomenclatura para Caixas de diálogos em programas de Zoom e
SmartBrowser
Principalmente, nos programas de Zoom (z99xx999), temos todas as posições (oito) tomadas pelo próprio nome do arquivo. Nestes programas, quando necessitamos janelas para filtros, narrativas, etc. Não lemos como criar um
subprograma para o programa de Zoom. Nestes casos, estes subprogramas devem ter a seguinte nomenclatura:
XX9NNN.W, onde:
XX - Sigla do Módulo 9 - Fixo
NNN - Número seqüencial dentro do Módulo. Estes subprogramas podem ser reutilizados.
Adapters
A estrutura de diretórios e o nome dos adapters devem ser definidos com o seguinte padrão:
Diretórios: adapters/[nome do parceiro]/[cicla do módulo – 3 dígitos]. Nome: a[sigla do parceiro - 2 dígitos][sigla módulo - 2 dígitos][inteiro seqüencial - 3 números].p
Exemplo: adapters/neogrid/ccp/anecc102.p - adapter Neogrid do módulo de compras
CAPÍTULO 4
Layout de Telas
Tipos de Telas (janelas)
Janela Mestre
São consideradas janelas mestre aquelas que são a base dos programas chamados a partir do menu do Datasul-EMS 2.00, sendo que se caracterizam pela existência de um menu de barra, uma régua de botões no topo da janela que disponibilizam as funções existentes naquele programa, e possuem moldura (resizeable).
Exemplo: Tela de um programa de cadastro.
Janela Detalhe
São consideradas janelas detalhe ou filhas aquelas que são chamadas a partir de janelas mestre para realização de funções de um programa. Estas janelas não possuem menu de barra e a régua de botões fica na parte de baixo da tela, a idéia é simular a visualização de um dialog-box.
Como diferenciação, não possuem moldura (resize = no). Exemplo: Tela de um programa de zoom.
Caixas de Diálogo
Caixas de diálogo são utilizadas em funções onde é imprescindível que a interface seja modal, normalmente em funções de grande risco aos sistemas. Nestas caixas existe uma régua de botões disposta na parte de baixo da caixa. Exemplo: Programa de Cálculo do Preço Médio.
Observação Não é aconselhável salvar uma Dialog com uma Window aberta. Quando isto é feito, é possível que o menu da Window seja copiado para a Dialog eliminando-o. Caso isto aconteça é necessário recriar a Dialog e o menu da Window.
Objetos
Combo-boxes
Ver capítulo Como implementar campos indicadores com view-as combo-box
nas telas.
Retângulos
São utilizados para agrupar a chave de acesso das telas, agrupar campos de um mesmo assunto, emoldurar itens de radio-set e emoldurar editores que
necessitem de label.
Botões
os botões com label devem ter:
altura: 1,00 unidade de caracter;
largura: 10, 15 ou 20 unidades de caracter;
quando representarem ações e possuírem labels estes termos devem ser verbos no infinitivo. Exemplo: Cancelar, Incluir, Modificar, Eliminar ...;
botão 'OK' sempre confirma a ação e sai da tela corrente;
botão 'Cancelar' não confirma a ação e sai da tela corrente;
botão 'Ajuda' sempre é disposto no canto inferior direito nas janelas detalhe e caixas de diálogo;
os botões de 'Sair' e 'Ajuda' devem estar sempre no canto superior direito nas janelas pai.
Fill-in´s
os campos e variáveis view-as fill-in devem ter altura de 0,88 unidade de caracter, excepcionalmente, os campos e variáveis view-as combo-box tem a altura de 1,00 unidade de caracter.
Frames(Telas)
título das telas é feito a partir do UT-9000.i, não necessitando intervenção do programador;
as telas podem ter no máximo 90 colunas, sendo que este tamanho é sempre fixo, por 17 linhas, já este tamanho pode ser variável para menos, mas sempre em número inteiro, estas dimensões acompanham o limite para VGA. Estas dimensões devem ser informadas na "Property Sheet" da janela no UIB, nos campos "Width" e "Height";
definida a altura e largura de uma janela, as mesmas dimensões devem ser utilizadas para as propriedades MAX-WIDTH-CHARS e
WIDTH-CHARS (altura máxima e mínima) e MAX-HEIGHT-WIDTH-CHARS e MIN-HEIGHT-CHARS (largura máxima e mínima) (isto deve ficar num include
padrão). Com isso as janelas podem possuir a moldura dada pela propriedade RESIZEABLE. O include WIN-SIZE.I faz estas atribuições.
Radio-Sets
não podem possuir label, devido à limitações do UIB, por isso devem ser emoldurados por um retângulo com uma literal para identificá-lo, que é o próprio label. Ver capítulo: Como implementar labels em retângulos
utilizando o dicionário de dados; Exemplo:
podem ser horizontais ou verticais, prevalecendo o modo vertical quando o número de itens for maior que 4, sendo que maiores que 7 itens devem ser combo-boxes.
Editores
não podem possuir label, devido ao UIB, então quando a tabela possui apenas um editor, que represente comentário ou narrativa, não deve ser colocado qualquer literal ou texto para identificá-lo. Caso contrário, emoldurá-lo com um retângulo e dispor uma literal para identificá-lo;
em View-as Editor, deve-se no UIB, atribuir ou utilizar as seguintes propriedades (Property Sheet): RETURN-INSERTED, e o fonte deve ser escolhido o "2", padrão do Progress, que é um fonte fixo.
Considerações sobre os SmartObjects
SmartBrowser
SmartBrowser é um objeto Procedure que recupera e visualiza dados, utilizando um browse. O nome padrão do Browse não deve ser modificado. Durante a montagem, o tamanho do SmartBrowser deve ser mantido padrão não importando o n.º de campos.
SmartViewer
SmartViewer é uma procedure object, o qual, visualiza os campos da base de dados. Um SmartViewer tipicamente preenche registros da base de dados desde um SmartQuery ou SmartBrowser.
O SmartViewer deve ter um distanciamento de uma linha após e uma linha antes de outros objetos na sua localização.
SmartQuery
SmartQuery é uma procedure object que contém uma base de dados query. Um SmartQuery preenche tipicamente registros para outro SmartObjects, tal como um SmartViewer ou SmartBrowser. Um SmartQuery pode também responder a pedido de navegação de um SmartPanel.
Na tela de características da "Query Builder", em "Options", o campo "Returned" deve ser alterado de "All Fields" para "Fields Used".
Observação: O identificador :T no início de alguns comentários, é usado para a tradução dos fontes dos templates para outros idiomas. Este identificador não afeta em nada a funcionalidade do programa.
Considerações sobre as Imagens
WebEnabler
WebEnabler é um produto que disponibiliza o DATASUL EMS 2, EMS 5 e HR através de um Web Browser, como o Internet Explorer. Assim sendo todos as telas que utilizam imagens, normalmente no formato Bitmap (.bmp),
também devem possuir a mesma imagem, como mesmo nome no formato GIF (.gif), pois o WebEnabler sendo um produto voltado para a Web só irá suportar os padrões da mesma quanto as imagens.
CAPÍTULO 5
Estilos
Cadastro Simples
todas as funções, com exceção do zoom e do 'vá para', são realizadas na própria tela base do programa;
os campos devem estar alinhados pelo colon e formando colunas;
a tabulação deve ser de cima para baixo nos campos, passando por todos os campos de uma coluna para depois passar para a outra coluna;
o menu de barra da janela contém todas as opções disponíveis através dos botões dispostos na tela;
novas funções, que não estejam contempladas na palette padrão de navegação e atualização devem ser representadas por botões e itens no menu de barra, quanto aos botões é sugerido que sejam dispostos junto à régua de botões no topo da janela (antes do botão de 'Consultas
Relacionadas');
não é permitida a alteração da chave da tabela através da função 'Alterar';
a função 'Eliminar' deve pedir confirmação;
menu de barra tem a seguinte configuração:
Arquivo Ajuda
Primeiro Ctrl-Home Conteúdo Anterior Ctrl-Left Sobre Próximo Ctrl-Right Último Ctrl-End Vá Para Ctrl-T Pesquisa Ctrl-F5 Incluir Ctrl-Ins Copiar Ctrl-C Alterar Ctrl-A Eliminar Ctrl-Del Desfazer Ctrl-U Cancelar Ctrl-F4 Salvar Ctrl-S Imprimir Ctrl-P Sair Ctrl-X
Cadastro Complexo
menu de barra tem a mesma configuração demonstrada na tela de Cadastro Simples. Possui porém, folders que permitem a utilização de mais de uma viewer.
Quando utilizar o Cadastro Complexo
deve ser usado sempre que o número de campos de uma tabela não couberem em uma única viewer.
Cadastro Simples - Atualiza
o menu de barra da janela contém apenas as opções para Atualizar, sem as funções de 'Incluir', 'Copiar', 'Eliminar', como disposto no Cadastro Simples.
Cadastro Complexo - Atualiza
tem as mesmas características do Cadastro Simples - Atualiza, porém possui mais de uma viewer e está disposto em folders.
Pai x Filhos - Atualiza Filho
os campos devem estar alinhados pelo colon e formando colunas;
a tabulação deve ser de cima para baixo nos campos, passando por todos os campos de uma coluna para depois passar para a outra coluna;
o menu de barra da janela contém todas as opções disponíveis através dos botões dispostos na tela;
novas funções, que não estejam contempladas no palette padrão de navegação e atualização devem ser representadas por botões e itens no menu de barra, quanto aos botões é sugerido que sejam dispostos junto à régua de botões no topo da janela (antes do botão de 'Consultas
Relacionadas');
o 'Folder' tem como objetivo, selecionar browsers de tabelas filho;
Incluir, Modificar e Eliminar serve apenas para manutenção da(s) tabela(s) filho, as opções 'Incluir' e 'Modificar', chamam janelas semelhantes ao Cadastro Simples ou Complexo (sem a régua);
Quando utilizar Pai x Filhos - Atualiza Filho
É feita a navegação na tabela pai e a manutenção é executada somente no campo selecionado da tabela filho, para modificação pode se selecionar 'Modificar' para abrir uma janela.
Manutenção de Filhos
é uma janela sem painéis, podendo possuir ou não folders de acordo com a necessidade, é chamada a partir de um programa Pai x Filho, a janela é a mesma tanto para inclusão quanto para alteração;
a janela possui quatro botões: 'Ok', 'Salvar', 'Cancelar' e 'Ajuda';
o botão de 'Ok' tem função igual tanto para chamada do programa, para inclusão, quanto para modificação;
o botão de 'Salvar', quando o programa é chamado para inclusão, possui função de salvar o registro corrente e criar um registro novo;
o botão 'Cancelar', anula qualquer mudança feita no registro corrente do programa, ou seja, cancela apenas a última inclusão ou a última alteração;
o botão 'Ajuda' é responsável por chamar o help do programa.
Pai x Filhos - Atualiza Ambos
tem as mesmas características da tela Pai x Filho - Atualiza Filho, além de que a atualização não só é feita no Folder como no registro pai;
o menu de barra da janela contém todas as opções disponíveis através dos botões dispostos na tela;
novas funções, que não estejam contempladas na palette padrão de navegação e atualização, devem ser representadas por botões e itens no menu de barra, quanto aos botões é sugerido que sejam dispostos junto à régua de botões no topo da janela (antes do botão de 'Consultas
Relacionadas');
Incluir, Modificar e Eliminar serve para manutenção da(s) tabela(s) filho;
as opções 'Incluir' e o 'Modificar', chamam janelas semelhantes ao Cadastro Simples ou Complexo (sem a régua);
Incluir, Modificar, Eliminar e Copiar serve apenas para manutenção da tabela pai, as opções 'Incluir', 'Modificar' e 'Copiar, chamam janelas semelhantes ao Cadastro Simples ou Complexo (sem a régua).
Manutenção de Pais
é uma janela sem painéis, podendo possuir ou não folders, de acordo com a necessidade, é chamada a partir de um programa Pai x Filho, a janela é a mesma tanto para inclusão quanto para alteração ou cópia;
a janela possui quatro botões: 'Ok', 'Salvar', 'Cancelar' e 'Ajuda';
o botão de 'Ok' tem função igual tanto para chamada do programa, para inclusão, quanto para modificação;
o botão 'Salvar', quando o programa é chamado para inclusão, possui função de salvar o registro corrente e criar um registro novo;
o botão 'Ajuda' é responsável por chamar o help do programa.
Consulta Cadastral Simples
as funções com exceção do zoom e do 'Vá para', são realizadas na própria tela base do programa, apenas para consulta;
o menu de barra da janela contém as opções disponíveis através dos botões dispostos na tela.
Consulta Cadastral Complexa
além das mesmas características da tela de Consulta Cadastral Simples, tem um 'Folder', com o objetivo de selecionar as demais viewers da tabela;
as funções, com exceção do zoom e do 'Vá para', são realizadas na própria tela base do programa, apenas para Consulta;
o menu de barra da janela contém as opções disponíveis através dos botões dispostos na tela, além do botão de 'Relacionamento'.
Consulta Relacionamento
o objetivo é apresentar os relacionamentos de uma determinada tabela, denominada tabela pai;
as funções de navegação, 'Vá para' e 'Pesquisa' se aplicam sobre a tabela pai;
em cada página do folder é apresentado um relacionamento (tabela filho) da tabela, onde um browser apresenta os registros relacionados da tabela filho com o corrente registro da tabela pai;
cada browser de apresentação dos relacionamentos deve possuir um botão 'Detalhar', cuja função é chamar a consulta cadastral da tabela filho, posicionando-se no registro corrente no browser, o evento default-action sobre estes browsers, representado por um duplo clique ou por um pressionar na barra de espaços, é um atalho para botão 'Detalhar';
acima do folder, isolados por um retângulo, ficam dispostos os principais campos da tabela pai (normalmente, a chave primária e alguma descrição);
menu de barra da janela contém todas as opções disponíveis na barra de botões disposta no topo da tela.
é uma janela do tipo detalhe, isto é, sem menu de barra emoldura, simulando uma caixa de diálogo;
o botão 'Executar' tem como função executar toda a parametrização realizada nos Folders;
o 'Fechar' do frame sai da tela;
o botão 'Ajuda' é responsável por chamar o help do programa;
Seleção: tudo que é faixa;
Classificação: Radio-se com as opções;
Parâmetros: com exceção da faixa, as outras informações que o usuário digita;
Digitação: browse updatable.
A seguir, estão demonstrados os folders de Seleção, Classificação, Parâmetros e Digitação:
Parâmetros Únicos
é uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;
o default-button do frame é o botão de 'Ok', que confirma a escolha do usuário;
o cancel-button do frame é o botão de 'Cancelar' que sai da tela;
o botão 'Imprimir' é responsável por chamar o browse dos relatórios relacionados;
o botão 'Ajuda' é responsável por chamar o help do programa.
Parâmetros Múltiplos
Seguir as mesmas regras dos Cadastros Simples ou Complexo, dependendo do número de campos.
Exemplo: Parâmetros por estabelecimento.
Formação
este estilo de formação possui o palette de navegação, portanto o programa é independente, não sendo necessário um programa principal para sua chamada;
os campos devem estar alinhados pelo colon e formando colunas;
o menu de barra da janela contém todas as opções disponíveis através dos botões dispostos na tela;
novas funções, que não estejam contempladas na palette padrão de navegação e atualização devem estar representadas por botões e itens no menu de barra, quanto aos botões é sugerido que sejam dispostos junto à régua de botões no topo da janela ao lado esquerdo do botão 'Consultas Relacionadas';
o botão 'Incluir' , adiciona no Browse de formação os dados de outras 2 tabelas;
o botão 'Deletar' , remove dados do Browse de formação;
o botão 'Modifica' chama o programa de atualização dos atributos, que é uma janela semelhante ao Cadastro Simples ou Complexo (sem a régua).
Formação sem Navegação
este estilo de formação não possui o palette de navegação, portanto o programa é dependente, sendo que ele deve ser chamado por um programa que possua um Browser Formação;
os campos devem estar alinhados pelo colon e formando colunas;
menu de barra da janela contém todas as opções disponíveis através dos botões dispostos na tela;
novas funções, que não estejam contempladas na palette padrão de navegação e atualização deve estar representadas por botões e itens no menu de barra, quanto aos botões é sugerido que sejam dispostos junto à régua de botões no topo da janela ao lado esquerdo do botão 'Consultas Relacionadas';
botão de 'Incluir' , adiciona no Browse de formação os dados de outras 2 tabelas;
botão de 'Deletar' , remove dados do Browse de formação;
botão 'Modifica' chama o programa de atualização dos atributos.
Importação
é uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;
o botão 'Executar' tem como função disparar a importação que foi parametrizada nos folders;
possui quatro folders: Layout, Seleção, Parâmetros e Log;
no folder de "Layout" é mostrado o layout do arquivo a ser importado;
o botão 'Editar Layout' permite que seja editado o arquivo de layout através de um editor de texto;
no folder de "Seleção" é determinada a faixa dos registros que são importados;
no folder de "Parâmetros" é determinado o nome do arquivo de entrada contendo registros a serem importados no formato do Layout;
na página de "Log" é determinado o nome do arquivo de saída que deve gerar uma lista com todos os registros que forem importados ou somente os rejeitados, contém ainda a determinação do modo de execução do mesmo.
Exportação
é uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;
o botão 'Executar' tem como função disparar a exportação que foi parametrizada nos folders;
possui quatro folders: Layout, Seleção, Parâmetros e Log;
no folder de Layout é mostrado o layout do arquivo a ser exportado;
o botão 'Editar Layout' permite que seja editado o arquivo de layout através de um editor de texto;
no folder de "Seleção" é determinada a faixa dos registros que serão exportados;
no folder de "Parâmetros" é determinado o nome do arquivo de saída que é exportado no formato do Layout;
a página de "Log" contém a determinação de modo de execução do mesmo.
Zoom de Tabelas
é uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;
default-button do frame é o botão de 'OK', que confirma a escolha do usuário;
cancel-button do frame é o botão de 'Cancelar' que sai da tela, retornando ao programa chamador porém sem retornar um registro escolhido;
o botão 'Implantar' é responsável por chamar o programa de cadastro da tabela, que pode estar desativado dependendo do programa chamador;
ao lado do botão 'Implantar' que é padrão, devem ser colocados os botões específicos de cada programa de zoom, por exemplo: Narrativa, Filtro, Texto Livre, etc..., normalmente estes botões chamam caixas de diálogo;
o botão é responsável pela aplicação do valor inicial e final definido pelo usuário sobre a query apresentada no browse;
cada folder representa uma opção de classificação disponível no zoom;
os iniciais e finais devem ser apresentados no formato, independentemente do número de campos para a faixa:
Label do campo: [valor inicial] ... [valor final].
não devem ser utilizadas literais em tela para denominar inicial e final.
Observação Verificar se cada folder tem um browser diferente ou não, se isto for necessário inverter a ordem dos campos, conforme a classificação.
O Zoom não tem os botões de INÍCIO e de FIM (como no MAGNUS antigo), logo se utiliza o teclado: "HOME" e "END", para substituir as características destas funções.
para utilizar o 'Pesquisa', usar o para acessar.
Vá Para
o objetivo é permitir um reposicionamento rápido do registro corrente no cadastro, quando o usuário tem o conhecimento da chave do registro, evitando que o usuário tenha que navegar sobre os registros ou acionar o zoom;
é aberta uma pequena caixa de diálogo com os botões de 'Ok' e 'Cancelar' e 'Ajuda', sendo que o botão de 'Ok' é o default-button, o que possibilita ao usuário digitar a chave e apenas teclar "Enter" para confirmar a tela;
não tem possibilidade zoom;
para utilizar esta tabela, usar o para acessá-la.
Observação Não é aconselhável salvar uma Dialog com uma Window aberta. Quando isto é feito, é possível que o menu da Window seja copiado para a Dialog eliminando-o. Caso isto aconteça é necessário recriar a Dialog e o menu da Window.
Digitação Rápida
é uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;
default-button do frame é o botão 'Ok', que efetiva a transação;
cancel-button do frame é o botão 'Cancelar' que sai da tela sem considerar as informações;
as páginas iniciais são reservadas para as informações genéricas;
a última página é reservada para o browser.
Painéis
Estes são os painéis padrão mais utilizados para navegação.
Funções
Relatórios Relacionados
chama um Browser que lista todos os relatórios relacionados ao programa que está sendo executado;
o botão 'Executar', chama o relatório selecionado no browser.
Para utilizar a função de "Relatórios Relacionados", usar o para acessar.
Consultas Relacionadas
chama um Browser que lista todas as consultas relacionadas ao programa que está sendo executado;
o botão 'Executar', chama a consulta selecionada no browser.
Para utilizar a função de "Consultas Relacionadas", usar o para acessar.
Características