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 | Shape | Ein Shape, das mit Daten verknüpft ist und nach dem Aktualisieren des Datenrecordsets einen Konflikt aufweist. |
Rückgabewert
Long()
Hinweise
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 mindestens zwei 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.