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
Ainda bem que eu sigo o seu blog... valeu Naldo por compartilhar essa belíssima informação.
ResponderExcluirSaudações Nordestinas mais especificamente de Alagoas.
Abraço.
Muito bom o material. Bem mais organizado que as formas tradicionais de desenvolvimento ADVPL. Pena que não tem funções para desenvolvimento de relatórios.
ResponderExcluirPara relatórios, ultimamente, utilizo o IReport baseado no JasperReports.
ResponderExcluirAfinal, o protheus não é uma aplicação especializada na emissão de relatórios.
[]s
иαldσ dj
Você tem algum material ou algum post relacionado aqui no blog?
ResponderExcluirTenho planos para uma série de 'posts' sobre o IReports. Ainda não tive tempo para monta-la. Acho que tenho uma documentação em algum lugar. Se acha-la te passo o link.
ResponderExcluir[]s
иαldσ dj
Estou estudando o material mas não encontro a include FWMVCDEF
ResponderExcluirOnde posso encontra-la?
Poderia me envia-la por email?
Att,
Henrique
henrique@esdeva.com.br
Só com o pessoal da Totvs.
ResponderExcluir[]s
иαldσ dj
Boa tarde Naldo.
ResponderExcluirVocê pode me tirar uma dúvida por favor?!
O conceito MVC funciona na versão 10?
Outra coisa, seguindo a apostila, como eu faço para que dentro do meu fonte exemplo: ( User Function teste01() ) as funções Static Function ModelDef, ViewDef sejam usadas, pergunto isso pois fiz a declaração dessas duas funções dentro da minha User function e não funcionou, mais também não apresentou nenhum erro.
Desculpa te incomodar e obrigado por responder.
Abraço.
Este comentário foi removido pelo autor.
ExcluirBom dia Talvane.
ExcluirNão sei se ainda está com dúvidas, mas respondendo a sua pergunta o MVC funciona sim na versão 10, mas precisa baixas os arquivos include (.ch) no portal.
Sobre as funções ModelDef e ViewDef, você não precisa chamar elas na sua função... Elas são chamadas automaticamente se você fizer a declaração correta do menu no array aRotina, que deve estar declarado da seguinte forma na função Static Function MenuDef()
// ----------------------------------------
User Function myFunction()
Private aRotina := MenuDef()
.
.
.
Return Nil
// ----------------------------------------
Static Function MenuDef()
Local aRotina := {}
ADD OPTION aRotina
Title 'nome_do_item_no_menu'
Action 'VIEWDEF.nome_do_arquivo_fonte'
OPERATION valor_que_define_a_operacao_a_ser_executada(inclusão,alteração,etc)
ACCESS valor_que_define_o_nivel_de_acesso
Return aRotina
// ----------------------------------------
Static Function ViewDef()
Local oView
Local oModel := FWLoadModel("nome_do_arquivo_fonte")
.
.
.
Return oView
// ----------------------------------------
Por definição o sistema vai chamar a rotina ViewDef do arquivo fonte definido no array aRotina Action 'VIEWDEF.nome_do_arquivo_fonte', que por sua vez usará as definições do ModelDef do arquivo fonte definido na função ViewDef (oModel := FWLoadModel("nome_do_arquivo_fonte"))
Espero ter ajudado.
Talvane,
ResponderExcluirAcredito que sim, mas só a Totvs para ratificar. Provavelmente dependerá da atualização de algum Framework. Entre em contato com eles.
[]s
иαldσ dj
Não está mais disponivel o download do tutorial ...
ResponderExcluirLeonardo, o "link" foi corrigido. Apontava para o antigo TDN
ExcluirNaldo,
ResponderExcluirSoube o que era MVC através dessa pagina. Muito interessante.
Li toda a apostila, e fiz alguns programinhas.
Agora estou tentando usar o comando NEW MODEL, e não tem funcionado direito.
Voce poderia me dizer o que há de errado com o codigo abaixo?
User Function COMP043_MVC()
Local oBrowse
NEW MODEL ;
TYPE 3 ;
DESCRIPTION "Pedidos" ;
BROWSE oBrowse ;
SOURCE "COMP043_MVC" ;
MODELID "MDCOMP043" ;
MASTER "SC5" ;
DETAIL "SC6" ;
RELATION { { 'C6_FILIAL', 'xFilial( "SC6" )' }, { 'C6_NUM' , 'C5_NUM' } } ;
ORDERKEY SC6->( IndexKey( 1 ) )
Return NIL
O problema era q eu estava testando pelo cadastro de formulas, so funciona se adicionar ao menu.
ResponderExcluirValeu!
Naldo, procurei em vários lugares e inclusive com a Totvs, como realizo o doubleclick com o MVC?
ResponderExcluirDaniel a classe especializada em tratar a interação com o usuário é a TControl. Nela encontramos as propriedades:
ExcluirDATA bLClicked
DATA bLDblClick
DATA bRClicked
As classes de interface TDialog, TWindow, TBitMap, Tetc... herdam essas propriedades e podem implementar controles específicos. Considerando que a interface MVC tem interação com o usuário é possível sim utilizar, se implementado pela TOTVS, os eventos acima relacionados. Então terá que identificar em que momento quer usar o evento relacionado a bLDblClick e implementá-lo.
Também estou precisando disso.
ExcluirNaldo! Por acaso, você teria um exemplo de como fazer isso?
Naldo, muito bom seu site, contrui uma app mvc aqui e gostei muito, mas tem uma coisa que estou apanhando um bocado, na tabela do browse tenho campo virtuais que são preenchidos de acordo com uma consulta padrão na hora da edição.
ResponderExcluirPorem quando volto para consultar o cadastro ele não traz os dados, mesmo eu usando o "inic Browse" no configurador do campo.
Como eue trago estes valores ?
Boa tarde!
ResponderExcluirGelera, oque MODELID está esperando, sei que é uma string mas oque devo passar?
não tem na documentação. algem aberia me informar?
cid:421714164268
STRING
STRING
Boa tarde. Não sei se vc vai poder me ajudar. Criei um programa em MVC para o modelo3 com duas tabelas customisadas. As duas são exclusivas. Ai vem a duvida. somente na tabela PAI é que é gravada a filial na tabela filha não. Detalhe o relacionamente entre as duas é a filial e um codigo, que digito na tabela PAI. Esse codigo via pra tabela Filha, mas a filial não
ResponderExcluir