Criar uma caixa de listagem em cascata
Aplica-se A
As caixas de listagem em cascata ajudam os utilizadores a preencher formulários mais rapidamente e ajudam a garantir que os utilizadores introduzem os dados corretamente. Este artigo descreve como criar e preencher caixas de listagem em cascata com dados. No Microsoft Office InfoPath, pode preencher uma lista com dados que utilizam valores do formulário, valores de um documento XML (Extensible Markup Language) externo ou valores de uma base de dados do Microsoft Office Access.
Neste artigo
- O que é uma caixa de listagem em cascata?
- Passo 1: inserir uma caixa de listagem em cascata
- Passo 2: fornecer os dados
O que é uma caixa de listagem em cascata?
Uma caixa de listagem em cascata é uma caixa de listagem com opções que são alteradas com base no valor que um utilizador seleciona noutra caixa de listagem. Por exemplo, se um utilizador clicar em Condimentos na caixa Categorias apresentada na ilustração seguinte, a caixa Produtos apresentará uma lista de condimentos.
As secções seguintes mostram-lhe como estruturar um modelo de formulário com duas caixas de listagem, onde a segunda caixa de listagem é filtrada com base no valor que um utilizador seleciona na primeira caixa de listagem. Quando o valor na primeira caixa de listagem é alterado, o filtro é aplicado automaticamente à segunda caixa de listagem, que altera os respetivos valores.
Considerações de compatibilidade
Os filtros só podem ser utilizados em modelos de formulário concebidos para serem preenchidos no InfoPath. Os filtros não estão disponíveis em modelos de formulário compatíveis com o browser.
Passo 1: inserir uma caixa de listagem em cascata
Para criar uma caixa de listagem em cascata, tem de inserir duas caixas de listagem no seu modelo de formulário.
Nota
Quando insere uma caixa de listagem em cascata no seu modelo de formulário, certifique-se de que as duas caixas de listagem não estão numa secção de repetição ou numa tabela de repetição.
- Se o painel de tarefas Controlos não estiver visível, clique em Mais Controlos no menu Inserir ou prima ALT+I, C
- Em Inserir controlos no painel de tarefas Controlos , clique em Caixa de Lista Pendente. Quando um utilizador preenche um formulário baseado no seu modelo de formulário, a seleção nesta caixa de lista pendente determinará as opções disponíveis na segunda caixa de listagem.
- Clique em Caixa de Listagem. O modelo de formulário deve conter agora uma caixa de lista pendente e uma caixa de listagem padrão.
- Faça duplo clique na caixa de lista pendente que inseriu no modelo de formulário no passo 2.
- Na caixa de diálogo Propriedades da Caixa de Listagem Pendente , clique no separador Dados .
- Na caixa Nome do campo, escreva listBox1 e, em seguida, clique em OK.
- Faça duplo clique na caixa de listagem que inseriu no modelo de formulário no passo 3.
- Na caixa de diálogo Propriedades da Caixa de Listagem , clique no separador Dados .
- Na caixa Nome do campo , escreva listBox2Cascade e, em seguida, clique em OK.
Passo 2: fornecer os dados
Agora que inseriu as caixas de lista no modelo de formulário, tem de fornecer os dados que serão apresentados. Em seguida, tem de aplicar um filtro para que as escolhas na segunda caixa de listagem se baseiem na seleção do utilizador na primeira caixa de listagem.
Esta secção explica como ligar as caixas de listagem aos dados através de três métodos comuns: adicionar os dados ao próprio formulário; ligar o formulário a um documento XML existente que contém os dados; ou ligar o formulário a uma base de dados que contém os dados. Para concluir a criação da sua caixa de listagem em cascata, clique no método que pretende utilizar na lista seguinte.
Ligar a dados no formulário
Nesta secção, irá aprender a preencher as caixas de listagem com dados do formulário. Para tal, primeiro tem de configurar campos no modelo de formulário para que possa introduzir os nomes das categorias e um conjunto de produtos para cada categoria.
Configurar campos no modelo de formulário
- Se o painel de tarefas Origem de Dados não estiver visível, clique em Origem de Dados no menu Ver .
- No painel de tarefas Origem de Dados , clique com o botão direito do rato no grupo myFields e, em seguida, clique em Adicionar.
- Na caixa Nome , na caixa de diálogo Adicionar Campo ou Grupo , escreva CategoriesAndProducts.
- Na lista Tipo , clique em Agrupar.
- Selecione a caixa de verificação Repetir e, em seguida, clique em OK.
- No painel de tarefas Origem de Dados , clique com o botão direito do rato no grupo CategoriesAndProducts .
- Na caixa Nome , na caixa de diálogo Adicionar Campo ou Grupo , escreva Categoria e, em seguida, clique em OK. Este campo irá conter os nomes das categorias da primeira caixa de listagem.
- Clique com o botão direito do rato no grupo CategoriesAndProducts e, em seguida, clique em Adicionar.
- Na caixa Nome , na caixa de diálogo Adicionar Campo ou Grupo , escreva Produto.
- Selecione a caixa de verificação Repetir e, em seguida, clique em OK. Este campo irá conter os nomes dos produtos para a segunda caixa de listagem.
Uma vez que esta caixa de listagem é preenchida com dados do formulário, os dados têm de ser adicionados ao formulário. Para tal, terá de criar valores predefinidos para os campos Produto e Categoria .
Sugestão
Também pode criar caixas de listagem que apresentem valores que os utilizadores escrevem no formulário. Para tal, associe a caixa de listagem aos campos vinculados aos controlos no formulário. Quando um utilizador introduz valores nos controlos, as opções na caixa de listagem mudam.
Criar valores predefinidos
- No menu Ferramentas , clique em Valores Predefinidos.
- Na caixa de diálogo Editar Valores Predefinidos , no grupo CategoriesAndProducts , selecione o campo Categoria (não desmarque a caixa de verificação) e, em seguida, na caixa Valor predefinido , escreva Frutos do Mar.
- Selecione o campo Produto (não desmarque a caixa de verificação) e, em seguida, na caixa Valor predefinido , escreva Carne de caranguejo.
- Clique com o botão direito do rato no campo Produto e, em seguida, clique em Adicionar outro Produto acima. Isto permite-lhe adicionar um segundo produto para Frutos do Mar como um valor predefinido.
- Clique com o botão direito do rato na segunda instância do campo Produto (não desmarque a caixa de verificação) e, em seguida, na caixa Valor predefinido , escreva Salmão.
- Clique com o botão direito do rato no grupo CategoriesAndProducts e, em seguida, clique em Add another CategoriesAndProducts (Adicionar outras CategoriasEProdutos) abaixo. Isto permite-lhe adicionar uma segunda categoria como um valor predefinido.
- Utilize os passos anteriores para especificar os valores predefinidos para a segunda instância dos campos Categoria e Produto para Leite lácteo, Cheddar e Chocolate, respetivamente.
- Clique em OK.
Agora que introduziu os valores predefinidos para os campos Produto e Categoria , pode ligar a primeira caixa de listagem aos dados que acabou de introduzir.
Ligar a primeira caixa de listagem aos dados
- No modelo de formulário, faça duplo clique na caixa de lista pendente que inseriu anteriormente.
- Clique no separador Dados.
- Na caixa de diálogo Propriedades da Caixa de Listagem Pendente, em Entradas da caixa Lista, clique em Procurar valores na origem de dados do formulário.
- Clique em Selecionar XPath
junto à caixa Entradas . - Na caixa de diálogo Selecionar um Campo ou Grupo , no grupo CategoriasEProdutos , clique no campo Categoria e, em seguida, clique em OK duas vezes.
Agora, tem de ligar a segunda caixa de listagem aos dados. Ao efetuar esta ligação de dados, vai querer aplicar um filtro à segunda caixa de listagem. Este filtro irá preencher a segunda caixa de listagem com os produtos adequados, com base na categoria selecionada na primeira caixa de listagem. O filtro compara o valor selecionado na primeira caixa de listagem (campo listBox1) com a lista de categorias guardadas no formulário (campo Categoria).
Ligar a segunda caixa de listagem aos dados
- No modelo de formulário, faça duplo clique na caixa de listagem padrão que inseriu anteriormente.
- Clique no separador Dados.
- Na caixa de diálogo Propriedades da Caixa de Listagem , em Entradas da caixa de listagem, clique em Procurar valores na origem de dados do formulário.
- Clique em Selecionar XPath
junto à caixa Entradas . - Na caixa de diálogo Selecionar um Campo ou Grupo , no grupo CategoriasEProdutos , clique no campo Produto e, em seguida, clique em Filtrar Dados.
- Na caixa de diálogo Filtrar Dados , clique em Adicionar.
- Na caixa de diálogo Especificar Condições do Filtro , clique em Selecionar um campo ou grupo na primeira caixa.
- Na caixa de diálogo Selecionar um Campo ou Grupo , clique em listBox1 e, em seguida, clique em OK.
- Na caixa de diálogo Especificar Condições do Filtro , clique em Selecionar um campo ou grupo na terceira caixa.
- Na caixa de diálogo Selecionar um Campo ou Grupo , clique no campo Categoria e, em seguida, clique em OK para fechar todas as caixas de diálogo abertas.
Agora que ligou a segunda caixa de listagem aos dados e aplicou o filtro, está pronto para testar as caixas de lista para se certificar de que funcionam corretamente.
Testar as caixas de listagem
Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
Na caixa de lista pendente, clique em Frutos do Mar. A caixa de listagem padrão deve mostrar uma linha em branco, Carne de caranguejo e Salmão.
Nota
A linha em branco permite que os utilizadores desmarquem a sua escolha na caixa de listagem.
Se as caixas de listagem não funcionarem corretamente, reveja o filtro da segunda caixa de listagem para se certificar de que compara o campo listBox1 com o campo Categoria .
Ligar a um documento XML externo
Nesta secção, irá aprender a criar uma ligação de dados para um documento XML que contém valores de produto e categoria. O documento XML será a sua origem de dados secundária. Para criar esta ligação de dados, terá de criar o documento XML, associar as caixas de lista no modelo de formulário ao documento XML e, em seguida, aplicar um filtro à segunda caixa de listagem para que a lista de produtos seja alterada adequadamente.
Antes de poder associar o formulário a uma origem de dados secundária, tem de criar o documento XML.
Criar o documento XML
Inicie o Bloco de Notas ou outro editor de texto.
Copie e cole os seguintes dados XML no editor de texto:
<?xml version="1.0" encoding="UTF-8"?> <ListBoxData> <CategoriesAndProducts> <Categories>Seafood</Categories> <Products> <Product>Crab meat</Product> </Products> <Products> <Product>Salmon</Product> </Products> </CategoriesAndProducts> <CategoriesAndProducts> <Categories>Dairy</Categories> <Products> <Product>Chocolate milk</Product> </Products> <Products> <Product>Cheddar</Product> </Products> </CategoriesAndProducts> </ListBoxData>Guarde o ficheiro no seu computador como listBoxData.xml.
Agora que criou um documento XML, pode ligá-lo ao modelo de formulário. Esta ação irá criar uma origem de dados secundária.
Ligar o documento XML ao modelo de formulário
- No menu Ferramentas , clique em Ligações de Dados.
- Na caixa de diálogo Ligações de Dados , clique em Adicionar.
- No Assistente de Ligação de Dados, clique em Receber dados e, em seguida, clique em Seguinte.
- Na página seguinte do assistente, clique em Documento XML e, em seguida, clique em Seguinte.
- Na página seguinte do assistente, clique em Procurar, selecione o ficheiro listBoxData.xml que guardou no computador e, em seguida, clique em Abrir.
- Na página seguinte do assistente, clique em Incluir os dados como um ficheiro de recurso no modelo de formulário ou parte do modelo e, em seguida, clique em Seguinte.
- Na página seguinte do assistente, na caixa Introduzir um nome para esta ligação de dados , escreva listBoxDataXMLFile.
- Selecione a caixa de verificação Obter dados automaticamente quando o formulário é aberto . Isto garante que os dados da caixa de listagem estarão disponíveis sempre que o formulário for aberto, em vez de exigir que um utilizador os consulte.
- Clique em Concluir.
- Na caixa de diálogo Ligações de Dados , clique em Fechar.
Agora, está pronto para ligar a primeira caixa de listagem no modelo de formulário aos dados no documento XML.
Ligar a primeira caixa de listagem aos dados
No modelo de formulário, faça duplo clique na caixa de lista pendente que inseriu anteriormente.
Clique no separador Dados.
Na caixa de diálogo Propriedades da Caixa de Listagem Pendente , em Entradas da caixa De listagem, clique em Procurar valores de uma origem de dados externa.
Na caixa Origem de dados , clique em listBoxDataXMLFile.
Clique em Selecionar XPath
junto à caixa Entradas .Na caixa de diálogo Selecionar um Campo ou Grupo , no grupo CategoriasEProdutos , clique no campo Categorias .
Nota
O fundo amarelo na caixa de diálogo Selecionar um Campo ou Grupo indica que está a trabalhar com uma origem de dados secundária.
Clique duas vezes em OK.
Agora, terá de ligar a segunda caixa de listagem ao documento XML. Ao efetuar esta ligação de dados, vai querer aplicar um filtro à segunda caixa de listagem. Este filtro irá preencher a segunda caixa de listagem com os produtos adequados, com base na categoria selecionada na primeira caixa de listagem. O filtro compara o valor selecionado na primeira caixa de listagem (campo listBox1) com a lista de categorias guardadas no formulário (campo Categoria).
Ligar a segunda caixa de listagem aos dados
- No modelo de formulário, faça duplo clique na caixa de listagem padrão que inseriu anteriormente.
- Clique no separador Dados.
- Na caixa de diálogo Propriedades da Caixa de Listagem , em Entradas da caixa de listagem, clique em Procurar valores de uma origem de dados externa.
- Na caixa Origem de dados , clique em listBoxDataXMLFile.
- Clique em Selecionar XPath
junto à caixa Entradas . - Na caixa de diálogo Selecionar um Campo ou Grupo , no grupo CategoriesAndProducts , expanda o grupo Produtos e, em seguida, clique no campo Produto .
- Clique em Filtrar Dados.
- Na caixa de diálogo Filtrar Dados , clique em Adicionar.
- Na caixa de diálogo Especificar Condições do Filtro , clique em Selecionar um campo ou grupo na primeira caixa.
- Na caixa Origem de dados , na caixa de diálogo Selecionar um Campo ou Grupo , clique em Principal.
- Clique em listBox1 e, em seguida, clique em OK.
- Na caixa de diálogo Especificar Condições do Filtro , clique em Selecionar um campo ou grupo na terceira caixa.
- Na caixa Origem de dados , na caixa de diálogo Selecionar um Campo ou Grupo , clique em listBoxDataXMLFile (Secundário) e, em seguida, clique em Categorias.
- Clique em OK para fechar todas as caixas de diálogo abertas.
Agora que ligou a segunda caixa de listagem ao documento XML e aplicou o filtro, está pronto para testar as caixas de lista para se certificar de que funcionam corretamente.
Testar as caixas de listagem
Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
Na caixa de lista pendente, clique em Frutos do Mar. A caixa de listagem padrão deve mostrar apenas uma linha em branco, Carne de caranguejo e Salmão.
Nota
A linha em branco permite que os utilizadores desmarquem a sua escolha na caixa de listagem.
Se as caixas de listagem não funcionarem corretamente, reveja o filtro da segunda caixa de listagem para se certificar de que compara o campo listBox1 com o campo Categoria .
Ligar a uma base de dados
Nesta secção, irá aprender a criar uma ligação de dados a duas tabelas numa base de dados do Access. Para tal, associe as caixas de lista no modelo de formulário à base de dados e, em seguida, aplique um filtro à segunda caixa de listagem para que a lista apresentada na segunda caixa de listagem seja alterada adequadamente com base no valor selecionado na primeira caixa de listagem. Neste exemplo, vamos assumir que a base de dados do Access contém duas tabelas denominadas Categorias e Produtos e que as duas tabelas estão relacionadas entre si pelo campo IDDaCategoria, que é utilizado em cada tabela.
Tabela Categorias
| IDDaCategoria | CategoryName |
|---|---|
| 1 | Frutos do mar |
| 2 | Laticínios |
Tabela Produtos
| IDdoProduto | IDDaCategoria | NomeDoProduto |
|---|---|---|
| 1 | 1 | Carne de caranguejo |
| 2 | 1 | Salmão |
| 3 | 2 | Leite com Chocolate |
| 4 | 2 | Cheddar |
Ligar o modelo de formulário à origem de dados
Primeiro, tem de criar uma ligação de dados entre o modelo de formulário e as tabelas na base de dados. Uma vez que só está a apresentar os dados da base de dados, em vez de os modificar diretamente, a base de dados do Access será uma origem de dados secundária para o modelo de formulário.
No menu Ferramentas , clique em Ligações de Dados.
Na caixa de diálogo Ligações de Dados , clique em Adicionar.
No Assistente de Ligação de Dados, clique em Receber dados e, em seguida, clique em Seguinte.
Na página seguinte do assistente, clique em Base de Dados (apenas Microsoft SQL Server ou Microsoft Office Access) e, em seguida, clique em Seguinte.
Na página seguinte do assistente, clique em Selecionar Base de Dados e, em seguida, navegue para e faça duplo clique na base de dados do Access no disco rígido.
Na caixa de diálogo Selecionar Tabela , clique na tabela que contém os dados que pretende mostrar na primeira lista (neste exemplo, a tabela Categorias) e, em seguida, clique em OK. Esta ação especifica a tabela como a tabela primária para a ligação de dados.
No assistente, clique em Adicionar Tabela.
Na caixa de diálogo Adicionar Tabela ou Consulta , clique na tabela que contém os dados que pretende mostrar na segunda lista (neste exemplo, a tabela Produtos) e, em seguida, clique em Seguinte.
Na caixa de diálogo Editar Relação , certifique-se de que os campos de ligação estão corretos. Neste exemplo, as tabelas estão relacionadas entre si pelo campo IDDaCategoria.
Sugestão
Se os campos de ligação estiverem incorretos, selecione os campos e, em seguida, clique em Remover Relação. Em seguida, clique em Adicionar Relação, selecione os campos corretos e, em seguida, clique em OK.
Clique em Concluir.
Nota
Neste exemplo, a tabela de categorias tem uma relação um-para-muitos com a tabela de produtos, o que significa que para cada categoria pode haver muitos produtos. Numa base de dados, este tipo de relação é normalmente estabelecida através de campos de chave. Neste caso, o campo de chave CategoryID permite que o Access associe o conjunto correto de produtos à categoria adequada.
No assistente, reveja a estrutura da origem de dados. Deverá ver duas tabelas ligadas entre si: a tabela primária e a tabela secundária. Para ver os campos individuais na tabela, selecione a caixa de verificação Mostrar colunas de tabela . Quando terminar de rever a estrutura de dados, clique em Seguinte.
Desmarque a caixa de verificação Armazenar uma cópia dos dados no modelo de formulário e, em seguida, clique em Seguinte.
Na caixa Introduzir um nome para esta ligação de dados , na página seguinte do assistente, escreva um nome para a ligação de dados.
Selecione a caixa de verificação Obter dados automaticamente quando o formulário é aberto .
Clique em Concluir e, em seguida, clique em Fechar na caixa de diálogo Ligações de Dados .
Ligar a primeira caixa de listagem aos dados
Agora que criou uma ligação de dados à origem de dados secundária, pode ligar a primeira caixa de listagem no modelo de formulário às tabelas na base de dados.
No modelo de formulário, faça duplo clique na caixa de lista pendente que inseriu anteriormente.
Clique no separador Dados.
Na caixa de diálogo Propriedades da Caixa de Listagem Pendente , em Entradas da caixa De listagem, clique em Procurar valores de uma origem de dados externa.
Na caixa Origem de dados , certifique-se de que a ligação de dados que criou está selecionada.
Clique em Selecionar XPath
junto à caixa Entradas .Na caixa de diálogo Selecionar um Campo ou Grupo , clique no nome da tabela que contém os dados que pretende mostrar na lista pendente (neste exemplo, d:Categorias ) e, em seguida, clique em OK.
Nota
O fundo amarelo na caixa de diálogo Selecionar um Campo ou Grupo indica que está a trabalhar com uma origem de dados secundária.
Clique em Selecionar XPath
junto à caixa Valor .Na caixa de diálogo Selecionar um Campo ou Grupo , certifique-se de que o campo de ligação (neste exemplo, :CategoryID) está selecionado e, em seguida, clique em OK. Este é o valor que será guardado quando o utilizador fizer uma seleção na caixa de listagem.
Clique em Selecionar XPath
junto à caixa Nome a apresentar.Na caixa de diálogo Selecionar um Campo ou Grupo , clique no nome do campo que pretende apresentar na lista pendente (neste exemplo, :CategoryName).
Clique duas vezes em OK.
Ligar a segunda caixa de listagem aos dados
Agora, terá de ligar a segunda caixa de listagem à base de dados. Ao efetuar esta ligação de dados, vai querer aplicar um filtro à segunda caixa de listagem. Este filtro irá preencher a segunda caixa de listagem com os valores adequados, com base no valor selecionado na primeira caixa de listagem.
No modelo de formulário, faça duplo clique na caixa de listagem padrão.
Clique no separador Dados.
Na caixa de diálogo Propriedades da Caixa de Listagem , em Entradas da caixa de listagem, clique em Procurar valores de uma origem de dados externa.
Na caixa Origem de dados , certifique-se de que a ligação de dados que criou está selecionada.
Clique em Selecionar XPath
junto à caixa Entradas .Na caixa de diálogo Selecionar um Campo ou Grupo , expanda o grupo primário (neste exemplo, d:Categorias) e, em seguida, clique no grupo secundário que corresponde à tabela que contém os dados que pretende apresentar na caixa de listagem em cascata (neste exemplo, Produtos).
Clique em Filtrar Dados.
Na caixa de diálogo Filtrar Dados , clique em Adicionar.
Na caixa de diálogo Especificar Condições do Filtro , na primeira caixa , certifique-se de que o campo de ligação da tabela secundária (neste exemplo, Produtos) está selecionado.
Importante
Se os campos de ligação tiverem o mesmo nome em ambas as tabelas, certifique-se de que seleciona o correto. Os campos de cada tabela são ordenados em conjunto na lista. Por conseguinte, pode utilizar os nomes dos campos adjacentes para determinar qual é o correto. Neste exemplo, selecionamos o campo CategoryID que aparece com os outros campos da tabela Produtos.
Na terceira caixa, clique em Selecionar um campo ou grupo.
Na caixa Origem de dados , na caixa de diálogo Selecionar um Campo ou Grupo , clique em Principal, clique no campo listBox1 e, em seguida, clique em OK.
Configurou agora um filtro que compara o valor selecionado na caixa de listagem pendente (campo listBox1) com a lista de valores na caixa de listagem padrão.Clique em OK três vezes para regressar à caixa de diálogo Propriedades da Caixa de Listagem .
Clique em Selecionar XPath
junto à caixa Valor .Na caixa de diálogo Selecionar um Campo ou Grupo , selecione o valor que pretende guardar quando o utilizador fizer uma seleção na caixa de listagem. Neste exemplo, queremos guardar o campo IDDoProduto para utilização posterior. Por conseguinte, selecionamos o grupo :P roductID e, em seguida, clicamos em OK.
Clique em Selecionar XPath
junto à caixa Nome a apresentar.Na caixa de diálogo Selecionar um Campo ou Grupo , clique no nome do campo que pretende mostrar na caixa de listagem (neste exemplo, :P roductName).
Clique duas vezes em OK.
Testar as caixas de listagem
Agora que ligou a segunda caixa de listagem à base de dados e aplicou o filtro, está pronto para testar as caixas de lista para se certificar de que funcionam corretamente.
- Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
- Selecione um valor na caixa de listagem pendente. A caixa de listagem padrão deve mostrar os valores adequados da tabela secundária, consoante o campo de ligação que escolheu.
Sugestão
Se as caixas de listagem não funcionarem corretamente, reveja o filtro da segunda caixa de listagem para se certificar de que compara o campo listBox1 com o campo IDDaCategoria .