Come utilizzare script per le eliminazioni a catena in tabelle con una relazione master/dettaglio in InfoPath

Traduzione articoli Traduzione articoli
Identificativo articolo: 892952 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

INTRODUZIONE

In questo articolo viene descritto come utilizzare script per le eliminazioni a catena in tabelle con una relazione master/dettaglio in Microsoft Office InfoPath. ╚ possibile utilizzare questo codice per eliminare dettaglio gli elementi collegati a un master elemento utilizzando un campo chiave quando si elimina l'elemento principale.

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non Ŕ limitato a, le garanzie implicite di commerciabilitÓ o idoneitÓ per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalitÓ di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalitÓ aggiuntive o creare procedure per soddisfare specifiche esigenze. Per creare tabelle che hanno una relazione master/dettaglio in cui gli elementi di dettaglio correlati vengono eliminati quando viene eliminato l'elemento principale, attenersi alla seguente procedura:
  1. Avviare InfoPath e aprire un nuovo modulo vuoto. Per effettuare questa operazione, attenersi alla seguente procedura:

    per InfoPath 2007
    1. Nel riquadro sinistro della finestra di dialogo Compila modulo , fare clic su Progetta modello di modulo .
    2. Nella finestra di progettazione di una finestra di modello di modulo, fare clic su vuoto e scegliere OK .
    per InfoPath 2003
    1. Nel riquadro sinistro della finestra di dialogo Compila modulo , fare clic su Progetta modulo .
    2. Nel riquadro destro, fare clic su Nuovo modulo vuoto .
  2. Inserire due tabelle ripetute. Per effettuare questa operazione, attenersi alla seguente procedura:

    per InfoPath 2007
    1. Dal menu Inserisci , scegliere Tabella ripetuta .
    2. Impostare il numero di colonne a 2 e quindi fare clic su OK .
    3. Ripetere i passaggio un e passaggio b per inserire un'altra tabella ripetuta.
    per InfoPath 2003
    1. Dal menu Inserisci , scegliere Altri controlli .
    2. Nella sezione Inserisci controlli nel riquadro attivitÓ controlli fare clic su Tabella ripetuta .
    3. Impostare il numero di colonne a 2 e quindi fare clic su OK .
    4. Ripetere il passaggio b e il passaggio c per inserire un'altra tabella ripetuta.
  3. Creare due ulteriori tabelle ripetute e quindi associare le due nuove tabelle agli stessi dati come il primo due tabelle ripetute. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Dal menu Visualizza , scegliere Origine dati .
    2. Nel riquadro attivitÓ Origine dati , Ŕ necessario espandere group1 .
    3. Fare clic con il pulsante destro del mouse su group2 e quindi fare clic su Tabella ripetuta .
    4. Nel riquadro attivitÓ Origine dati , Ŕ necessario espandere group3 .
    5. Fare clic con il pulsante destro del mouse su group4 e quindi fare clic su Tabella ripetuta .
  4. Creare una relazione master/dettaglio tra le due tabelle creato nel passaggio 3. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Fare clic con il pulsante destro del mouse su della prima tabella e quindi fare clic su ProprietÓ-tabella ripetuta .

      Nota In questa tabella Ŕ la terza tabella dalla parte superiore del modulo.
    2. Nella finestra di dialogo ProprietÓ-tabella ripetuta , fare clic sulla scheda Master/dettaglio .
    3. Fare clic su Imposta come master in Impostazioni master/dettaglio .
    4. Nella casella ID Master digitare Master1 e quindi fare clic su OK .
    5. Fare clic con il pulsante destro del mouse nella tabella successiva e quindi fare clic su ProprietÓ-tabella ripetuta .

      Nota In questa tabella Ŕ la quarta tabella dalla parte superiore del modulo.
    6. Nella finestra di dialogo ProprietÓ-tabella ripetuta , fare clic sulla scheda Master/dettaglio .
    7. Fare clic su Imposta come dettaglio in Impostazioni master/dettaglio .
    8. Nella casella Collega all'ID master , selezionare Master1 .
    9. In collegamento master e dettaglio fare clic su base al campo chiave .
    10. Fare clic sull'icona Seleziona XPath a destra della casella del campo chiave (master) e quindi fare clic su campo1 .
    11. Fare clic sull'icona Seleziona XPath a destra della casella del campo chiave (dettaglio) , fare clic su campo3 e quindi fare clic su OK .
  5. Inserire il codice per imporre le eliminazioni a catena nell'evento OnAfterChange per il campo chiave nella tabella dettagli. Per effettuare questa operazione, attenersi alla seguente procedura:

    per InfoPath 2007
    1. Nel riquadro attivitÓ Origine dati , fare clic su programmazione fare clic con il pulsante destro del mouse campo1 in group2 , quindi scegliere Evento OnAfterChange .
    2. Aggiungere il codice seguente alla finestra di modifica di script.

      Nota Sostituire i segnaposto di campo e i segnaposto di gruppo con i nomi dei gruppi e i campi che si desidera utilizzare.
      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. Nel menu file , fare clic su Salva .
    4. Nel menu file , fare clic su Esci .
    per InfoPath 2003
    1. Nel riquadro attivitÓ Origine dati , fare clic con il pulsante destro del mouse campo1 in group2 e scegliere ProprietÓ .
    2. Nella finestra di dialogo ProprietÓ campo o gruppo , fare clic sulla scheda convalida e gestori eventi .
    3. Nell'elenco eventi , fare clic su OnAfterChange e quindi fare clic su Modifica .
    4. Aggiungere il codice seguente alla finestra di modifica di script.

      Nota Sostituire i segnaposto di campo e i segnaposto di gruppo con i nomi dei gruppi e i campi che si desidera utilizzare.
      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. Dal menu file , scegliere Esci per chiudere la finestra di modifica.
    6. Fare clic su OK per chiudere la finestra di dialogo ProprietÓ campo o gruppo .

L'anteprima del modulo per illustrare come works.To il codice di eseguire questa operazione, attenersi alla seguente procedura:
  1. per InfoPath 2007

    Anteprima dal menu file , quindi Form .

    per InfoPath 2003

    Dal menu file , scegliere Anteprima modulo , quindi predefinito
  2. Consente di inserire alcuni valori di test della prima tabella nel modulo. In questa tabella Ŕ il master tabella. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Nella prima colonna della prima riga, Ŕ necessario digitare Test1 .
    2. Nella seconda colonna della prima riga dei comandi digitare Master1 .
    3. Fare la riga in cui appena digitato i dati, Inserisci elemento per aggiungere una nuova riga della prima tabella.
    4. Nella prima colonna della seconda riga, Ŕ necessario digitare Test2 .
    5. Nella seconda colonna della seconda riga, Ŕ necessario digitare Master2 .
    6. Se si desidera aggiungere pi¨ righe, ripetere i passaggi 2c tramite 2e.
  3. Consente di inserire alcuni valori di test della seconda tabella nel modulo. In questa tabella Ŕ la tabella di dettagli. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Nella prima colonna della prima riga, Ŕ necessario digitare Test1 .
    2. Nella seconda colonna della prima riga dei comandi digitare Detail1 .
    3. Sotto la riga in cui appena digitato i dati, scegliere l'opzione Inserisci elemento per aggiungere una nuova riga nella seconda tabella.
    4. Nella prima colonna della seconda riga, Ŕ necessario digitare Test2 .
    5. Nella seconda colonna della seconda riga, Ŕ necessario digitare Detail2 .
    6. Se si desidera aggiungere pi¨ righe, ripetere i passaggi 2c tramite 2e.
  4. Verificare le tabelle master/dettaglio. Selezionare ogni riga nella terza tabella, una per volta. Nella tabella quarta sono indicate solo le righe della seconda tabella che hanno lo stesso valore nella prima colonna della riga selezionata nella terza tabella.
  5. Eliminare una riga il master tabella. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Nella tabella terza, selezionare la seconda riga in cui la prima colonna contiene "Test2".
    2. Fare clic sulla freccia accanto alla riga selezionata e quindi fare clic su Rimuovi group2 .

      Nota Le righe che hanno lo stesso testo nella prima colonna vengono eliminate automaticamente dalla tabella quarta dal codice di esempio. Ad esempio, "Test2" viene eliminato.

ProprietÓ

Identificativo articolo: 892952 - Ultima modifica: martedý 30 gennaio 2007 - Revisione: 2.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
  • Microsoft Office InfoPath 2007
Chiavi:á
kbmt kbxml kbcodesnippet kbcode kbprogramming kbhowto KB892952 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 892952
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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