Bom dia,
Ao executar um dataset com a integração com o serviço "wsConsultaSQL", ao informar as variaveis necessárias ele está me retornando o seguinte:
Erro na comunicação com o app (linha: 42): JavaException: javax.xml.ws.soap.SOAPFaultException: The conversion of the varchar value '99999999999' overflowed an INT2 column. Use a larger integer column.
Como faço para resolver esse tipo de problema?
function createDataset(fields, constraints, sortFields)
{
// var USUARIO =
//var SENHA =
var NOME_SERVICO = "WsConsultaSQL"; // Nome do serviço criado no Fluig Studio
var CAMINHO_SERVICO = "com.totvs.WsConsultaSQL"; // Caminho do serviço
var dataset = DatasetBuilder.newDataset();
try {
// Obtem a instancia do serviço
var servico = ServiceManager.getServiceInstance(NOME_SERVICO);
// Inicializa o serviço
var instancia = servico.instantiate(CAMINHO_SERVICO);
log.info("!!! CAMINHO_SERVICO_CPF !!!" );
log.info(instancia);
// Obtem o WebService para consumo
var ws = instancia.getRMIwsConsultaSQL();
var serviceHelper = servico.getBean();
// Autenticação no serviço
var authService = serviceHelper.getBasicAuthenticatedClient(ws, "com.totvs.IwsConsultaSQL", 'integracao', '**********');
/**
* O método realizarConsultaSQL espera 4 parametros:
* 1º - Código da Consulta SQL cadastrada no sistema
* 2º - Código da Coligada
* 3º - Código do Sistema
* 4º - Parametros utilizados na consulta SQL. Ex.: "CODCOLIGADA=1;UF=MG"
* Retorno: Um XML de um DataTable do retorno da execução da consulta SQL
*/
var user = getValue("WKUser");
// Pega o CPF no cadastro do FLUIG em Dados Adicionais
//var cpf = fluigAPI.getUserService().getCurrent().getExtraData("CPF");
var cpf = "99999999999";
var colig = "10";
var param = "CPF="+cpf+";"+"COLIGADA="+colig;
// FLUIG_PFUNC_CPF = Nome da Consulta SQL criado no RM
var result = authService.realizarConsultaSQL("FLUIG_TESTE", 0, "P", param);
if ((result != null) && (result.indexOf("===") != -1)) {
var msgErro = result.substring(0, result.indexOf("==="));
log.error("Erro: " + msgErro);
throw "Erro: " + msgErro;
}
// Insere o resultado em um objeto XML para melhor manipulação dos dados
var xmlResultados = new XML(result);
// Cria as colunas que serão retornadas pela consulta SQL e que serão utilizadas
dataset.addColumn("NOME");
dataset.addColumn("DATAINICIO");
dataset.addColumn("CODSECAO");
dataset.addColumn("CHEFE_MASTER");
// Adiciona os dados no dataset
array = new Array();
for (var i = 0; i < xmlResultados.Resultado.length(); i++)
{
dataset.addRow(new Array( xmlResultados.Resultado.NOME[i].toString(),
xmlResultados.Resultado.DATAINICIO[i].toString(),
xmlResultados.Resultado.CODSECAO[i].toString(),
xmlResultados.Resultado.CHEFE_MASTER[i].toString()
)
);
}
} catch (e)
{
if (e == null)
e = "Erro desconhecido; verifique o log do AppServer";
var mensagemErro = "Erro na comunicação com o app (linha: " + e.lineNumber + "): " + e;
log.error(mensagemErro);
log.info(mensagemErro);
dataset.addColumn("ERROR");
dataset.addColumn("MESSAGE_ERROR");
dataset.addRow(new Array(-1, mensagemErro));
}
return dataset;
}
DECLARE @coligada INT, @chapa VARCHAR(5), @cpf VARCHAR(11);
-- coligada
SET @coligada = 10;
SET @cpf = '99999999999'
SELECT PFUNC.NOME, PEXTERNO.DATAINICIO, PEXTERNO.CODSECAO, PCHEFEEXTERNO.MASTER CHEFE_MASTER
FROM PEXTERNO, PFUNC, PCHEFEEXTERNO
WHERE PFUNC.CODPESSOA = PEXTERNO.CODPESSOA
AND PCHEFEEXTERNO.CODCOLSUBST = PEXTERNO.CODCOLIGADA
AND PCHEFEEXTERNO.CODEXTERNO = PEXTERNO.CODEXTERNO
AND PEXTERNO.CODCOLIGADA = @coligada
AND PEXTERNO.CODSECAO IN (SELECT CODSECAO
FROM PEXTERNO
WHERE CODCOLIGADA = @coligada
AND CODEXTERNO IN (SELECT CODEXTERNO
FROM PCHEFEEXTERNO
WHERE CODCOLIGADA = @coligada
AND substring(CODSECAO,1,11) IN (SELECT substring(PFUNC.CODSECAO,1,11)
FROM PFUNC
WHERE PFUNC.CODCOLIGADA = @coligada
AND PFUNC.CHAPA IN (SELECT PSUBSTCHEFE.CHAPASUBST
FROM PSUBSTCHEFE
INNER JOIN PFUNC ON PFUNC.CODCOLIGADA = PSUBSTCHEFE.CODCOLSUBST AND PFUNC.CHAPA = PSUBSTCHEFE.CHAPASUBST
WHERE PSUBSTCHEFE.CODCOLIGADA = @coligada
AND PSUBSTCHEFE.CODSECAO IN (SELECT PFUNC.CODSECAO
FROM PFUNC
INNER JOIN PPESSOA ON PPESSOA.CODIGO = PFUNC.CODPESSOA
WHERE PFUNC.CODCOLIGADA = @coligada
AND PFUNC.CODSITUACAO <> 'D'
AND PPESSOA.CPF = @cpf)
AND PSUBSTCHEFE.DATAINICIO <= GETDATE()
AND PSUBSTCHEFE.DATAFIM IS NULL)
AND PFUNC.CODSITUACAO <> 'D')))
UNION ALL
SELECT PFUNC.NOME, PSUBSTCHEFE.DATAINICIO, PSUBSTCHEFE.CODSECAO, PSUBSTCHEFE.MASTER CHEFE_MASTER
FROM PSUBSTCHEFE
INNER JOIN PFUNC ON PFUNC.CODCOLIGADA = PSUBSTCHEFE.CODCOLSUBST AND PFUNC.CHAPA = PSUBSTCHEFE.CHAPASUBST
WHERE PSUBSTCHEFE.CODCOLIGADA = @coligada
AND substring(PSUBSTCHEFE.CODSECAO,1,11) IN (SELECT substring(PFUNC.CODSECAO,1,11)
FROM PFUNC
WHERE PFUNC.CODCOLIGADA = @coligada
AND PFUNC.CHAPA IN (SELECT PSUBSTCHEFE.CHAPASUBST
FROM PSUBSTCHEFE
INNER JOIN PFUNC ON PFUNC.CODCOLIGADA = PSUBSTCHEFE.CODCOLSUBST AND PFUNC.CHAPA = PSUBSTCHEFE.CHAPASUBST
WHERE PSUBSTCHEFE.CODCOLIGADA = @coligada
AND PSUBSTCHEFE.CODSECAO IN (SELECT PFUNC.CODSECAO
FROM PFUNC
INNER JOIN PPESSOA ON PPESSOA.CODIGO = PFUNC.CODPESSOA
WHERE PFUNC.CODCOLIGADA = @coligada
AND PFUNC.CODSITUACAO <> 'D'
AND PPESSOA.CPF = @cpf)
AND PSUBSTCHEFE.DATAINICIO <= GETDATE()
AND PSUBSTCHEFE.DATAFIM IS NULL)
AND PFUNC.CODSITUACAO <> 'D')
AND PSUBSTCHEFE.DATAINICIO <= GETDATE()
AND PSUBSTCHEFE.DATAFIM IS NULL
AND PSUBSTCHEFE.CODSECAO <> PFUNC.CODSECAO
UNION ALL
SELECT PFUNC.NOME, PSUBSTCHEFE.DATAINICIO, PSUBSTCHEFE.CODSECAO, PSUBSTCHEFE.MASTER CHEFE_MASTER
FROM PSUBSTCHEFE
INNER JOIN PFUNC ON PFUNC.CODCOLIGADA = PSUBSTCHEFE.CODCOLSUBST AND PFUNC.CHAPA = PSUBSTCHEFE.CHAPASUBST
WHERE PSUBSTCHEFE.CODCOLIGADA = @coligada
AND PSUBSTCHEFE.CODSECAO IN (SELECT PFUNC.CODSECAO
FROM PFUNC
INNER JOIN PPESSOA ON PPESSOA.CODIGO = PFUNC.CODPESSOA
WHERE PFUNC.CODCOLIGADA = @coligada
AND PFUNC.CODSITUACAO <> 'D'
AND PPESSOA.CPF = @cpf)
AND PSUBSTCHEFE.DATAINICIO <= GETDATE()
AND PSUBSTCHEFE.DATAFIM IS NULL
Carlos, como está cadastrada essa consulta no RM?
— Diogo Boegershausen 29 de Mar de 2018Diogo, copiei o código utilizado no RM logo acima.
— Carlos Piva 29 de Mar de 2018Apenas uma ressalva Diogo, as 5 primeiras linhas são para execução em Query, no RM não existem as 5 primeiras linhas.
— Carlos Piva 29 de Mar de 2018PPESSOA.CPF é que tipo de coluna da tabela? Varchar mesmo? Não sei como funciona a extração de parâmetros que você passa na consulta pro RM, só por chute, se você inverter a ordem dos parâmetros, colocar a coligada primeiro e depois o cpf, dá o mesmo erro? Porque se o campo CPF da tabela for varchar a impressão que dá é que ele está tentando jogar o valor do CPF como a coligada que é inteiro.
— Diogo Boegershausen 29 de Mar de 2018