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 IDE:: Compilação Condicional

Conforme prometi anteriormente, começarei a escrever à respeito de detalhes interessantes sobre o Protheus e que muita gente desconhece. Utilizarei como exemplo, desse e dos próximos artigos, o código fonte do game sudoku (outros, se necessário para o bom entendimento, poderão ser disponibilizados).

Hoje falarei sobre a compilação condicional no Protheus IDE e, de lambuja, mostrarei como se faz para adicionar a opção de "Compilação de Versão" ao "Totvs Development Studio" (nome bonitinho que inventaram na versão 10 para o nosso conhecidíssimo IDE).

Vamos ao que interessa. Como a maioria dos bons compiladores, o Protheus IDE possui o recurso de "Compilação Condicional" que nada mais é do que "diretivas/parâmetros" que são passadas ao pré-processador (sim, o Protheus tem um pré-processador) de forma a verificar se um determinado trecho do código irá fazer parte ou não, da compilação.

As diretivas de compilação condicional são semelhantes às do "clipper" e de outras linguagens no padrão xbase. As que são verificadas com mais freqüência, no Protheus, são aquelas relacionadas ao Tipo de Banco de Dados que será utilizado. Por exemplo:

#IFDEF TOP
//..Inclua esse trecho do código
#
ENDIF

Ou seja, o código entre #IFDEF#ENDIF só será, efetivamente compilado se a diretiva TOP estiver definida. No Protheus, a grande maioria das diretivas já estão embutidas no próprio IDE, que identifica qual o tipo de repositório em uso para defini-las.

As diretivas são interessantes e também são um ótimo recurso para o progamador Advpl que se bem utilizadas auxiliarão na depuração do código e/ou condicionarão a execução de um determinado trecho do programa de acordo com a sua definição ou não.

Por Exemplo, no programa u_sudoku.prg, em vários trechos do código existe a seguinte verificação:

#IFNDEF SODUKO_NO_CHANGE
//...
#
ENDIF

SODUKO_NO_CHANGE não é uma diretiva padrão do sistema mas uma definida pelo humilde programador que vos escreve. Ela foi usada para auxiliar-me a depurar o jogo. Ou seja, quando ela está definida, não é possível joga-lo efetivamente, apenas ver os valores de cada jogo.

Pergunta: Se SODUKO_NO_CHANGE não é uma diretiva do sistema, como Defini-la?

Existem duas formas, uma seria: #DEFINE SODUKO_NO_CHANGE e outra através de parâmetro do compilador /D ex.: /DSODUKO_NO_CHANGE. Na prática prefiro a segunda forma.

A imagem abaixo mostra como definir uma diretiva de compilação condicional do Protheus IDE.


A diretiva é definida na opção "Parâmetros".

As diretivas poderão ser verificadas como:

#IFDEF
//se for para testar se a
Diretiva está definida
#
ENDIF

ou

#IFNDEF

//pra verificar se a
Diretiva não está definida.
#
ENDIF


(Clique na imagem para amplia-la)

Observe que na imagem acima tem a opção "Compilar Versão" e que no seu Protheus IDE essa opção, provavelmente, não aparece. Para disponibiliza-la proceda da seguinte forma:

Feche o IDE, abra o arquivo totvsdevstudio.ini (para a versão 10 do Protheus IDE) ou, se estiver utilizando versão anterior do Protheus IDE (mp8,ap7,etc) o mp8ide.ini ou ap?ide.ini e inclua a seguinte chave:

[Version Generator Window]
Created=1
Left=0
Top=0
Height=159
Width=1272
Visible=1
Dock Host Site=DockSiteBottom
Dock Orientation=0
File
Name=

Salve o arquivo .ini e reabra o IDE. A aba "Compilar Versão" estará disponível. Mas para que serve essa configuração? Para a organização da forma de trabalho. Para que ter um único projeto (.prj) com todos as customizações, de todos os módulos, se podemos organizá-los por módulo (como no exemplo da imagem acima). E agora, já organizei os programas em seus respectivos projetos, como compilá-los todos de uma vez. É aí que entra essa opção. Selecione todos os projetos que deseja compilar e compile-os em uma só tacada. Essa opção permite gravar um "script" de compilação que possui a extensão .ver (de versão, acredito eu).

Comentários

Postagens mais visitadas