HCM- Tecnologia - Função InsClauSQLField - O campo precisa ser informado com a tabela no método TSSQLGen.Select
Incidente
No módulo Administraçao de Pessoal ao tentar usar a função InsClauSQLField é apresentada a mensagem: O campo precisa ser informado com a tabela no método TSSQLGen.Select
Causa
Este incidente ocorre pois foi incluído no evento da Pré-Seleção a função InsClauSQLField juntamente com expressões SQL livres como CASE WHEN.
Exemplo:
v_SQL = "CASE WHEN R008EVC.DesEve LIKE '%INSS%' THEN 1 ELSE 2 END AS Tipo";
InsClauSQLField("Detalhe_Evento", v_SQL);
Solução
Para que a mensagem 'O campo precisa ser informado com a tabela no método TSSQLGen.Select' não seja apresentada, siga os passos abaixo:
1. Utilize a função InsClauSQLCampoDireto.
Observação: Acesse aqui o Portal de Documentação Senior, pesquise "InsClauSQLCampoDireto" e localize a documentação sobre esta rotina no portal de documentação da Tecnologia.
2. Para inserir expressões SQL personalizadas no SELECT de uma seção, a função correta é InsClauSQLCampoDireto.
3. A função InsClauSQLField não suporta expressões SQL livres como CASE WHEN — ela aceita apenas referências no formato Tabela.Campo. Por isso o erro é apresentado ao tentar utilizá-la dessa forma.
Exemplo:
Pré-Seleção do modelo:
Definir alfa v_SQL;
v_SQL = "CASE WHEN R008EVC.DesEve LIKE '%INSS%' THEN 1 ELSE 2 END AS Tipo";
InsClauSQLCampoDireto("Detalhe_Evento", v_SQL);
Para acessar o valor do campo Tipo nas regras LSP (ex: evento Antes Imprimir da seção Detalhe_Evento):
Definir Numero xTipo;
RetornaCampoNumero("Detalhe_Evento", "Tipo", xTipo);
Se (xTipo = 1)
Inicio
x = 'A';
Fim
Senao
Inicio
x = 'B';
Fim