Pular para o conteúdo principal

Postagem em destaque

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu

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 deste blog

BlackTDN :: RLeg ~ Desvendando a Função ParamBox

Para quem precisar desenvolver uma interface de entrada de dados, coisa rápida, e não quer ter aquele trabalhão danado que todos já sabemos, o Protheus tem uma função que ajuda muito, é uma interface semelhante a função Pergunte, porém com muito mais opção de objeto de entrada de dados, alias até colocar o scrollbox desta interface com todos os objetos em outra MsDialog ou Wizard é simples. Vejam o exemplo abaixo, boa sorte! Rleg. //---------------------------------------------------------- // Função exemplo utilizando a função ParamBox() //---------------------------------------------------------- User Function xParamBox() Local aRet := {} Local aParamBox := {} Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"} Local i := 0 Private cCadastro := "xParambox" // ---------------

BlackTDN :: Customizando a interface de Login no Protheus e by You

A publicação “ BlackTDN :: By You e sua nova tela de login ”  de nosso amigo OBona deu o que falar e, em função disso, esse que a muito não vos escreve resolveu criar uma versão onde será possível personalizar, “por completo”, a tela de login no Protheus/by You. Considerando que OBona já havia “mapeado, identificado e customizado” as imagens peguei-as emprestadas para o exemplo que se segue: O primeiro passo para a customização “total” da interface de login do Protheus/by You será implementar o “Ponto de Entrada” ChgPrDir (Diretório de impressão) . Usaremos esse PE juntamente como programa U_FindMsObject.prg (apresentado pela primeira vez em: Protheus :: ADVPL : The Container : Presents Pandora's box ). Diferente do exemplo proposto por OBona, que substitui, durante o processo de compilação, as imagens padrões do sistema (excluindo-as) por imagens customizadas (com o mesmo nome) este novo exemplo mantém, no RPO, as imagens padrões adicionando novas imagens customizadas que serã

Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login

Ferne$ perguntou: "...é possível abrir alguma rotina do sistema sem solicitar login ao usuário, como por exemplo a rotina MATA010..." Sim Ferne$, é possível sim. Abaixo um Exemplo para a Chamada à função MATA010 sem a necessidade de Login no sistema. #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" /*/ Funcao: MATA010Ex Data: 30/04/2011 Autor: Marinaldo de Jesus Descricao: Executar a Funcao MATA010 diretamente sem a necessidade de LOGIN no Protheus Sintaxe: 1 ) U_MATA010Ex ( Chamada diretamente na Tela de Entrada do Sistema ) ; ou 2 ) totvsclient.exe -q -p=u_MATA010Ex -a=01;01 -c=rnp_local -e=rnp -m -l ( Chamada Via Linha de Comando ) /*/ User Function MATA010Ex( cEmpFil ) Local aEmpFil Local bWindowInit := { || __Execute( "MATA010()" , "xxxxxxxxxxxxxxxxxxxx" , "MATA010" , "SIGAFAT" , "SIGAFAT", 1 , .T. ) } Local cEmp Local cFil Local cMod Local cModName := "SIGAFAT" DEFA