DataRecordset.RemoveRefreshConflict 方法 (Visio)

从当前文档中清除有关数据链接形状的冲突的信息。

注意

此 Visio 对象或成员仅供 Visio Professional 2013 的授权用户使用。

语法

表达式RemoveRefreshConflict (ShapeInConflict)

表达 返回 DataRecordset 对象的表达式。

参数

名称 必需/可选 数据类型 说明
ShapeInConflict 必需 [IVSHAPE] 链接到数据的形状,该数据在刷新数据记录集后发生冲突。

返回值

Nothing

注解

如果 ShapeInConflict 实际上没有冲突,则 该方法将不起作用。

如果选择不删除有关冲突的信息,则该信息将永久存在于当前文档中。

示例

此 Microsoft Visual Basic for Applications (VBA) 宏演示如何使用 RemoveRefreshConflict 方法删除冲突。 它调用 GetAllRefreshConflicts 方法来确定在刷新数据记录集后哪些形状(如果有)存在冲突。 然后,它调用 GetMatchingRowsForRefreshConflict 方法来确定哪些数据记录集行导致冲突。

该方法将刷新最近添加的数据记录集,如果发现未产生任何冲突,则在“立即”窗口中输出“无冲突”。 如果的确发现冲突,该方法就会将存在冲突的每个形状传递给 GetMatchingRowsForRefreshConflict 方法,并在同一窗口中输出产生的行 ID。 然后再将存在冲突的形状传递给 RemoveRefreshConflict 方法,以消除冲突。

在运行此宏之前,请确保最近添加的数据记录集是已连接(不基于 XML)的数据记录集,并且到原始数据源的连接仍然可用。 然后在数据源中删除行或进行其他可在刷新数据记录集时引起冲突的更改。

Public Sub RemoveRefreshConflicts_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 
             
            Call vsoDataRecordset.RemoveRefreshConflict (vsoShapeInConflict) 
            
        Next intShapeCount 
         
    End If 
     
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。