Verwendung von Skripts für Löschweitergaben in Tabellen, die eine Master-Detail-Beziehung in InfoPath haben

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 892952 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

EINFÜHRUNG

Dieser Artikel beschreibt, Skript für cascading Löschvorgänge in Tabellen verwenden, die in Microsoft Office InfoPath eine Master-Detail-Beziehung haben. Dieser Code können Sie Detailelemente löschen, die mit einem master-Element verknüpft sind, ein Schlüsselfeld mit, wenn Sie das master-Element löschen.

Weitere Informationen

Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent. Dies umfasst, ist jedoch nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der Programmiersprache, die Programmierungsbeispiele ist und mit den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden vertraut sind. Microsoft Support-Technikern helfen Erläuterung die Funktionalität einer bestimmten Prozedur, Sie werden ändert jedoch nicht diese Beispiele bieten Funktionen hinzugefügt oder Verfahren, um Ihren Anforderungen entsprechend zu erstellen. Gehen Sie folgendermaßen vor um Tabellen zu erstellen, die eine Master/Detail-Beziehung aufweisen, werden verwandte Detailelemente gelöscht, wenn master Element gelöscht wird:
  1. Starten Sie InfoPath, und öffnen Sie ein neues leeres Formular. Gehen Sie hierzu folgendermaßen vor:

    für InfoPath 2007
    1. Klicken Sie im linken Bereich des Dialogfeldes Ein Formular ausfüllen auf eine Formularvorlage entwerfen .
    2. Fenster ein Formular entwerfen klicken Sie auf leeren , und klicken Sie dann auf OK .
    für InfoPath 2003
    1. Klicken Sie im linken Bereich des Dialogfeldes Ein Formular ausfüllen auf ein Formular entwerfen .
    2. Klicken Sie im rechten Fensterbereich auf Neues Formular .
  2. Legen Sie zwei wiederholte Tabellen. Gehen Sie hierzu folgendermaßen vor:

    für InfoPath 2007
    1. Klicken Sie im Menü Einfügen auf Wiederholte Tabelle .
    2. Die Anzahl der Spalten auf 2 festgelegt und klicken Sie dann auf OK .
    3. Wiederholen Sie Schritt ein und Schritt b, um eine andere wiederholte Tabelle einfügen.
    für InfoPath 2003
    1. Klicken Sie im Menü Einfügen auf Weitere Steuerelemente .
    2. Klicken Sie unter Steuerelemente einfügen im Aufgabenbereich Steuerelemente auf Wiederholte Tabelle .
    3. Die Anzahl der Spalten auf 2 festgelegt und klicken Sie dann auf OK .
    4. Wiederholen Sie die Schritt Schritt, b und c, um eine andere wiederholte Tabelle einzufügen.
  3. Erstellen Sie zwei weitere wiederholten Tabellen, und dann binden Sie zwei neuen Tabellen an die gleichen Daten wie die ersten zwei wiederholten Tabellen. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie im Menü Ansicht auf Datenquelle .
    2. Erweitern Sie im Aufgabenbereich Datenquelle Gruppe1 .
    3. Klicken Sie mit der rechten Maustaste auf gruppe2 , und klicken Sie dann auf Wiederholte Tabelle .
    4. Erweitern Sie im Aufgabenbereich Datenquelle Gruppe3 .
    5. Klicken Sie mit der rechten Maustaste auf group4 , und klicken Sie dann auf Wiederholte Tabelle .
  4. Erstellen Sie eine Master-Detail-Beziehung zwischen den beiden Tabellen, die Sie in Schritt 3 erstellt haben. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie mit der rechten Maustaste auf die erste Tabelle, und klicken Sie die Eigenschaften der wiederholten Tabelle .

      Hinweis: Diese Tabelle ist die dritte Tabelle vom oberen Rand des Formulars.
    2. Klicken Sie im Dialogfeld Eigenschaften der wiederholten Tabelle auf die Master-Detail -Registerkarte.
    3. Klicken Sie unter Master/Details-Einstellungen auf als Master festlegen .
    4. Klicken Sie im Master-ID Geben Sie Master1 und klicken Sie dann auf OK .
    5. Klicken Sie mit der rechten Maustaste auf die nächste Tabelle, und klicken Sie die Eigenschaften der wiederholten Tabelle .

      Hinweis: Diese Tabelle ist die vierte Tabelle vom oberen Rand des Formulars.
    6. Klicken Sie im Dialogfeld Eigenschaften der wiederholten Tabelle auf die Master-Detail -Registerkarte.
    7. Klicken Sie unter Master/Details-Einstellungen auf als Details festlegen .
    8. Wählen Sie im mit master-ID Master1 .
    9. Klicken Sie unter Link Master- und Detaildatensätzen auf durch Schlüsselfeld .
    10. Klicken Sie auf das Symbol Auf XPath festlegen , um die rechts vom Feld Schlüsselfeld (Master) , und klicken Sie dann auf Feld1 .
    11. Klicken Sie auf das Symbol Auf XPath festlegen , um die rechts vom Feld Schlüsselfeld (Details) , klicken Sie auf feld3 und klicken Sie dann auf OK .
  5. Fügen Sie Code Löschweitergaben im OnAfterChange -Ereignis für das Schlüsselfeld in der Tabelle Details zu erzwingen. Gehen Sie hierzu folgendermaßen vor:

    für InfoPath 2007
    1. Klicken Sie im Aufgabenbereich Datenquelle mit der rechten Maustaste auf Feld1 im gruppe2 , klicken Sie auf Programmierung und klicken Sie dann auf On After Change-Ereignis .
    2. Fügen Sie den folgenden Code in das Fenster Skript bearbeiten.

      Hinweis: Ersetzen Sie die Feld-Platzhalter und die Gruppe Platzhalter durch die Namen von den Gruppen und Feldern, die Sie verwenden möchten.
      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. Klicken Sie im Menü Datei auf Speichern .
    4. Klicken Sie im Menü Datei auf Beenden .
    für InfoPath 2003
    1. Klicken Sie im Aufgabenbereich Datenquelle mit der rechten Maustaste auf Feld1 im gruppe2 , und klicken Sie dann auf Eigenschaften .
    2. Klicken Sie im Dialogfeld Feld oder Gruppe klicken Sie auf die Registerkarte Gültigkeitsprüfung und Ereignishandler .
    3. Klicken Sie in der Liste Ereignisse auf OnAfterChange , und klicken Sie dann auf Bearbeiten .
    4. Fügen Sie den folgenden Code in das Fenster Skript bearbeiten.

      Hinweis: Ersetzen Sie die Feld-Platzhalter und die Gruppe Platzhalter durch die Namen von den Gruppen und Feldern, die Sie verwenden möchten.
      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. Klicken Sie im Menü Datei auf Beenden , um das Bearbeitungsfenster für das Schließen.
    6. Klicken Sie auf OK , um das Dialogfeld Feld- oder Gruppeneigenschaften zu schließen.

Zeigen eine Vorschau des Formulars zu veranschaulichen, wie der Code works.To dazu, gehen Sie folgendermaßen vor:
  1. für InfoPath 2007

    Zeigen Sie im Menü Datei auf Vorschau , und klicken Sie dann auf Formular .

    für InfoPath 2003

    Zeigen Sie im Menü Datei auf Formularvorschau , und klicken Sie dann auf Standard
  2. Die erste Tabelle im Formular einige Test Werte einfügen. Diese Tabelle ist die Masterseite Tabelle. Gehen Sie hierzu folgendermaßen vor:
    1. Geben Sie in der ersten Spalte der ersten Zeile Test1 ein.
    2. Geben Sie in der zweiten Spalte der ersten Zeile Master1 .
    3. Klicken Sie unter der Zeile, in denen nur die Daten eingegeben auf Element einfügen , um eine neue Zeile der ersten Tabelle hinzuzufügen.
    4. Geben Sie in der ersten Spalte der zweiten Zeile Test2 .
    5. Geben Sie in der zweiten Spalte der zweiten Zeile Master2 .
    6. Wenn Sie weitere Zeilen hinzufügen möchten, wiederholen Sie die Schritte 2 c bis 2e.
  3. Die zweite Tabelle im Formular einige Test Werte einfügen. Diese Tabelle ist die Tabelle. Gehen Sie hierzu folgendermaßen vor:
    1. Geben Sie in der ersten Spalte der ersten Zeile Test1 ein.
    2. Geben Sie in der zweiten Spalte der ersten Zeile Detail1 .
    3. Klicken Sie unter der Zeile, in denen nur die Daten eingegeben, wird auf Element einfügen , um eine neue Zeile in die zweite Tabelle hinzuzufügen.
    4. Geben Sie in der ersten Spalte der zweiten Zeile Test2 .
    5. Geben Sie in der zweiten Spalte der zweiten Zeile Detail2 .
    6. Wenn Sie weitere Zeilen hinzufügen möchten, wiederholen Sie die Schritte 2 c bis 2e.
  4. Testen Sie die Master-Detail-Tabellen. Wählen Sie jede Zeile in der dritten Tabelle, jeweils einzeln. Die vierte Tabelle zeigt nur die Zeilen aus der zweiten Tabelle, die den gleichen Wert wie die ausgewählte Zeile in die dritte Tabelle in der ersten Spalte haben.
  5. Eine Zeile aus dem Master löschen Tabelle. Gehen Sie hierzu folgendermaßen vor:
    1. Wählen Sie in die dritte Tabelle die zweite Zeile, in denen die erste Spalte "Test2" enthält.
    2. Klicken Sie auf den Pfeil neben der ausgewählten Zeile, und klicken Sie dann auf gruppe2 entfernen .

      Hinweis: Die Zeilen mit den gleichen Text in der ersten Spalte werden durch den Beispielcode aus der vierten Tabelle automatisch gelöscht. Beispielsweise ist "Test2" gelöscht.

Eigenschaften

Artikel-ID: 892952 - Geändert am: Dienstag, 30. Januar 2007 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
  • Microsoft Office InfoPath 2007
Keywords: 
kbmt kbxml kbcodesnippet kbcode kbprogramming kbhowto KB892952 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 892952
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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