SmartQry

O módulo SmartQry cria telas a partir de um simples comando SQL. Se o comando retornar todos os campos requeridos para gravação, é possível também executar operações de inclusão, alteração e exclusão dos dados.

Principais características

  1. Criação de consulta rápida, apenas com um comando SQL;
  2. Possibilidade de edição dos dados, apenas adicionando os campos ao comando SQL;
  3. Possibilidade de conexão a fonte de dados externa (MySQL, MSSQL, Oracle, entre outros), apenas adicionando os parâmetros de conexão;
  4. Possibilidade de customização do layout (cores, largura, tamanho, fonte) de layout;
  5. Possibilidade de filtros dinâmicos;

Definição básica

{
"sqlQry": "select buser, buser_desc from buser"
}

Definição completa

{
  "def": {
    "width": 160,
    "displayMemo": true,
    "readOnly": false,
    "fdConn": {
      "driverId": "MySQL",
      "dataBase": "db",
      "userName": "usuario",
      "password": "senha",
      "server": "servidor",
      "port": "3306"
    },
    "fields" : {
        "buser" : {
            "width" : 200,
            "displayMemo" : false,
            "groupHeader" : "Desc",
            "readyOnly" : false,
            "visible" : true,
            "color" : "$00EEEEEE",
            "fontColor" :"$00EEEEEE",
            "fontSize" : 20,
            "fontName" : "Verdana",
            "titleCaption" : "Descricao",
            "titleColor" : "$00EEEEEE",
            "titleFontColor" : "$00EEEEEE",
            "titleFontSize" : 20,
            "titleFontName" : "Verdana",
            "alignment" : "center",
            "titleAlignment" : "center",
            "filteringEditor" : "edit"            
        }
    }
  },
  "sqlQry": "select buser, buser_desc from buser"
}
Objeto Descrição
def Responsável pelas definições de comportamento da tela
def.width Tamanho padrão para colunas. Padrão é 110 (int)
def.displayMemo Indica se mostra texto dos campos memos no grid. Caso false (default), mostra apenas quando é selecionado o campo (true/false).
def.readOnly Indica se permite a edição (crud) dos dados (true/false).
def.fdConn Objeto de configuração da conexão ao banco de dados, com base no framework FireDac.
def.fdConn.driverId Indica o banco de dados a ser conectado (MySQL, MSSQL, Ora...).
def.fdConn.dataBase Indica o nome do banco de dados.
def.fdConn.userName Indica o usuário do banco de dados.
def.fdConn.password Indica a senha do usuário de banco de dados.
def.fdConn.server Indica o endereço do servidor de banco de dados.
def.fdConn.port Indica a porta (int) do servidor de banco de dados.
def.fields Objeto de configuração dos campos
def.fields.field.width Largura da coluna (int)
def.fields.field.displayMemo Indica se mostra texto longo no campo (true/false).
def.fields.field.groupHeader Grupo do da coluna (text)
def.fields.field.readyOnly Indica se edita campo (true/false)
def.fields.field.visible Indica se mostra campo. Caso false, campo pode ser visualizado pelo menu de campos (true/false)
def.fields.field.color Indica a cor de fundo da coluna. O valor deve ser texto, com prefixo $00, seguido dos códigos em hexa RGB invertidos (BGR). Ex. Cor 00569A (RGB 0,86,154), deve ser colocado $009A5600
def.fields.field.fontColor Indica a cor de fonte. O valor deve ser texto, com prefixo $00, seguido dos códigos em hexa RGB invertidos (BGR). Ex. Cor 00569A (RGB 0,86,154), deve ser colocado $009A5600
def.fields.field.fontSize Indica o tamanho da fonte (int).
def.fields.field.fontName Indica o nome da fonte (text).
def.fields.field.titleCaption Nome do título da coluna (text).
def.fields.field.titleColor Indica a cor de fundo do título da coluna. O valor deve ser texto, com prefixo $00, seguido dos códigos em hexa RGB invertidos (BGR). Ex. Cor 00569A (RGB 0,86,154), deve ser colocado $009A5600
def.fields.field.titleFontColor Indica a cor de fonte do título. O valor deve ser texto, com prefixo $00, seguido dos códigos em hexa RGB invertidos (BGR). Ex. Cor 00569A (RGB 0,86,154), deve ser colocado $009A5600
def.fields.field.titleFontSize Indica o tamanho da fonto do título da coluna (text).
def.fields.field.titleFontName Indica o nome da fonte do título da coluna (text).
def.fields.field.alignment Indica o alinhamento (left, center, right) do dado (text).
def.fields.field.titleAlignment Indica o alinhamento (left, center, right) do título (text).
def.fields.field.filteringEditor Indica o tipo de filtro da coluna. O uso depende do SQL possuir parâmetro com o mesmo nome do campo na cláusula where. Valores possíveis edit (text). Ver exemplo de filtros. Demais tipos a serem implementados.
sqlQry Requerido. Sql de consulta. Para telas editáveis, a consulta deve conter todos os campos requeridos para inserção / edição

Filtros

Para utilização de filtro, o Sql deve possuir os parâmetros na cláusula where com o mesmo nome (em caixa baixa) do campo, com o refixo : no nome.

select buser, buser_desc
from buser
where buser = :buser

Para utilização de filtro aproximado, pode-se utilizar o comando like.

select buser, buser_desc
from buser
where buser like :buser

Para campos que permitam valores null, deve-se considerar no comando essa condição, pois caso contrário os registros nulos não serão considerados mesmo sem a seleção de filtro.

select buser, buser_desc
from buser
where buser = :buser
  and coalesce(buser_desc,''like coalesce(:buser_desc,'')