quinta-feira, 5 de fevereiro de 2026

Relatórios HTML Direto do SQL Server: Simples, flexível e sem ferramentas de terceiros

                                                                                                          Imagem gerada via IA



Gerar relatórios é uma necessidade comum em praticamente qualquer aplicação corporativa. Em muitos cenários, a primeira ideia é recorrer a ferramentas externas, bibliotecas proprietárias ou motores de relatórios complexos. Mas… e se fosse possível gerar relatórios completos usando apenas SQL Server, HTML e CSS puro?

Foi exatamente com esse objetivo que esta procedure foi criada.


A proposta

A SP_GerarHtmlRelatorioGenerico foi desenvolvida para transformar qualquer SELECT ou VIEW em um relatório HTML, totalmente formatado, sem depender de soluções externas.
A ideia central é simples:

  • O SQL Server gera os dados

  • O próprio SQL monta a estrutura HTML

  • O CSS define o visual

  • A aplicação apenas consome o HTML pronto

Essa abordagem é especialmente útil em cenários como:

  • Relatórios enviados por e-mail

  • Visualização em sistemas web internos

  • Aplicações legadas que não utilizam motores modernos de relatório

Apesar de o HTML puro ter suas limitações, quando combinado com CSS e JavaScript, ele se torna extremamente poderoso. Com criatividade, é possível evoluir esse modelo para incluir interações, destaques visuais e até gráficos embutidos no relatório.



Como a procedure funciona

A procedure recebe três parâmetros principais:

  • @SqlSelect: a instrução SQL responsável por retornar os dados

  • @TituloRelatorio: título exibido no topo do relatório

  • @Html (OUTPUT): saída final contendo todo o HTML gerado

Internamente, ela executa três etapas bem definidas:

  1. Descoberta automática das colunas
    A procedure identifica dinamicamente as colunas retornadas pelo SELECT, sem necessidade de mapeamento manual.

  2. Montagem do HTML (thead, tbody e tfoot)
    Cada coluna gera automaticamente seu <th> e seus <td>, respeitando regras de alinhamento e formatação.

  3. Geração do documento HTML completo
    O resultado final já vem com <html>, <head>, <style> e <body>, pronto para ser exibido ou enviado



Alinhamento e formatação inteligente

O script já traz regras automáticas para melhorar a legibilidade:

  • Valores numéricos → alinhados à direita

  • Textos → alinhados à esquerda

  • Datas, data/hora e IDs → centralizados

Essas regras podem ser facilmente ajustadas conforme o padrão visual desejado.



Somatórios automáticos no rodapé

Um detalhe interessante é o suporte nativo a totalização de campos numéricos.
Para que uma coluna seja somada no rodapé do relatório, basta adicionar |S ao apelido da coluna no SELECT.

Exemplo conceitual:

SELECT ValorReceber|S, ValorPago|S FROM ...

A procedure detecta automaticamente essa marcação e gera o <tfoot> com os totais formatados.



Sobre a saída do HTML

Para melhor visualização do HTML gerado, recomenda-se configurar a ferramenta de consulta (SSMS, por exemplo) para exibir o resultado como texto, preservando a identação.

A identação não segue rigorosamente o padrão HTML oficial — ela existe apenas para facilitar a leitura humana.



Segurança: atenção ao SQL Injection

Ponto crítico
O parâmetro @SqlSelect não deve aceitar entrada direta do usuário.

Permitir que usuários finais informem o SQL abre brechas sérias de SQL Injection.
O uso correto pressupõe que:

  • Apenas suas aplicação chame a procedure

  • O SQL seja previamente validado

  • Ou o relatório seja baseado em SELECTs controlados (views, templates fixos, etc.)



Compatibilidade e versão do SQL Server

Este script foi desenvolvido e testado no SQL Server Express 2022.
Entretanto, ele utiliza recursos introduzidos em versões específicas:

  • STRING_AGG → disponível a partir do SQL Server 2017 (14.x)

  • sys.dm_exec_describe_first_result_set → disponível a partir do SQL Server 2012

Caso você utilize versões anteriores, é possível adaptar o código:

  • Substituir STRING_AGG por FOR XML PATH('') + STUFF

  • Utilizar tabelas temporárias no lugar da DMV




Link do script aqui 👇


Conclusão

Essa procedure mostra que o SQL Server pode ir além de simplesmente armazenar dados.
Com uma abordagem criativa, é possível gerar relatórios visuais, organizados e reutilizáveis, sem depender de ferramentas externas.

HTML pode parecer simples, mas quando bem utilizado, entrega resultados surpreendentes — e o banco de dados pode ser parte ativa desse processo.

Se você gosta de soluções enxutas, controle total e menos dependências, essa abordagem certamente merece um lugar no seu arsenal técnico.                                                                


                                                            Espero ter ajudado e principalmente, simplificado

terça-feira, 12 de dezembro de 2023

Pagamentos com cartão de crédito recorrente via API.

 

  Fonte imagem (pixnio.com)                     


Você sabia que é possível efetuar compra com cartão de crédito sem consumir seu limite total?


Isso mesmo, essa prática é conhecida como compra no cartão de crédito recorrente.
Na verdade essa forma de pagamento já é praticada a muito anos por diversas empresas e você já ouviu falar muito delas. Entre elas estão: Netflix, Microsoft, Google, HBO, Claro, Vivo, Smart Fit...
Talvez você conheça por outros nomes, pagamento por assinatura ou pagamento recorrente.

Um ponto muito importante é que essa função normalmente se aplica a serviços ou aluguel, dificilmente você verá vinculada a um produto. Isso porque o risco de inadimplência se igualaria a venda de um produto no boleto. A venda em cartão de crédito recorrente não gera garantias de um recebimento como na venda comum de um cartão de crédito. Vou exemplificar abaixo.

Cartão de crédito comum:  
Valor do produto/serviço "A": 400,00.
Limite do cartão antes da compra do produto/serviço "A": 1.500,00.
Limite do cartão após da compra do produto/serviço "A": 1.100,00.
Nrº de parcelas do produto/serviço "A": 4.
Note que nesta modalidade, independente do Nrº do parcelamento o limite do cartão é consumido de forma total do limite do cartão.

Cartão de crédito recorrente:  
Valor do produto/serviço "A": 400,00.
Limite do cartão antes da compra do produto/serviço "A": 1.500,00.
Limite do cartão após da compra do produto/serviço "A": 1.400,00.  
Nrº de parcelas do produto/serviço "A": 4.
Já utilizando o recorrente o valor a subtrair do limite do cartão será apenas o valor do produto dividido pelo Nrº do parcelamento.
Se o Nrº negociado no parcelamento fosse de 10X, o limite do cartão ficaria em 1.460,00. Isso porque só subtrairia 40,00 do limite.



Risco de inadimplência.

O risco de inadimplência ainda existe na modalidade cartão de crédito recorrente, isso porque o limite do cartão pode ser atingido antes do lançamento da recorrência. O risco ainda é menor que na modalidade boleto, pois, se a pessoa possui um cartão de crédito significa que uma financeira já fez análise de crédito anteriormente e liberou um cartão a ela. 



Empresas que operam com cartão de crédito recorrente.

Atualmente existe uma infinidade de empresas que trabalham com a modalidade recorrente, alguns exemplos são: Cielo, Vindi, Pague seguro e outras. Para essa escolha leve em conta alguns aspectos antes da contratação do serviço.
1 - Qual a taxa praticada?
2 - Quanto é seguro os serviços desta empresa?
3 - Qual tempo que estão operando no mercado?
4 - Por último e não menos importante. Como é o suporte deste empresa?

Lembre-se, você irá transacionar dados muito sensível através da internet (se atente também a LGPD). 


Uma empresa na qual possuímos uma parceria e funciona muito bem é a Cielo.
- Começando pela documentação do produto que é bem abrangente, clique aqui para acessar.  
- Dois. Estabilidade dos servidores. São vários anos de trabalho e nunca detectamos API fora.
- Três. Opção de "re-tentativas de cobrança". A plataforma te possibilita configurar como deve ser cobrado caso o primeiro pagamento não ocorra, isso de forma automática.
- Por fim, a empresa possui um sandbox para desenvolvedores poder brincar a vontade com as API e ainda conta com vários exemplos prontos para Postman.



Como integrar seu sistema com a Cielo?
O primeiro passo para implementar a solução é solicitar o credenciamento para liberação das chaves que permitirá a integração (Merchant ID e Merchant Key). Para isso, siga os passos abaixo.  

1º É necessário possuir um cadastro ativo na Cielo, caso contrário, clique aqui.  

2º Solicite suas credenciais através do e-mail cieloecommerce@cielo.com.br para o produto e-commerce, vou deixar abaixo um modelo padrão:
Observação importante. O e-mail de solicitação deve ser o mesmo cadastrado na Cielo, este será o qual irá manter a comunicação.

Assunto: Credenciamento e-commerce.

Boa tarde!!

Estamos precisando ativar o serviço de E-commerce para utilização da API 3.0 pelo nosso time de desenvolvimento.

Nosso software integra via API utilizando Merchant ID e Merchant Key para pagamento recorrente.

 

Segue abaixo dados para ativação do serviço 

CNPJ/CPF: Seu_CNPJ (Não é da soft house e sim de que irá fazer a venda) 

Razão social: Sua_Razao (Não é da soft house e sim de que irá fazer a venda) 

Domicilio bancário (banco, agência e conta): 

Nome do proprietário: Cadastrado na Cielo

Nome do desenvolvedor: "Fernando"

E-mail do responsável pela loja: email_do_desenvolvedor@teste.com.br

E-mail e Telefone do desenvolvedor: email_do_desenvolvedor@teste.com.br / (19)9 xxxx-xxxx

URL do Site para pagamento: https://seusite.com.br

E se deseja habilitar algum de nossos serviços adicionais abaixo:

HABILITAÇÃO DE SERVIÇOS

Boleto Bancário *               (   ) SIM ( X ) NÃO

Transferência Eletrônica *  (   ) SIM ( X ) NÃO

Recorrência Programada*   ( X  ) SIM (  ) NÃO

Antifraude *                       (   ) SIM ( X  ) NÃO

Cartão Protegido   (   ) SIM ( X  ) NÃO


Atenciosamente.

3º Você receberá um e-mail de boas vindas com um passo a passo de como acessar suas chaves.
Daí em diante é implementação no sistema o qual fica para outro post. 




                                                                  Espero ter ajudado e principalmente, simplificado






sexta-feira, 8 de abril de 2022

Verdades e mitos sobre a profissão de programador de sistemas

 

  Fonte imagem (create.vista)                     

Abaixo irei responder as dúvidas mais comuns sobre trabalhar com desenvolvimento (programação) de sistemas com base na minha experiência e opinião particular.

Primeira e mais perguntada: Programador de sistemas ganha bem?

R: Sim, por ser uma profissão que não exige ensino superior para ser exercida na prática, vejo como muito bem paga. Existem também diversos fatores que influenciam no valor da remuneração, entre elas estão:
- Experiência profissional.
- Área de atuação, ex: Front end, Back end, Full stack...
- Região do empregador.
- Conhecimento com tipo de desenvolvimento: Web, Desktop, Mobile, API...
- Conhecimento com banco de dados.
- Conhecimento com ferramentas da atualidade: Azure, Google, Amazon, Facebook...

A remuneração pode variar conforme você vai agregando conhecimentos. Segundo google hoje (28/03/2022) a média salarial está em 3.113,00 conforme imagem abaixo:


Na prática esses valores são maiores, não conheço nenhum programador full bom de verdade que ganhe menos de 7.000,00.
 
Segue abaixo print de algumas vagas disponível na data de hoje:






Como pode ver acima existe vaga de 8.000,00 até 18.000,00 por mês. Claro que é para profissionais extremamente experiente, não é um "cursinho grátis" que vai te levar a uma vaga dessas.

Sem contar que você pode fazer uns "bicos", consultorias e projetos externos que iram gerar renda extra.
 
 

Segunda e realista: Programar é para todos?

Não. Muitos vendedores de curso falam que qualquer pessoa pode ser um desenvolvedor de sistema, mais isso não é verdade. Todos podem aprender, mais infelizmente nem todos vão conseguir exercer a profissão, isso porque a maioria desistem antes mesmo de concluir os estudos. É sim uma profissão complexa e desafiadora pois está mudando constantemente e acompanhar a evolução da tecnologia da informação não é uma tarefa fácil.
 
Outro ponto é questão da linguagem, para ser um desenvolvedor de sucesso você precisa dominar mais que uma linguagem, é como aprender inglês e espanhol. A cada linguagem aprendida facilita para o próximo aprendizado mais isso não deixa de ser um novo aprendizado.

Ser um desenvolvedor de sucesso requer muita disciplina, dedicação e muita leitura. Na minha opinião o que te tornará um profissional de destaque nessa área será a persistência, ela te diferenciará dos comuns para o excelentes. Faça o que a maioria não faz para chegar onde a maioria não chega.(Bill Gates).

Se tiver Netflix assista ao episódio Código de programação da série Explicando. Link direto aqui
Lá explica que apenas 1/³ de 1% das pessoas atualmente consegue escrever códigos.


Terceira. Preciso saber inglês?

Não. Saber inglês vai te ajudar muito, pois a maioria das documentações são em inglês.
Mais hoje em dia a maioria das pessoas são fluentes em google translate.


Quarta. É difícil arrumar o primeiro emprego?

Sim. A maioria das empresas não irá te dar um cargo logo de cara, pois a responsabilidade sobre construir parte de um software ou trabalhar com banco de dados é muito grande.
O mais comum é abraçar um estágio e ir ganhando conhecimento até ser promovido.
Depois que tiver experiência profissional, trabalho não irá faltar, um melhor do que o outro. Hoje em dia temos uma demanda muito maior que a oferta, pense nisso.


Quinta. Qual linguagem devo aprender?

Para banco de dados, pode começar com Sql Server, é um banco fácil de usar, integra muito bem com sistemas operacionais e o help está disponível em português. Para saber mais sobre o Sql Server clique aqui ou se quiser instalar para começar a usar clique aqui.

Para construção de software é um pouco mais complexo.
Não vou defender nenhuma linguagem aqui mesmo eu tendo minhas preferências, o importante mesmo é saber que estamos vivendo uma tendência de web e mobile, logo vale buscar uma linguagem que tenha suporte para gerar aplicativos que atendam essa demanda e se possível multi-plataforma (Windows, Android, Linux, IOS...), não que aplicativos desktops iram morrer, mais sua procura passa ser cada vez mais específica.

Vou deixar listado abaixo algumas linguagem fácil e que tenham versões para teste grátis:
- Delphi (versão Community). Linguagem deriva do pascal. Clique aqui.
- Visual Studio Community. Linguagem deriva do C#, IDE da microsoft. Clique aqui.
- Python. É uma linguagem grátis com diversas IDE (paga e grátis). Não é minha área de especialidade pois trabalhei poucas vezes com ele. Então se optar por ela deixo a pesquisa da IDE por sua conta.
 
Talvez você esteja pensando, porque Java não está na lista. Primeiro porque é uma linguagem difícil de aprendizado pois é preciso entender orientações a objetos, segundo precisa entender de padrões de desenvolvimento de sistema. Então, faça o básico. Primeiro caminhe, depois corra.

Obs.: É imprescindível saber um pouco de Html, CSS e Java script se for trabalhar como desenvolvimento web e mobile. Quanto mais conhecimento, melhor poderá ser sua remuneração, lembre sempre disso.
 

Por último e mais importante: Tenha paixão pela área, se você é uma daquelas pessoas que diz que computador não é seu forte, nem perca o tempo estudando isso, pois como dito anteriormente, é uma área que requer muita dedicação e estudo, se for só pelo dinheiro você dirá todos os dias a si mesmo que não vale a pena fazer o que faz.



Espero ter ajudado e principalmente, simplificado