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

BlackTDN :: Excel :: Usando Microsoft Query para Consultas parametrizadas :: Segunda Parte

… Continuação de BlackTDN :: Excel :: Usando Microsoft Query para Consultas parametrizadas.

No post anterior, vimos como utilizar o aplicativo MSQRY32.EXE para elaborar consultas parametrizadas para o Microsoft Excel. Veremos agora o mesmo processo utilizando o Próprio Microsoft Excel.

Abra o Microsoft Excel e configure as planilhas como “consulta_parametrizada” e “parâmetros”

image

Na planilha parâmetros inclua as seguintes células:

image

Formate o Intervalo B1:B2 como “Texto” e informe-lhes valores iniciais, por exemplo: 01/01/2011 para (B1) e 31/03/2011 para (B2)

image

image

image

Agora, selecione a aba “consulta_parametrizada”, posicione o ponteiro do mouse na célula (A1) e selecione, a opção do menu, “Dados\Obter Dados Externos\De Outras Fontes\Do Microsoft Query

image

Selecione a sua “Fonte de Dados” e depois clique em OK.

image

Selecione a Tabela, e escolha os campos para a consulta. No meu caso selecionarei a Tabela SE2010 e todos os campos (apenas para habilitar o botão avançar)

image

Poderemos adicionar Filtros à consulta através do “Assistente de Consulta – filtrar dados” mas, para o exemplo, e considerando que a “Consulta” será elaborada “manualmente” apenas clique em “Avançar”

image

Poderemos, também, classificar os dados de acordo com determinada(s) coluna(s). No nosso caso faremos a classificação “manual” então, bastará clicarmos em “Concluir”.

image

Selecione a opção “Exibir dados ou editar consulta no Microsoft Query” e confirme clicando em “Concluir”

image

Feito isso, os os dados serão apresentados de acordo com uma consulta “pré-elaborada” pelo próprio “Assistente” e de acordo com a Tabela e Campos Selecionados. Vamos ignorá-la e montar a nossa própria.

image

Para isso, clique no botão “SQL”

image

Usarei a mesma “Query” utilizada no post anterior.

SELECT
     SE2.E2_FILIAL,
     SE2.E2_PREFIXO,
     SE2.E2_NUM,
     SE2.E2_PARCELA,
     SE2.E2_TIPO,
     SE2.E2_FORNECE,
     SE2.E2_LOJA,
     SE2.E2_NOMFOR,
     CONVERT(CHAR(10),CONVERT(datetime,SE2.E2_EMISSAO,103),103) AS 'E2_EMISSAO',
     CONVERT(CHAR(10),CONVERT(datetime,SE2.E2_VENCTO,103),103)  AS 'E2_VENCTO',
     CONVERT(CHAR(10),CONVERT(datetime,SE2.E2_VENCREA,103),103) AS 'E2_VENCREA',
     CONVERT(CHAR(10),CONVERT(datetime,SE2.E2_BAIXA,103),103)   AS 'E2_BAIXA',
     SE2.E2_BCOPAG,
     SE2.E2_VALOR,
     SE2.E2_NATUREZ
FROM
     SE2010 SE2
WHERE
     (SE2.D_E_L_E_T_='*')
AND
     (
               SE2.E2_EMISSAO
          BETWEEN
               CONVERT(CHAR(8),CONVERT(datetime,?,103),112)
          AND
               CONVERT(CHAR(8),CONVERT(datetime,?,103),112)
     )
ORDER
     BY SE2.E2_FILIAL,
     SE2.E2_PREFIXO,
     SE2.E2_NUM,
     SE2.E2_PARCELA,
     SE2.E2_TIPO,
     SE2.E2_FORNECE,
     SE2.E2_LOJA

image

Depois de confirmar o SQL, informe os parâmetros iniciais.

image

image

Agora vamos “Nomear” os parâmetros “Formalmente” (não é necessário mais uma boa prática uma vez que irá auxiliar ao usuário a identificar o que deverá ser informado nos parâmetros). Para isso, clique em “Exibir\Parâmetros…”

image

Irei denominar o primeiro parâmetro de “data_da_emissao_inicial” e o segundo de “data_da_emissao_final”. “OK” para confirmar.

image

Salve a consulta

image

E agora vamos retornar ao Microsoft Excel

image

Defina a forma de exibição dos Dados.

image

e agora vamos vincular os parâmetros da consulta a “Células” do Microsoft Excel. Selecione o Menu Dados\Conexões

image

Clique no botão propriedades:

image

Seleciona a aba “Definições”

image

e, depois, clique no botão “Parâmetros”.

image

Selecione o primeiro parâmetro (data_de_emissao_inicial) e selecione a opção “Obter valor na seguinte célula”

image

Clique para localizar a Célula

image

e, na planilha “parâmetros” selecione a Célula correspondente ao primeiro parâmetro

image

e marque a opção “Atualizar automaticamente quando o valor da célula for alterado”

image

faça o mesmo procedimento para o segundo parâmetro.

image

image

Confirme a vinculação dos parâmetros

image

e, posteriormente, confirme as alterações efetuadas nas “Propriedades da Conexão”

image

e, finalmente, clique no botão “Fechar”

image

Para alterar o intervalo de dados da consulta, vá até a planilha “parâmetros” e defina um novo intervalo

image

image

Pronto, a planilha com a consulta será atualizada, automaticamente, com o novo intervalo de dados.

image

Agora configure a forma de atualização da planilha de dados:

image

image

image

image

Agora basta salvar a planilha para futuras consultas.

image

Para forçar a atualização dos dados basta clicar em “Dados\Atualizar Tudo”

image

[]s

иαldσ dj

Comentários

  1. mano.. quem eh TDN para chegar perto desse blog.

    Existe AdvPL antes do blog, e depois do blog.

    ResponderExcluir
  2. Fala ae Lee!!!! Essas suas brincadeiras sempre acabam indo longe... assim disse nosso querido amigo "PoweShell".. Abraço!!!

    ResponderExcluir
  3. ...Isso elimina um gargalo em empresas que disponibilizam planilhas para usuarios executarem querys.
    Pois com as querys predefinidas e sem filtro, a busca era realizada em toda tabela, onerando, rede, servidor, desktop, etc... Geralmente essas planilhas tem tamanho absurdo, cheguei a ver planilhas de 2GB, onde o usuario atualizava a mesma constantemente e realizava o filtro nativamente no excel.

    ResponderExcluir
  4. E, além disso, alivia o processamento no Protheus, dbAccess, não consome licença e o usuário (normalmente gerente contábil, financeiro, diretor) ficam muito, mas muito felizes)...

    ResponderExcluir
  5. ADVPL antes do blog e depois do blog, fiquei curioso!!! Explane. O que quer dizer?

    ResponderExcluir
  6. ...o blog eh como uma marretada na mente!

    Abre a mente,,, uma pessoa poderia aprender sozinha oque eh mostrado aqui, mas levaria um tempo maior.
    Aqui,, o cego que quer.. volta a enxergar, ou, aquele que enxerga, melhora a visão!

    Sacaste minha explanação?

    (A Totvs irá comprar este BLOG.)
    ..e minha parte quero em cerveja!

    ResponderExcluir
  7. Anônimo, acho que o termo "marretada" não cabe aqui. Observe:

    "Quando se fala em mente, fala-se muito na palavra relaxamento “é preciso relaxar!” , este é um chavão muito ouvido no popular, mas tem um grande fundo de verdade. Em toda a atividade mental o esforço derrota a si mesmo . Pois quanto maior for o esforço, menor é o seu resultado. No plano físico funciona de outra forma, ao contrario mesmo: quanto maior o esforço, maior o resultado, mas em muitos casos as leis da mente são o inverso das leis da matéria.

    No físico, quanto mais força você usa na marreta, mais pedra você quebra com facilidade. O exato oposto ocorre com a mente, pois qualquer tentativa de pressão mental levará ao fracasso, pois começa a gerar uma tensão e com isto a mente para de funcionar criativamente. Quando você tenta forçar as coisas mentalmente, simplesmente pára o seu poder criativo. Para permitir que a sua mente volte a ser criativa, deve retirar-lhe a tensão por meio de um relaxamento consciente."(http://www.psicenter.psc.br/leis_mentais.htm).

    Então, a meu ver, BlackTDN é, na verdade, um relaxamento mental. Onde aprendo com o mínimo esforço. Entendo, compreendo. Assimi-lo. Sem estresse, sem "marretada". Apenas com textos "leves" e exemplos didáticos e práticos. Pra mim isso é BlackTDN. Ja TDN... (sem comentários)

    ResponderExcluir
    Respostas
    1. Não me recordava de ter leitores tão eloquentes aqui no BlackTDN. Esse foi fundo.

      Excluir
  8. Caracas, anos de Microsiga/TOTVS, como pude viver tanto tempo se estas dicas, milhares de parabéns, sensacional. Rleg.

    ResponderExcluir
  9. SENCACIONAL! DIRETO E LÓGICO. OBRIGADO PELO POST

    ResponderExcluir

Postar um comentário

Postagens mais visitadas