Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: Como Criar Relatórios de Cotações com Dados Agrupados Usando SQL

img: DALL·E 2024-08-09 07.00.00 - A high-quality image showcasing a detailed SQL query being written in a code editor, such as VS Code, on a dark theme background. ... ## Como Criar Relatórios de Cotações com Dados Agrupados Usando SQL Quando trabalhamos com sistemas ERP e precisamos gerar relatórios de cotações que apresentam dados de múltiplos fornecedores, é comum encontrarmos a necessidade de pivotar registros que, originalmente, são apresentados de forma vertical. Isso é especialmente útil quando o objetivo é comparar preços ou condições de diferentes fornecedores para um mesmo produto em uma única linha do relatório. Neste artigo, vamos explorar uma abordagem para transformar registros verticais em colunas, facilitando a impressão de relatórios que consolidam informações de vários fornecedores em uma única linha. Vamos utilizar SQL com técnicas de pivotagem, e ao final, mostraremos como estender essa técnica para um número variável de fornecedores. ### Estrutura do Relatór

Protheus :: Programação Básica em Advpl “Combo XII”

Operadores Unários:

O Advpl suporta um sinal negativo ( o chamado operador unário). Ele tem a maior prioridade entre os operadores aritméticos. Por Exemplo:

  • - 1 + 2
  • resulta 1 e não -3.
O Advpl suporta os operadores de incrementos e decrementos unários ++ e --. O Operador ++ acrescenta 1 a seu operando, -- subtrai 1. Ambos têm parceiros nas instruções regulares de atribuições. Exemplo:

nContador++ é idêntico a nContador := nContador + 1

Entretanto, a vantagem desses operadores unários é o fato de serem concisos e de poderem ser utilizados para deferir a operação até depois de processado o valor. Por Exemplo, para carregar um array de campo CPnome de cada registro de um banco de dados chamado Alunos, poderíamos escrever:

Local acPNomes
Local nContador := 1

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ nContador++ ] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

O Subscrito do array usa o valor de nContador, depois acrescenta 1. Dizemos que o ++, neste caso, é um operador pós-determinado. Você pode usá-lo como um operador de prefixos, em cujo caso o valor será incrementado ANTES de ser usado. Por exemplo, a codificação anterior deixa o nContador com um valor superior em 1 unidade ao número de registros processados. Para deixá-lo com o valor real, poderíamos escrever:

Local acPNomes
Local nContador := 0

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ ++nContador] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

No modo de prefixo, o computador aplica o incremento antes de usar o valor.

Comentários

Postagens mais visitadas