Como usar a entrada de usuário para preencher previamente uma caixa de seleção

É possível usar uma entrada fornecida pelo usuário em um ou mais campos no formulário para determinar os valores em uma caixa de seleção. Essa técnica é útil quando você deseja fornecer ao usuário dois conjuntos com várias opções válidas da sua origem de dados, mas não deseja permitir que o usuário especifique uma seleção personalizada. Essa opção, portanto, ajuda a garantir a padronização e a validade das seleções dos usuários e, ao mesmo tempo, em geral fornece-lhes várias opções de escolha.

Uma aplicação comum dessa técnica ocorre em um formulário com caixas de seleção para país e estado. Usando os atributos reportobjid e reportobjvars, é possível configurar a caixa de seleção de estado para exibir apenas os estados do país selecionado pelo usuário.

Para usar a técnica de preencher previamente uma caixa de seleção com base na seleção de um usuário em uma caixa anterior, siga este processo. Este processo usa um cenário de país/estado como exemplo de execução.

  1. No Criador de relatórios, crie um objeto de dados que consulte a origem de dados (como o MDB) para os dados desejados na primeira caixa de seleção. A consulta deve retornar a lista de todos os valores possíveis e preencher a caixa de combinação com essa lista. Essa etapa faz parte do processo de preencher previamente uma caixa de combinação com base em um objeto de dados de relatório.

    Em nosso exemplo de execução, crie um objeto de dados de relatório para recuperar a lista de países do banco de dados.

    Quando o formulário é exibido, o objeto de dados de relatório é executado e preenche a caixa de combinação com os dados resultantes.

    Registre a ID do objeto de dados para referência futura.

    Considere a seguinte consulta de amostra de um objeto de dados para o MDB. Esse exemplo retorna a lista de países disponíveis para o serviço ou opção de serviço ao qual o formulário está anexado

    SELECT country_id,country_name from my_country_table
    

    Essa consulta faz o seguinte:

  2. No formulário, adicione a primeira caixa de seleção; ela é um dos elementos de um formulário.
    1. Para o atributo _id, especifique um valor significativo e salve o formulário. Registre o valor para referência futura quando especificar o atributo reportobjvars.
    2. Para o valor do Atributo HTML chamado reportobjid, especifique a identificação do objeto de dados e salve o formulário.

    Observação: ao usar um objeto de dados para preencher uma caixa de combinação, não adicione opções à caixa de seleção, pois elas são ignoradas (não usadas) quando o usuário abre o formulário. Quaisquer opções para a caixa de seleção são ignoradas, apenas o objeto de dados é levado em consideração.

    1. Para o atributo múltiplo da caixa de seleção, especifique Falso para que os usuários possam selecionar apenas uma opção na caixa de combinação. Salve o formulário.
    2. Para o atributo de título (texto da dica de ferramenta), especifique opcionalmente o texto de instrução, como "Clique na seta e role para selecionar um país". Salve o formulário.
    3. Como opção, é possível renomear o texto de exibição padrão do grupo de seleção, mudando-o de "Selecionar" para um nome mais significativo, selecionando o elemento na Árvore de componentes e clicando no ícone Renomear no topo da árvore.

      Observação: como opção, você pode localizar o texto da dica de ferramenta ou o nome da caixa de seleção se usuários de diferentes localidades forem usar esse formulário.

    4. Deixe o atributo de valor em branco. Esse valor é preenchido com o primeiro resultado retornado pela consulta.
  3. Crie um segundo objeto de dados de relatório para recuperar uma lista de valores do banco de dados, com base na seleção do usuário na primeira caixa de seleção. Nesse objeto de dados de relatório, especifique algumas variáveis de relatório na consulta que será preenchida usando a entrada fornecida pelo usuário em outros campos do formulário

    Em nosso exemplo de execução, crie um segundo objeto de dados de relatório para recuperar os estados do banco de dados, com base no país que o usuário selecionou. Siga as diretrizes na Etapa 1 para criar o segundo objeto de dados de relatório.

  4. No formulário, adicione a segunda caixa de seleção. Essa caixa será previamente preenchida com base na seleção do usuário na primeira caixa de seleção. Siga as diretrizes na Etapa 2 para criar a segunda caixa de seleção, mas leve em conta as seguintes considerações:
  5. Na segunda caixa de seleção, especifique o atributo reportobjvars usando o seguinte formato: $({'reportvar':value}).

    Um valor válido é um dos seguintes:

    Em nosso exemplo de execução, crie uma segunda caixa de seleção a ser preenchida com os estados do banco de dados, com base no país que o usuário selecionou. Para o atributo reportobjvars da caixa de seleção de estado, especifique a função JavaScript predefinida chamada ca_fdGetSelectedOptionValues, como se vê a seguir:

    $({'selected_country':ca_fdGetSelectedOptionValues ('<form _id> ','country' )[0]})
    
    form _id

    Especifica o valor do atributo _id do formulário contendo a primeira caixa de seleção. Consulte este formulário na Etapa 2.

    país

    Especifica o valor do atributo _id da primeira caixa de seleção. Crie e registre este valor na Etapa 2.

  6. Na primeira caixa de seleção, defina o atributo onchange para recuperar os dados da segunda caixa de seleção assim que o usuário fizer uma seleção na primeira caixa. Para o atributo onchange, especifique a função JavaScript predefinida chamada ca_fdFetchSelectData, usando o seguinte formato:
    ca_fdFetchSelectData('<form _id>','<field _id>'); 
    
    form _id

    Especifica o valor do atributo _id do formulário contendo a segunda caixa de seleção. Consulte este formulário na Etapa 4.

    field_id

    Especifica o valor do atributo _id do formulário contendo a segunda caixa de seleção. Crie e registre este valor na Etapa 4.

    Em nosso exemplo de execução, defina o atributo onchange da caixa de seleção de país para o seguinte:

    ca_fdFetchSelectData('<form _id>','<state field _id>'); 
    
  7. Teste o formulário para verificar se ele funciona como esperado.

Como prática recomendada, teste este formulário com um serviço em um ambiente de teste antes de usá-lo em um ambiente de produção.