Freigeben über


DataRecordset.GetMatchingRowsForRefreshConflict-Methode (Visio)

Gibt ein Array mit Zeilen-IDs von Datenrecordset-Zeilen zurück, die mit einem Shape verknüpft sind und nach dem Aktualisieren des Datenrecordsets in Konflikt stehen.

Hinweis

Dieses Visio-Objekt oder dieses Visio-Mitglied ist nur für lizenzierte Benutzer von Visio Professional 2013 verfügbar.

Syntax

Ausdruck. GetMatchingRowsForRefreshConflict (ShapeInConflict)

Ausdruck Ein Ausdruck, der ein DataRecordset-Objekt zurückgibt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
ShapeInConflict Erforderlich Form Ein Shape, das mit Daten verknüpft ist und nach dem Aktualisieren des Datenrecordsets einen Konflikt aufweist.

Rückgabewert

Long()

HinwBemerkungeneise

Die GetAllRefreshConflicts-Methode gibt ein Array von Shapes zurück, bei dem ein Konflikt zwischen Daten in der Form und Daten in der Datenrecordsetzeile besteht, mit der das Shape verknüpft ist. Um zu bestimmen, welche Datenrecordsetzeilen einen Konflikt verursacht haben, können Sie dann jede dieser Shapes nacheinander an die GetMatchingRowsForRefreshConflict-Methode übergeben, die ein Array von Zeilen zurückgibt, die für eine bestimmte Form in Konflikt stehen.

Zeilen im Datenrecordset können in Konflikt geraten, wenn zwei oder mehr von ihnen identische Primärschlüssel aufweisen und möglicherweise mit derselben Form verknüpft sind. Wenn dieser Fall auftritt, gibt GetMatchingRowsForRefreshConflict ein Array zurück, das mindestens zwei Zeilen-IDs enthält.

Konflikte können außerdem auftreten, wenn eine vorherige datenverknüpfte Zeile aus dem Datensatz entfernt wurde. Wenn dieser Fall auftritt, gibt die Methode einen leeren Array zurück.

Um einen Konflikt zu entfernen, übergeben Sie die Form, die den Konflikt aufweist, an die RemoveRefreshConflict-Methode , die die in Konflikt stehenden Informationen aus dem aktuellen Dokument entfernt. Informationen zu Konflikten bleiben so lange im aktuellen Dokument enthalten, bis Sie entweder das Shape mit dem Konflikt löschen oder die RemoveRefreshConflict-Methode für das Shape aufrufen.

Beispiel

Dieses VBA-Makro (Microsoft Visual Basic for Applications) zeigt, wie Sie mithilfe der GetAllRefreshConflicts-Methode ermitteln, welche Shapes ggf. Konflikte aufweisen, nachdem ein Datenrecordset aktualisiert wurde. Anschließend wird mithilfe der GetMatchingRowsForRefreshConflict-Methode ermittelt, welche Datenrecordsetzeile oder -zeilen den Konflikt verursachen. Es aktualisiert das zuletzt hinzugefügte Datenrecordset. Wenn keine Konflikte gefunden werden, wird im Direktfenster "Keine Konflikte" ausgegeben. Wenn Konflikte gefunden werden, wird jede der Shapes mit Konflikten an die GetMatchingRowsForRefreshConflict-Methode übergeben und die resultierenden Zeilen-IDs im selben Fenster ausgegeben.

Stellen Sie vor dem Ausführen dieses Makros sicher, dass es sich bei dem zuletzt hinzugefügten Datenrecordset um ein verbundenes (nicht auf XML basierendes) Datenrecordset handelt und dass die Verbindung zur ursprünglichen Datenquelle weiterhin verfügbar ist. Löschen Sie dann eine Zeile in der Datenquelle, oder nehmen Sie eine andere Änderung vor, die beim Aktualisieren des Datenrecordsets einen Konflikt verursacht.

Public Sub GetMatchingRowsForRefreshConflict_Example() 
 
    Dim vsoDataRecordset As Visio.DataRecordset 
    Dim intRecordsetCount As Integer 
    Dim intShapeCount As Integer 
    Dim vsoShapes() As Visio.Shape 
     
    Dim intRowCount As Integer 
    Dim vsoShapeInConflict As Visio.Shape 
     
    Dim alngRowIDs() As Long 
    Dim lngvsoRowID As Long 
         
    intRecordsetCount = Visio.ActiveDocument.DataRecordsets.Count 
    Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intRecordsetCount) 
     
    vsoDataRecordset.Refresh 
    vsoShapes = vsoDataRecordset.GetAllRefreshConflicts 
     
    If IsEmpty(vsoShapes) Then 
        Debug.Print "No conflict" 
    Else 
        For intShapeCount = LBound(vsoShapes) To UBound(vsoShapes) 
            Set vsoShapeInConflict = vsoShapes(intShapeCount) 
            alngRowIDs = vsoDataRecordset.GetMatchingRowsForRefreshConflict(vsoShapeInConflict) 
             
            If IsEmpty(alngRowIDs) Then 
                Debug.Print "For shape:", vsoShapeInConflict.Name, "Row deleted." 
            Else 
                For intRowCount = LBound(alngRowIDs) To UBound(alngRowIDs) 
                    lngvsoRowID = alngRowIDs(intRowCount) 
                    Debug.Print "For shape:", vsoShapeInConflict.Name, "Row ID of row in conflict:", lngvsoRowID 
                Next intRowCount 
            End If 
            
        Next intShapeCount 
         
    End If 
     
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.