Skip to main content

Programação em SQL (Query)

No agilityflow você pode buscar os dados utilizando SQL, através de queries. As queries devem ser compatíveis com SQL Server 2016. Além disso existem alguns padrões que você deve seguir para obter um melhor resultado no agilityflow. Abaixo estão alguns detalhes importantes.

Função Filter

Sempre que um relatório possuir um filtro, é necessário incluir esse filtro na query que gera os dados do relatório.

Não importa como é a query, ela deve incluir a cláusula where, como a chamada da função Filter. Essa função, possui 3 parâmetros:

Filter (variável_filtro, tabela, campo)

  • variável_filtro: é a variável que o agilityflow criou, após a configuração do filtro.
  • tabela: nome da tabela (definido nos Dados Técnicos) onde se encontra o dado a ser filtrado.
  • campo: é o nome do campo (conforme informado no campo Coluna Banco de Dados SQL) onde a informação que o filtro utiliza se encontra.

No exemplo abaixo, a query lista os campos usu_nome, usu_email e usu_sexo da tabela do sistema de usuário (tbl_usuario) e se inclui a função Filter, usando a variável @sexo aplicada no campo usu_sexo.

select usu_nome, usu_email, usu_sexo from tbl_usuario 
where Filter(@sexo, tbl_usuario, usu_sexo) 

Exemplo de relatório sem filtro

Baseado na query acima, mas sem filtro configurado no relatório.

select usu_nome, usu_email, usu_sexo from tbl_usuario 

Exemplo de relatório com filtro

O mesmo exemplo acima, com o filtro no campo sexo.

select usu_nome, usu_email, usu_sexo from tbl_usuario 
where Filter(@sexo, tbl_usuario, usu_sexo) 

relatorio_filtro.gif

Caso seja criado um novo filtro, basta colocar "and" depois do primeiro Filter, e colocar o segundo Filter. Não importa a quantidade de filtros, desde que sejam adicionados todos os Filter e os and.

select usu_nome, usu_email, usu_sexo from tbl_usuario 
where Filter(@sexo, tbl_usuario, usu_sexo) and
      Filter(@nome, tbl_usuario, usu_nome) and
      Filter(@email, tbl_usuario, usu_email)

ConversãFormatação de Texto Para Decimalnúmeros 

Nome da Função

dbo.CONVERT_TO_DECIMAL(....)format(number,format,idioma)

Parâmetrometro: denumber entrada

varcharPode (100)
Passarser um textonúmero (sóinteiro ou um decimal

Parâmetro: format

Aqui você passa a formatação que deve ser retornada:

'n0' = retorna omeros)mero sem nenhuma casa decimal
'n1' = retorna o número com vírgula1 nacasa separaçãdecimal
'n2' = retorna o denúmero com 2 casas decimais
Exemplo:'n3' 12000.50= retorna o número com 3 casas decimais
'n4' = retorna o número com 4 casas decimais
'n5' = retorna o número com 5 casas decimais
'n6' = retorna o número com 6 casas decimais

Parâmetro: idioma - @sysCurrentLanguage

Aqui você precisa passar o idioma do usuário logado, pois alguns idiomas invertem o . (ponto) e a , (virgula) do número.
O agilityflow guarda o idioma do usuário dentro da variável @sysCurrentLanguage então apenas passe no parâmetro deesse saída

decimal(18,6)
Exemplo: 12000.500000variável.

Exemplo de utilização

selectAbaixo dbo.CONVERT_TO_DECIMAL('12000,50')o *número dbo.CONVERT_TO_DECIMAL('2,5')

será
Retornoformato para o5 usuário
casas

30001.250000000000

decimais,

Formataçãno padrão do textoidioma parado númerousuário com milhar e 2 casas decimais

Nome da Função

dbo.FORMAT_TO_DECIMAL(....)logado.

Parâmetro de entrada

varchar (40)
Passar um texto (só números) com ponto na separação de decimais
Exemplo: 30001.250000000000

Parâmetro de saída

varchar (40)
Texto com números formatados como números decimais considerando pontos no milhar e 2 casas decimais:
Exemplo: 30.001,25

Exemplo de utilização

select dbo.FORMAT_TO_DECIMAL(FORMAT(5800000.888, '30001.250000000000')n5', @sysCurrentLanguage)

Retorno para o usuário

30.001,25

que

Formataçãoestá do texto para moeda R$ com milhar e 2 casas decimais

Nome da Função

dbo.FORMAT_TO_MOEDA_REAL(....)

Parâmetro de entrada

varchar (40)
Passar um texto (só números) com ponto na separação de decimais
Exemplo: 30001.250000000000

Parâmetro de saída

varchar (40)
Texto com números formatados como moeda precedido de R$, considerando pontoslogado no milharagilityflow eem 2português casasou decimais:
Exemplo: R$ 30.001,25

Exemplo de utilizaçãoespanhol

select

dbo.FORMAT_TO_MOEDA_REAL('30001.250000000000')

Retorno para o usuário que está logado no agilityflow usando em inglês

R$

30.001,25

Campos pré-formatados dos tipos NÚMERO e DATA

Sempre que um campo de texto com máscara do tipo data ou do tipo número é criado, o sistema cria uma cópia desse mesmo campo com os dados já pré-formatados. Esses campos, não ficam visíveis ao usuário, mas pode ser usados nas queries.

Datetime

Todos os campos com qualquer máscara de data, terão uma cópia em um campo com mesmo nome, mas com sufixo "__datetime__"__datetime__". Por exemplo, se o campo se chama "data1", haverá um outro chamado "data1__datetime__"  e o conteúdo terá o formato dd/mm/aaaa hh:mi:ss. Por exemplo:

Number

Todos os campos com qualquer máscara de número, terão uma cópia em um campo com mesmo nome, mas com sufixo "__number__"__number__". Por exemplo, se o campo se chama "valor", haverá um outro chamado "valor__number__"  e o conteúdo terá o formato decimal(18,6). Por exemplo:

Tratamento de Registros Deletados

Para manter a integridade dos dados, o agilityflow nunca apaga um registro de uma tabela. Apenas o marca como deletado. Portanto, para qualquer query, é preciso excluir os deletados da lista.

Essa marcação é feita com campo deletado. Se o valor for 0, significa que ele não foi deletado e está visível no sistema. Caso esteja 1, significa que o registro já foi excluído e não é possível mais vê-lo na listagem principal do sistema.

Exemplo 1, sem o tratamento de deletados:

select usu_nome, usu_email from tbl_usuario

Resultado:Resultado:

Exemplo 2, semcom o tratamento de deletados:

select usu_nome, usu_email from tbl_usuario
where deletado = 0

Resultado:Resultado: