Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Acrescentado detalhes sobre Parâmetro baseado em sentença SQL

...

  • 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).