No post de hoje, vou mostrar uma tela que montei que executa queries (seja SELECT, UPDATE, INSERT, etc). Ideal para quem tem clientes que trabalham com TCloud.
O conceito da tela, nasceu da necessidade de alguns alunos que trabalham com TCloud em poder executar algumas expressões em SQL para testar. Então eu montei esse fonte o zTiSQL, sendo que é possível acionar ele no programa inicial (colocar zTiSQL ao invés de SIGAMDI). Ou inserir ele em alguma tecla de atalho, por exemplo, Shift + F8 e abrir em qualquer tela do sistema.
Abaixo irei detalhar os principais recursos da tela (clique no título da aba para ver o conteúdo).
Abrir e Salvar
Essa primeira opção, você pode abrir arquivos com extensão .sql ou até mesmo salvar o texto da query digitada em um novo arquivo SQL, definindo a pasta de sua escolha pelo sistema operacional.
Executar
Para executar uma query, você pode selecionar o texto desejado e apertar F5 (ou clicar no botão executar). Ou se preferir, você pode pressionar F5 diretamente, que irá executar todo o texto digitado.
Se a query tiver alguma falha, irá apresentar uma mensagem de falha.
Se estiver tudo correto, ao executar, será carregado a grid, e no rodapé as informações de tempo gasto e o total de linhas.
Agora se for uma query de manipulação, como UPDATE, também exibirá erros caso exista algum na query.
Do contrário, se tiver tudo correto, irá exibir uma mensagem de sucesso.
Ao executar queries que manipulam dados como UPDATE, INSERT INTO e DELETE, será exibido uma mensagem se deseja realmente prosseguir.
Já para queries de SELECT, se não houver o comando TOP ou não tiver um WHERE, será perguntado se deseja realmente executar, pois o resultado pode demorar.
Existe a possibilidade também, de executar vários UPDATEs, para isso basta separá-los com ponto e vírgula, conforme print abaixo:
Exportar (Excel ou Txt)
Quando uma query estiver executada e seu resultado estiver na grid, é possível exportar o seu conteúdo ao clicar no botão Exportar.
Será exibido uma tela, para selecionar a extensão do arquivo, sendo possível exportar para:
- Excel xlsx – Requer o printer.exe mais novo
- Excel xml
- Arquivo txt
Após escolher o diretório e definir o nome do arquivo, será processado e gerado para exibição.
Gerar Select
Pode ser que haja dúvidas ao montar um SELECT, então o botão Gerar Select tenta suprir essa necessidade.
Ao clicar nele, é exibido uma tela de parâmetros com Tabela, Quais campos, Número de linhas e qual ordenação.
Ao confirmar, é gerado a query automaticamente no editor.
Gerar Update
Se houver dúvidas em como montar um UPDATE, então o botão Gerar Update pode suprir essa necessidade.
Ao clicar nele, é exibido uma tela de parâmetros com Tabela, Campo e novo Conteúdo.
Ao confirmar, será gerado a query no editor.
Indentar
Às vezes temos uma query, e queremos indentar seu conteúdo, para ficar melhor legível. Por exemplo, no print abaixo, temos uma query que só tem uma linha:
Ao clicar no botão indentar, ele irá carregar o site Free Formatter já preenchendo o campo da query.
Então basta clicar no botão Format SQL para ver a query indentada.
Buscar campos do Dicionário
Tem uma tecla de atalho na rotina, F3, que exibe uma dialog com todos os campos no sistema, ótimo para quem esqueceu algum nome de campo e precisa por na query. Ao pressionar, será exibido a seguinte tela:
É possível filtrar então campo a campo, ou se inserir 3 caracteres, será filtrado o alias da tabela. A cada campo, basta dar duplo clique para dizer que o campo será usado na query.
Ao confirmar a tela, os campos que foram selecionados, são exibidos na parte de edição de texto.
Pessoal, desde o dia que foi publicado o zTiSQL, ele passou por algumas revisões, irei detalhar abaixo:
- Revisão 01 – Disponibilização do projeto
- Revisão 02 e 03 – Ajustes e correções conforme feedbacks de usuários
- Revisão 04 – Tratativa para definir se irá deixar toda a query maiúscula (SQL Server e Oracle) ou minúscula (Postgre)
- Revisão 05 – Adição da opção de executar SELECT INTO; Ajuste no posicionamento da tela via programa inicial
- Revisão 06 – Tratativa para campos muito grandes (quando passa de 10 caracteres), para exibir no rodapé um aviso
- Revisão 07 – 09/07/2022 – Adição de histórico das queries executadas; De execução de vários UPDATEs separados por ponto e vírgula; De Conversão automática de campos LGI e LGA;
- Revisão 08 – 20/07/2022 – Adição de tratativa para ao usar o método RetTextSel, quebrar o texto com espaço vazio e mensagem se usar comentário com –;
- Revisão 09 – 20/01/2023 – Adição de realização de backup dos atalhos F3 e F5, para que se ao usar dentro do SIGAMDI / SIGAADV, não ocasione problemas;
Esse e outros Fontes Premium, estão disponíveis para os assinantes dos Cursos do Terminal de Informação, saiba mais em terminaldeinformacao.com/assinatura.
Ou se preferir, compre esse fonte premium de modo avulso via Mercado Pago (se tiver interesse entre em contato via e-Mail que lhe passamos o valor avulso e as formas de pagamento).
Bom pessoal, por hoje é só.
Abraços e até a próxima.
SHOW DE BOLA DANIEL SAN, EU TAMBEM MONTEI UMA TELA QUE FAZ ISSO, A MINHA SÓ NÃO IDENTA A QUERY ,MAS O RESTO É QUASE IGUAL.
Ah entendi mister Patini.
Valeu pelo comentário jovem.
Grande abraço.
Uma dica, estava analisando os fontes pois assino a PREMIUM e vi que tem uma parte que filtra os campos reservados R_E_C_N_O_ , R_E_C_D_E_L_ e D_E_L_E_T_. A Totvs criou outros campos reservados para que as tabelas trabalhem com as aplicações como por exemplo o PAINEL FINANCEIRO. Esses campos são S_T_A_M_P_ e I_N_S_D_T_ , se não inserir esses campos no filtro dá problema no Protheus quando vai executar (para o caso de os campos existirem).
Boa tarde Cleber, tudo bem?
Opa obrigado pela contribuição.
Já fiz o ajuste no fonte, e subi ele lá na área premium na Hotmart.
Grande abraço.
Programa sensacional Atiílio, existe alguma forma de nesse programa gravar os logs do que cada usuário executou?
Fala Fernando, tudo joia?
Sim, inclusive ele já grava o histórico de queries executadas localmente, dentro da função fSalvHis.
O que você pode fazer, é dentro dessa função, você adicionar um RecLock em uma tabela customizada sua, gravando a data, a hora, o usuário e a query que ele executou.
Um grande abraço.
Sensacional Atílio, será que para a próxima melhoria conseguimos gravar um log do que o usuário realizou?
Abraços.
Bom dia Fernando, tudo joia?
Se você quiser gravar o log, na função fSalvHis adicione um RecLock para uma tabela sua de logs, similar ao trecho abaixo:
Um grande abraço.
Ola, como poderia fazer a identacao no texto da consulta, tem documentação alguna função para isso ?
Bom dia Gabriel, tudo joia?
Olha, você poderia criar a lógica manualmente, tipo encontrou tal texto, pula pra linha de baixo ou adiciona espaços a esquerda e tal.
Ou você pode abrir um site de terceiros, já com a query preenchida (que é o caso do nosso fonte), se você ir na nossa função fIndentar, note que ele abre o site FreeFormatter passando a query SQL para formatação.
Ai nisso ao abrir o site, a query já vem preenchida e é só confirmar para indentar.
Um grande abraço.