0017 - Tela que Executa Consultas SQL via AdvPL
Sobre:
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.
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;