SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
97
98
Quando definirmos uma fórmula, GeneXus pode combinar a consulta / cálculo
associada a fórmula com a consulta na qual a fórmula está presente e assim
gerar sentenças otimizadas.
99
100
Como explicamos neste slide, os atributos definidos como fórmula global, não são
criados como campos físico em tabelas, dizemos que são atributos virtuais.
Todavia, dizemos que tem uma tabela “associada” ou tabela “base”, para conhecer
o contexto na qual foi definida, e contar com esse contexto do momento de
disparar o cálculo correspondente onde for referenciado.
101
102
Na definição de um atributo como fórmula horizontal, é possível envolver atributos
pertencentes a tabela associada ao atributo que a fórmula está sendo definida e
a sua tabela estendida.
No exemplo, ao definir que o atributo CustomerBalance é fórmula, o mesmo deixará
de existir como campo físico da tabela CUSTOMER.
Diremos a partir desse momento CustomerBalance é um atributo virtual e que sua
tabela “base ou associada” será CUSTOMER, já que se fosse armazenar dito atributo
novamente (seja porque o analista definiu que deixa de ser fórmula ou que é fórmula
redundante) seria criado como atributo físico na tabela CUSTOMER.
O tipo de cálculo desta fórmula definida é horizontal, já que consiste em uma
expressão aritmética; portanto os atributos que podem ser referenciado na definição
desta fórmula são os pertencentes a tabela CUSTOMER (tanto os armazenados
como fórmulas) e sua tabela estendida.
103
Neste exemplo o atributo InvoiceDetailAmount foi definido como fórmula global
também. Isto é, utilizando o editor de fórmulas, foi associado um cálculo a este
atributo e o mesmo passará a ser um atributo virtual.
A tabela associada ao atributo InvoiceDetailAmount será INVOICEDETAIL, caso dito
atributo for armazenado novamente, será criado em dita tabela física.
Como podemos observar a fórmula definida cai na classificação de horizontal, já que
consiste em 2 expressões aritméticas condicionais. Os atributos envolvidos na
definição da fórmula pertencem a tabela INVOICEDETAIL ou a sua tabela estendida.
104
No exemplo os atributos InvoiceDetail e InvoiceAmount foram definidos como fórmulas globais, já
que utilizando o editor de fórmulas foi definido uma fórmula para cada um destes atributos (os
passando a ser atributos virtuais).
Visto que as fórmulas definidas são Count e Sum respectivamente, em ambos casos se trata de
fórmulas Aggregate.
A tabela associada a ambos atributos fórmula é INVOICE, já que caso estes atributos estivesses
armazenados, seriam criados em dita tabela física.
As fórmulas Aggregate não possuem somente uma tabela base associada (como todas as
fórmulas), mas também envolvem uma tabela a ser navegada.
A tabela a ser navegada numa fórmula Aggregate, é a tabela que será navegada para realizar o
cálculo. GeneXus inferi qual a tabela a ser navegada por uma fórmula Aggregate, pelos atributos
envolvidos na definição da fórmula. Em nosso exemplo, a tabela a ser navegada em ambas
fórmulas Aggregate é INVOICEDETAIL, já que tanto na definição de Sum como Count, temos
referenciado a um único atributo associado a INVOICEDETAIL.
Quando definirmos uma fórmula Aggregate, já temos conhecimento de qual tabela pretendemos
navegar para efetuar o cálculo. Os atributos que poderemos referenciar na definição de uma
fórmula Aggregate deverão pertencer a tabela a ser navegada e sua tabela estendida + a tabela
associada ao atributo que está sendo definido como fórmula e sua tabela estendida. De
envolver numa fórmula Aggregate atributos que não pertençam a este contexto mencionado, um
error será mostrado na listagem de navegação correspondente.
Por último, havendo atributos em comum (com o mesmo nome) nas tabelas envolvidas na
definição de uma fórmula, GeneXus aplicará essa relação (isto é, um filtro automático por
igualdade pelos atributos com o mesmo nome). Isto é o que acontece neste 2 exemplos, que
GeneXus conta e soma as linhas relacionadas a seus cabeçalhos (ao somar e contar, aplica
automaticamente o filtro INVOICEDETAIL.InvoiceId = INVOICE.InvoiceId ).
105
Sintaxe completa de Sum, Count, Average:
Sum | Count | Average(Expressão, [Condição Explícita, Valor por Default]) [if Condição Disparo];
Nos 2 exemplos de fórmulas Sum e Count que vimos, somente definimos o parâmetro obrigatório,
a expressão a ser somada o contada (que num caso consistiu num atributo armazenado e no outro
caso num atributo fórmula). Também dita expressão poderia envolver constantes e/ou funções.
Vimos que GeneXus determina condições de filtro implícitas ao realizar ao soma, conta ou média/
Também poderíamos ter definido condições de filtro explícitas e no caso de fazê-las, GeneXus
levará ambas em consideração: implícitas + explícitas.
De forma opcional é possível definir um valor por default a ser retornado quando não são
encontrados registros para contar, somar, ou média.
Da mesma forma que todas as fórmulas, estas também permitem incluir condição de disparo.
Por último, vale mencionar uma exceção e é em particular nas fórmulas Count, o primeiro
parâmetro deve corresponder a um atributo e não a uma expressão. Pode referenciar qualquer
atributo da tabela na qual se quer contar registros (que cumpram com condições explícitas e/ou
implícitas).
106
Modificamos o desenho das transações para que ao invés de representar que cada produto
possui um preço único, representamos que cada produto tem uma lista de preços de acordo
com uma data de alteração dos mesmos.
Ao efetuar esta mudança, o atributo ProductPriceListPrice não poderá estar presente no
segundo nível da transação Invoice. Por que? Porque o novo desenho estará representando
que um produto não vai ter um preço único, mas sim muitos: um para cada data da alteração
do preço do mesmo. Portanto um produto numa linha de uma fatura, teremos que “buscar” o
preço vigente do mesmo, considerando a data da fatura.
Lembre que os atributos que podem ser inferidos em determinado nível de uma transação,
são os que pertencem a tabela estendida da tabela base associada ao nível em questão.
Neste exemplo, a tabela estendida da tabela INVOICEDETAIL, não inclui a tabela
PRODUCTPRICELIST (naquela que o atributo esteja ProductPriceListPrice):
portanto no nível Detail da transação Invoice (associado a tabela INVOICEDETAIL) não é
possível inferir o atributo ProductPriceListPrice (armazenado na tabela
PRODUCTPRICELIST).
107
O que ocorre se deixarmos o atributo ProductPriceListPrice no nível Detail transação
Invoice? Como não pode ser inferido, então GeneXus não terá outra opção que armazená-lo
na tabela INVOICEDETAIL e este atributo secundário já estará em outra tabela
(PRODUCTPRICELIST). Como resultado é um modelo de dados não normalizado, e
mostrará o error ao querer reorganizar a base de dados.
E como fazemos para mostrar em cada linha da factura, o preço vigente do produto da
mesma? De todos os preços correspondentes ao produto de una linha, qual queremos
recuperar? Evidentemente, de todos os preços que tenham data menor ou igual a data da
fatura, queremos aquele que tenha data maior.
Procedemos então a criar no nível Detail da transação Invoice, um novo atributo de nome
InvoiceDetailProductPrice, ao qual o definiremos como fórmula global e portanto será um
atributo virtual.
A dito atributo vamos associar a fórmula Max:
GeneXus infere a tabela a ser navegada pelo último parâmetro da fórmula (o atributo de
retorno).
Como já se foi explicado, os atributos que poderemos referenciar na definição de uma
fórmula Aggregate deverão pertencer a tabela a ser navegada e sua tabela estendida + a
tabela associada ao atributo definido como fórmula e sua tabela estendida. Envolvendo
atributos que não pertençam neste contexto mencionado, um error é mostrado na listagem
de navegaçã correspondente.
GeneXus considera o momento de efetuar a busca a condição explícita de filtro + as
condições implícitas detectadas.
A fórmula Min é totalmente análoga a Max, com uma única diferença de que ao encontrar
um conjunto de registros que cumpram com as condições, será selecionado aquele registro
que tenha valor mínimo para o atributo indicado no primeiro parâmetro e retorne o valor de
retorno indicado no último parâmetro.
A fórmula Find por sua vez, também permite buscar um registro que cumpra com certas
condições, contudo se ter mais de 1 registro que cumpra com elas, a fórmula devolverá o
atributo de retorno correspondente ao primeiro registro encontrado (sem maximizar nem
minimizar um valor no conjunto de registros que cumpram com as condições). A sintaxe Find
é:
Find (Expressão de retorno, [Condição explícita], [Valor por default) [if Condição de
disparo]
Observar que a expressão de retorno neste caso se escreve no primeiro parâmetro da
108

Weitere ähnliche Inhalte

Was ist angesagt?

Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Emiliano Barbosa
 
Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Emiliano Barbosa
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Emiliano Barbosa
 
[Certificacao ] normalizacao de dados e as formas normais
[Certificacao ]  normalizacao de dados e as formas normais[Certificacao ]  normalizacao de dados e as formas normais
[Certificacao ] normalizacao de dados e as formas normaisSandro Freitas
 
Alterando a estrutura de uma tabela
Alterando a estrutura de uma tabelaAlterando a estrutura de uma tabela
Alterando a estrutura de uma tabelaCentro Paula Souza
 
Normalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalNormalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalvitorleyva
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sqlCharleston Anjos
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8Emiliano Barbosa
 
Lista das funções do Google Spreadsheet
Lista das funções do Google SpreadsheetLista das funções do Google Spreadsheet
Lista das funções do Google SpreadsheetSetesys
 
Apostilaexcel1 2007
Apostilaexcel1 2007Apostilaexcel1 2007
Apostilaexcel1 2007Pimentel
 

Was ist angesagt? (19)

Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
 
Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8
 
[Certificacao ] normalizacao de dados e as formas normais
[Certificacao ]  normalizacao de dados e as formas normais[Certificacao ]  normalizacao de dados e as formas normais
[Certificacao ] normalizacao de dados e as formas normais
 
Excelavancado
ExcelavancadoExcelavancado
Excelavancado
 
Alterando a estrutura de uma tabela
Alterando a estrutura de uma tabelaAlterando a estrutura de uma tabela
Alterando a estrutura de uma tabela
 
Aula 12 banco de dados
Aula 12   banco de dadosAula 12   banco de dados
Aula 12 banco de dados
 
Normalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalNormalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normal
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 
Apostila excel-avancado-senac
Apostila excel-avancado-senacApostila excel-avancado-senac
Apostila excel-avancado-senac
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
 
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 1/8
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Lista das funções do Google Spreadsheet
Lista das funções do Google SpreadsheetLista das funções do Google Spreadsheet
Lista das funções do Google Spreadsheet
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Apostilaexcel1 2007
Apostilaexcel1 2007Apostilaexcel1 2007
Apostilaexcel1 2007
 
Apostila excel fórmulas
Apostila excel   fórmulasApostila excel   fórmulas
Apostila excel fórmulas
 

Ähnlich wie 03 formulas globais-cursogxxbr

Ähnlich wie 03 formulas globais-cursogxxbr (20)

11 data providers-cursogxxbr
11 data providers-cursogxxbr11 data providers-cursogxxbr
11 data providers-cursogxxbr
 
05 ordem execucaoregrase-formulas-cursogxxbr
05 ordem execucaoregrase-formulas-cursogxxbr05 ordem execucaoregrase-formulas-cursogxxbr
05 ordem execucaoregrase-formulas-cursogxxbr
 
Excel Intermediário
Excel IntermediárioExcel Intermediário
Excel Intermediário
 
15 web panels-curso gxxbr
15 web panels-curso gxxbr15 web panels-curso gxxbr
15 web panels-curso gxxbr
 
12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr
 
08 data selectors-cursogxxbr
08 data selectors-cursogxxbr08 data selectors-cursogxxbr
08 data selectors-cursogxxbr
 
16 gx flow-curso-gxxbr
16 gx flow-curso-gxxbr16 gx flow-curso-gxxbr
16 gx flow-curso-gxxbr
 
10 sd ts-curso-gxxbr
10 sd ts-curso-gxxbr10 sd ts-curso-gxxbr
10 sd ts-curso-gxxbr
 
Curso java script
Curso java scriptCurso java script
Curso java script
 
Apostila excel avançado
Apostila excel avançadoApostila excel avançado
Apostila excel avançado
 
13 subtipos-curso gxxbr
13 subtipos-curso gxxbr13 subtipos-curso gxxbr
13 subtipos-curso gxxbr
 
000047 como fazer totvs - v 4.0.0 - entenda o rm conversor de classis para ...
000047   como fazer totvs - v 4.0.0 - entenda o rm conversor de classis para ...000047   como fazer totvs - v 4.0.0 - entenda o rm conversor de classis para ...
000047 como fazer totvs - v 4.0.0 - entenda o rm conversor de classis para ...
 
Tutorial formulas excell
Tutorial formulas excellTutorial formulas excell
Tutorial formulas excell
 
Javafree
JavafreeJavafree
Javafree
 
14 patterns-curso gxxbr
14 patterns-curso gxxbr14 patterns-curso gxxbr
14 patterns-curso gxxbr
 
12 SQL - Junções / Join
12 SQL - Junções / Join12 SQL - Junções / Join
12 SQL - Junções / Join
 
Aula 23 - Excel 2010
Aula 23 - Excel 2010Aula 23 - Excel 2010
Aula 23 - Excel 2010
 
Final e aastract
Final e aastractFinal e aastract
Final e aastract
 
Tutorialphpmyadmin
TutorialphpmyadminTutorialphpmyadmin
Tutorialphpmyadmin
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 

Mehr von Cristiano Rafael Steffens

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCristiano Rafael Steffens
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...Cristiano Rafael Steffens
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESCristiano Rafael Steffens
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Cristiano Rafael Steffens
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...Cristiano Rafael Steffens
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...Cristiano Rafael Steffens
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedCristiano Rafael Steffens
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionCristiano Rafael Steffens
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationCristiano Rafael Steffens
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Cristiano Rafael Steffens
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Cristiano Rafael Steffens
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Cristiano Rafael Steffens
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Cristiano Rafael Steffens
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionCristiano Rafael Steffens
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Cristiano Rafael Steffens
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoCristiano Rafael Steffens
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Cristiano Rafael Steffens
 

Mehr von Cristiano Rafael Steffens (20)

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
 

03 formulas globais-cursogxxbr

  • 1. 97
  • 2. 98 Quando definirmos uma fórmula, GeneXus pode combinar a consulta / cálculo associada a fórmula com a consulta na qual a fórmula está presente e assim gerar sentenças otimizadas.
  • 3. 99
  • 4. 100 Como explicamos neste slide, os atributos definidos como fórmula global, não são criados como campos físico em tabelas, dizemos que são atributos virtuais. Todavia, dizemos que tem uma tabela “associada” ou tabela “base”, para conhecer o contexto na qual foi definida, e contar com esse contexto do momento de disparar o cálculo correspondente onde for referenciado.
  • 5. 101
  • 6. 102 Na definição de um atributo como fórmula horizontal, é possível envolver atributos pertencentes a tabela associada ao atributo que a fórmula está sendo definida e a sua tabela estendida. No exemplo, ao definir que o atributo CustomerBalance é fórmula, o mesmo deixará de existir como campo físico da tabela CUSTOMER. Diremos a partir desse momento CustomerBalance é um atributo virtual e que sua tabela “base ou associada” será CUSTOMER, já que se fosse armazenar dito atributo novamente (seja porque o analista definiu que deixa de ser fórmula ou que é fórmula redundante) seria criado como atributo físico na tabela CUSTOMER. O tipo de cálculo desta fórmula definida é horizontal, já que consiste em uma expressão aritmética; portanto os atributos que podem ser referenciado na definição desta fórmula são os pertencentes a tabela CUSTOMER (tanto os armazenados como fórmulas) e sua tabela estendida.
  • 7. 103 Neste exemplo o atributo InvoiceDetailAmount foi definido como fórmula global também. Isto é, utilizando o editor de fórmulas, foi associado um cálculo a este atributo e o mesmo passará a ser um atributo virtual. A tabela associada ao atributo InvoiceDetailAmount será INVOICEDETAIL, caso dito atributo for armazenado novamente, será criado em dita tabela física. Como podemos observar a fórmula definida cai na classificação de horizontal, já que consiste em 2 expressões aritméticas condicionais. Os atributos envolvidos na definição da fórmula pertencem a tabela INVOICEDETAIL ou a sua tabela estendida.
  • 8. 104 No exemplo os atributos InvoiceDetail e InvoiceAmount foram definidos como fórmulas globais, já que utilizando o editor de fórmulas foi definido uma fórmula para cada um destes atributos (os passando a ser atributos virtuais). Visto que as fórmulas definidas são Count e Sum respectivamente, em ambos casos se trata de fórmulas Aggregate. A tabela associada a ambos atributos fórmula é INVOICE, já que caso estes atributos estivesses armazenados, seriam criados em dita tabela física. As fórmulas Aggregate não possuem somente uma tabela base associada (como todas as fórmulas), mas também envolvem uma tabela a ser navegada. A tabela a ser navegada numa fórmula Aggregate, é a tabela que será navegada para realizar o cálculo. GeneXus inferi qual a tabela a ser navegada por uma fórmula Aggregate, pelos atributos envolvidos na definição da fórmula. Em nosso exemplo, a tabela a ser navegada em ambas fórmulas Aggregate é INVOICEDETAIL, já que tanto na definição de Sum como Count, temos referenciado a um único atributo associado a INVOICEDETAIL. Quando definirmos uma fórmula Aggregate, já temos conhecimento de qual tabela pretendemos navegar para efetuar o cálculo. Os atributos que poderemos referenciar na definição de uma fórmula Aggregate deverão pertencer a tabela a ser navegada e sua tabela estendida + a tabela associada ao atributo que está sendo definido como fórmula e sua tabela estendida. De envolver numa fórmula Aggregate atributos que não pertençam a este contexto mencionado, um error será mostrado na listagem de navegação correspondente. Por último, havendo atributos em comum (com o mesmo nome) nas tabelas envolvidas na definição de uma fórmula, GeneXus aplicará essa relação (isto é, um filtro automático por igualdade pelos atributos com o mesmo nome). Isto é o que acontece neste 2 exemplos, que GeneXus conta e soma as linhas relacionadas a seus cabeçalhos (ao somar e contar, aplica automaticamente o filtro INVOICEDETAIL.InvoiceId = INVOICE.InvoiceId ).
  • 9. 105 Sintaxe completa de Sum, Count, Average: Sum | Count | Average(Expressão, [Condição Explícita, Valor por Default]) [if Condição Disparo]; Nos 2 exemplos de fórmulas Sum e Count que vimos, somente definimos o parâmetro obrigatório, a expressão a ser somada o contada (que num caso consistiu num atributo armazenado e no outro caso num atributo fórmula). Também dita expressão poderia envolver constantes e/ou funções. Vimos que GeneXus determina condições de filtro implícitas ao realizar ao soma, conta ou média/ Também poderíamos ter definido condições de filtro explícitas e no caso de fazê-las, GeneXus levará ambas em consideração: implícitas + explícitas. De forma opcional é possível definir um valor por default a ser retornado quando não são encontrados registros para contar, somar, ou média. Da mesma forma que todas as fórmulas, estas também permitem incluir condição de disparo. Por último, vale mencionar uma exceção e é em particular nas fórmulas Count, o primeiro parâmetro deve corresponder a um atributo e não a uma expressão. Pode referenciar qualquer atributo da tabela na qual se quer contar registros (que cumpram com condições explícitas e/ou implícitas).
  • 10. 106 Modificamos o desenho das transações para que ao invés de representar que cada produto possui um preço único, representamos que cada produto tem uma lista de preços de acordo com uma data de alteração dos mesmos. Ao efetuar esta mudança, o atributo ProductPriceListPrice não poderá estar presente no segundo nível da transação Invoice. Por que? Porque o novo desenho estará representando que um produto não vai ter um preço único, mas sim muitos: um para cada data da alteração do preço do mesmo. Portanto um produto numa linha de uma fatura, teremos que “buscar” o preço vigente do mesmo, considerando a data da fatura. Lembre que os atributos que podem ser inferidos em determinado nível de uma transação, são os que pertencem a tabela estendida da tabela base associada ao nível em questão. Neste exemplo, a tabela estendida da tabela INVOICEDETAIL, não inclui a tabela PRODUCTPRICELIST (naquela que o atributo esteja ProductPriceListPrice): portanto no nível Detail da transação Invoice (associado a tabela INVOICEDETAIL) não é possível inferir o atributo ProductPriceListPrice (armazenado na tabela PRODUCTPRICELIST).
  • 11. 107 O que ocorre se deixarmos o atributo ProductPriceListPrice no nível Detail transação Invoice? Como não pode ser inferido, então GeneXus não terá outra opção que armazená-lo na tabela INVOICEDETAIL e este atributo secundário já estará em outra tabela (PRODUCTPRICELIST). Como resultado é um modelo de dados não normalizado, e mostrará o error ao querer reorganizar a base de dados. E como fazemos para mostrar em cada linha da factura, o preço vigente do produto da mesma? De todos os preços correspondentes ao produto de una linha, qual queremos recuperar? Evidentemente, de todos os preços que tenham data menor ou igual a data da fatura, queremos aquele que tenha data maior. Procedemos então a criar no nível Detail da transação Invoice, um novo atributo de nome InvoiceDetailProductPrice, ao qual o definiremos como fórmula global e portanto será um atributo virtual. A dito atributo vamos associar a fórmula Max: GeneXus infere a tabela a ser navegada pelo último parâmetro da fórmula (o atributo de retorno). Como já se foi explicado, os atributos que poderemos referenciar na definição de uma fórmula Aggregate deverão pertencer a tabela a ser navegada e sua tabela estendida + a tabela associada ao atributo definido como fórmula e sua tabela estendida. Envolvendo atributos que não pertençam neste contexto mencionado, um error é mostrado na listagem de navegaçã correspondente. GeneXus considera o momento de efetuar a busca a condição explícita de filtro + as condições implícitas detectadas. A fórmula Min é totalmente análoga a Max, com uma única diferença de que ao encontrar um conjunto de registros que cumpram com as condições, será selecionado aquele registro que tenha valor mínimo para o atributo indicado no primeiro parâmetro e retorne o valor de retorno indicado no último parâmetro. A fórmula Find por sua vez, também permite buscar um registro que cumpra com certas condições, contudo se ter mais de 1 registro que cumpra com elas, a fórmula devolverá o atributo de retorno correspondente ao primeiro registro encontrado (sem maximizar nem minimizar um valor no conjunto de registros que cumpram com as condições). A sintaxe Find é: Find (Expressão de retorno, [Condição explícita], [Valor por default) [if Condição de disparo] Observar que a expressão de retorno neste caso se escreve no primeiro parâmetro da
  • 12. 108