Lookup estourando tamanho máximo de seleção para valores númericos

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:

  1. 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
    
  2. Salve o Browser.
  3. Crie um formulário.
  4. Inclua um campo do tipo Lookup.
  5. Inclua no Lookup o alvo o Browser criado anteriormente.
  6. Salve o Formulário.
  7. Abra o objeto no LATROMI Web.
  8. 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.