Visão geral
Dentre os campos disponíveis para construção do formulário, temos o Lookup, que permite informar o objeto Browser como fonte de dados para seleção de um registro. Este campo pode ser configurado de duas formas:
- ComboBox: Carrega os valores da fonte de dados em formato de lista suspensa (tag HTML
<select>), exibindo as descrições diretamente na tela para a escolha do usuário. - Popup: Abre uma janela modal contendo a interface do Browser completa, permitindo que o usuário pesquise, visualize mais colunas e selecione o valor desejado.
Durante a utilização do Lookup configurado no formato Popup, identificamos uma inconsistência na captura de dados ao selecionar registros que possuam chaves numéricas muito altas.
O erro ocorre especificamente quando o valor selecionado ultrapassa 2147483647, que é exatamente o limite máximo suportado pelo tipo de dado estrutural INT32. Ao atingir esse teto, o componente falha ao processar a seleção do usuário.
Simulando
Siga os passos abaixo para simular o comportamento, lembrando não é apresentado mensagem de erro, mas sim, o valor selecionado é divergente do valor apresentado no campo:
- Crie um objeto Browser com o seguinte comando SQL:
SELECT 123456789101112 as id ,'Valor alto' as description UNION SELECT 2 as id ,'Valor baixo' as description - Salve o Browser.
- Crie um formulário.
- Inclua um campo do tipo Lookup.
- Inclua no Lookup o alvo o Browser criado anteriormente.
- Salve o Formulário.
- Abra o objeto no LATROMI Web.
- Selecione o valor acima de
2147483647.
Solução
Necessário verificar o tipo de dado do Lookup, quando o valor é do tipo numérico. O limite de seleção (2147483647) possivelmente esta relacionado com o tamanho máximo do INT32, sendo o caso alterar o tipo de dado para INT64.