Histórico da Página
...
- Atenção: Só funciona para winforms.
Observação:
Parâmetro baseado em sentença SQL = Trata-se de um tipo especial de parâmetro, nele o usuário seleciona uma sentença SQL do sistema e ele será apresentado como um lookup, dando a opção do usuário selecionar algum campo resultante dessa sentença para ser o valor do parâmetro. Ao criar a sentença SQL desse parâmetro, é importante ter em mente que nem toda sentença poderá ser usada, ela deve seguir alguma regras importantes de formatação, segue abaixo pontos importantes que devem ser observados:
- O primeiro campo do select deve ser a descrição do campo, de preferência um texto claro indicando ao usuário o que é esse registro.
- O segundo campo deve ser um código único e não nulo, caso ele se repita o sistema não conseguirá encontrar sua descrição em posterior acesso a esse registro.
- Os dois primeiros campos devem ser colunas reais do banco de dados, não é recomendado o uso de campos calculados, mas caso for indispensável, o alias dele deve ser igual ao nome da primeira coluna usada.
- A sentença deve conter a TAG /*WHERE*/ ou /*AND*/ no local apropriado para que o sistema consiga incluir um filtro no lugar dessa TAG
- Devido ao uso de TAGs, a sentença não deve possuir nenhum trecho comentado (Além da TAG obrigatória).
- É recomendado que a sentença esteja dentro de uma subquery como o modelo abaixo:
SELECT CAMPO1, CAMPO2 FROM (
SUASENTENCA
) TABELA /*WHERE*/
Note que nesse caso, a TAG /*WHERE*/ já está no lugar apropriado.
- Segue abaixo alguns exemplos de sentenças SQL válidas e inválidas:
Sentença válida ideal
SELECT NOME, CODIGO FROM (
SELECT NOME, CODIGO FROM PPESSOA
) TABELA /*WHERE*/
Sentença inválida
SELECT NOME, MEUCODIGO FROM (
SELECT NOME, (APELIDO + ' - ' + SEXO) AS MEUCODIGO FROM PPESSOA
) TABELA /*WHERE*/
Motivo dela ser inválida: Essa sentença tem vários problemas
1 - Será salvo no atendimento o valor do campo MEUCODIGO, esse valor é a concatenação do apelido e do sexo da pessoa, é um valor que pode se repetir causando inconsistência ao se abrir o registro.
2 - O campo pode ser nulo, fazendo com que o sistema não tenha um valor para salvar.
3 - O segundo campo é um campo calculado cujo apelido não é uma coluna real do banco.
Sentença válida porem não ideal
A seguinte alteração resolve o problema '3' da lista acima, mas a inconsistência ainda ocorrerá caso o campo se repita ou seja nulo:
SELECT NOME, APELIDO FROM (
SELECT NOME, (APELIDO + ' - ' + SEXO) AS APELIDO FROM PPESSOA
) TABELA /*WHERE*/
Observação: Para os tipos de parâmetros igual a link é necessário limitar o tamanho do parâmetro em caracteres.
Os parâmetros associados ao tipo de atendimento são apresentados na aba Parâmetros na edição dos atendimentos. Setenças SQL e actions também podem ser vinculadas.
Para sentenças SQL que possuam action , a action será executada na edição do atendimento. Para associar uma Action a sentença sql será necessário que na consulta sql personalizada tenha como colunas a chave primária da action desejada.
Ex: SELECT ASSUNTOOC, CODATENDIMENTO , CODCOLIGADA, CODLOCAL , CODATENDIMENTO FROM HATENDIMENTOBASE Nesse exemplo, o parâmetro é montado na forma padrão como lookup . Ele irá utilizar a primeira coluna ASSUNTOOC para ser a descrição do lookup , a segunda coluna CODATENDIMENTO como o código do lookup.
E ao associar a Action de atendimento CRMATENDIMENTOEXTACTION a essa sentença a chave primária da action será associada as colunas da sentença no caso a chave primária do atendimento (CODCOLIGADA , CODLOCAL , CODATENDIMENTO).