Como usar o script para exclusões em cascata em tabelas que possuem um relacionamento master/detail no InfoPath

Traduções deste artigo Traduções deste artigo
ID do artigo: 892952 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

INTRODUÇÃO

Este artigo descreve como usar o script para exclusões em cascata em tabelas que tenham um relacionamento mestre/detalhes no Microsoft Office InfoPath. Você pode usar esse código para excluir itens de detalhe que são vinculados a um item mestre usando um campo de chave quando você excluir o item mestre.

Mais Informações

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades. Para criar tabelas que possuem um relacionamento mestre/detalhes onde itens detalhados relacionados são excluídos quando o item mestre é excluído, execute essas etapas:
  1. Iniciar o InfoPath e, em seguida, abra um novo formulário em branco. Para fazer isso, execute as seguintes etapas:

    para o InfoPath 2007
    1. No painel esquerdo da caixa de diálogo Preencher um formulário , clique em design a Form Template .
    2. De criar uma janela de modelo de formulário, clique em branco e, em seguida, clique em OK .
    para o InfoPath 2003
    1. No painel esquerdo da caixa de diálogo Preencher um formulário , clique em criar um formulário .
    2. No painel direito, clique em Novo formulário em branco .
  2. Inserir duas tabelas de repetição. Para fazer isso, execute as seguintes etapas:

    para o InfoPath 2007
    1. No menu Inserir , clique em Tabela de repetição .
    2. Definir o número de colunas para 2 e, em seguida, clique em OK .
    3. Repita a etapa um e etapa b para inserir outra tabela de repetição.
    para o InfoPath 2003
    1. No menu Inserir , clique em Mais controles .
    2. Em Inserir controles no painel de tarefas controles , clique em Tabela de repetição .
    3. Definir o número de colunas para 2 e, em seguida, clique em OK .
    4. Repita a etapa b e c para inserir outra tabela de repetição de etapa.
  3. Criar duas tabelas de repetição mais e em seguida, vincular duas novas tabelas aos mesmos dados como os primeiro duas tabelas de repetição. Para fazer isso, execute as seguintes etapas:
    1. No menu Exibir , clique em Fonte de dados .
    2. No painel de tarefas Fonte de dados , expanda Grupo1 .
    3. Clique com o botão direito do mouse grupo2 e, em seguida, clique em Tabela de repetição .
    4. No painel de tarefas Fonte de dados , expanda grupo3 .
    5. Clique com o botão direito do mouse grupo4 e, em seguida, clique em Tabela de repetição .
  4. Cria uma relação mestre/detalhes entre as duas tabelas que você criou na etapa 3. Para fazer isso, execute as seguintes etapas:
    1. Clique com o botão direito da primeira tabela e clique em Propriedades da tabela de repetição .

      Observação Esta tabela é a terceira tabela da parte superior do formulário.
    2. Na caixa de diálogo Propriedades de tabela de repetição , clique na guia Mestre/detalhes .
    3. Em configurações de mestre/detalhes , clique em Definir como mestre .
    4. Na caixa Identificação de mestre , digite Master1 e, em seguida, clique em OK .
    5. Clique com o botão direito a próxima tabela e clique em Propriedades da tabela de repetição .

      Observação Esta tabela é a quarta tabela da parte superior do formulário.
    6. Na caixa de diálogo Propriedades de tabela de repetição , clique na guia Mestre/detalhes .
    7. Em configurações de mestre/detalhes , clique em Definir como detalhes .
    8. Na caixa vincular à identificação de mestre , selecione Master1 .
    9. Em Vincular mestre e de detalhes , clique em pelo campo de chave .
    10. Clique no ícone Selecionar XPath para a direita da caixa campo de chave (mestre) e, em seguida, clique em campo1 .
    11. Clique no ícone Selecionar XPath para a direita da caixa campo de chave (detalhes) , clique em campo3 e, em seguida, clique em OK .
  5. Inserir código para forçar exclusões em cascata no evento OnAfterChange para o campo na tabela Detalhes de chave. Para fazer isso, execute as seguintes etapas:

    para o InfoPath 2007
    1. No painel de tarefas Fonte de dados , clique com o botão direito campo1 em grupo2 , clique em programação e clique Em após alterar evento .
    2. Adicione o seguinte código na janela de edição de script.

      Observação Substitua os espaços reservados para campos e os espaços reservados grupo com os nomes dos grupos e campos que você deseja usar.
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    3. No menu arquivo , clique em Salvar .
    4. No menu arquivo , clique em Sair .
    para o InfoPath 2003
    1. No painel de tarefas Fonte de dados , clique campo1 em grupo2 com o botão direito do mouse e, em seguida, clique em Propriedades .
    2. Na caixa de diálogo Propriedades de grupo do campo ou , clique na guia validação e manipuladores de eventos .
    3. Na lista eventos , clique em OnAfterChange e, em seguida, clique em Editar .
    4. Adicione o seguinte código na janela de edição de script.

      Observação Substitua os espaços reservados para campos e os espaços reservados grupo com os nomes dos grupos e campos que você deseja usar.
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    5. No menu arquivo , clique em Sair para fechar a janela de edição.
    6. Clique em OK para fechar a caixa de diálogo Propriedades de grupo do campo ou .

Visualize o formulário para demonstrar como works.To código fazer isso, execute essas etapas:
  1. para o InfoPath 2007

    No menu arquivo , aponte para Visualizar e, em seguida, clique em formulário .

    para o InfoPath 2003

    No menu arquivo , aponte para Visualizar formulário e, em seguida, clique em padrão
  2. Insira alguns valores de teste na primeira tabela no formulário. Esta tabela é o mestre de tabela. Para fazer isso, execute as seguintes etapas:
    1. Na primeira coluna da primeira linha, digite Test1 .
    2. Na segunda coluna da primeira linha, digite Master1 .
    3. Sob a linha onde você digitou apenas os dados, clique em Inserir item para adicionar uma nova linha à primeira tabela.
    4. Na primeira coluna da segunda linha, digite Test2 .
    5. Na segunda coluna da segunda linha, digite Master2 .
    6. Se você desejar adicionar mais linhas, repita as etapas 2 c a 2e.
  3. Insira alguns valores de teste na segunda tabela no formulário. Esta tabela é a tabela Detalhes do. Para fazer isso, execute as seguintes etapas:
    1. Na primeira coluna da primeira linha, digite Test1 .
    2. Na segunda coluna da primeira linha, digite Detail1 .
    3. Sob a linha onde você digitou apenas os dados, clique em Inserir item para adicionar uma nova linha para a segunda tabela.
    4. Na primeira coluna da segunda linha, digite Test2 .
    5. Na segunda coluna da segunda linha, digite Detail2 .
    6. Se você desejar adicionar mais linhas, repita as etapas 2 c a 2e.
  4. Teste as tabelas de mestre/detalhes. Selecione cada linha na terceira tabela, um de cada vez. A quarta tabela mostra somente as linhas da segunda tabela que têm o mesmo valor na primeira coluna como a linha selecionada na terceira tabela.
  5. Excluir uma linha de mestre de tabela. Para fazer isso, execute as seguintes etapas:
    1. Na terceira tabela, selecione a segunda linha onde a primeira coluna contém "Test2".
    2. Clique na seta ao lado da linha selecionada e, em seguida, clique em Remover grupo2 .

      Observação As linhas que tenham o mesmo texto na primeira coluna são automaticamente excluídas da tabela quarta pelo código de exemplo. Por exemplo, "Test2" é excluído.

Propriedades

ID do artigo: 892952 - Última revisão: terça-feira, 30 de janeiro de 2007 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
  • Microsoft Office InfoPath 2007
Palavras-chave: 
kbmt kbxml kbcodesnippet kbcode kbprogramming kbhowto KB892952 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 892952

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com