Поделиться через


Метод DataRecordset.RemoveRefreshConflict (Visio)

Очищает сведения о конфликте для фигуры, связанной с данными, из текущего документа.

Примечание.

Этот объект или элемент Visio доступен только лицензированным пользователям Visio профессиональный 2013.

Синтаксис

expression. RemoveRefreshConflict (ShapeInConflict)

Выражение Выражение, возвращающее объект DataRecordset .

Параметры

Имя Обязательный или необязательный Тип данных Описание
ShapeInConflict Обязательный [IVSHAPE] Фигура, связанная с данными, конфликтующая после обновления набора записей данных.

Возвращаемое значение

Отсутствует

Примечания

Если shapeInConflict фактически не имеет конфликтов, метод не будет действовать.

Если вы решили не удалять сведения о конфликте, эти сведения будут сохраняться в текущем документе на неопределенный срок.

Пример

Этот макрос Microsoft Visual Basic для приложений (VBA) показывает, как использовать метод RemoveRefreshConflict для устранения конфликтов. Он вызывает метод GetAllRefreshConflicts , чтобы определить, какие фигуры, если таковые имеются, имеют конфликты после обновления набора записей данных. Затем он вызывает метод GetMatchingRowsForRefreshConflict , чтобы определить, какие строки или строки набора данных вызывают конфликт.

Он обновляет недавно добавленный набор данных и, если не обнаруживает результирующие конфликты, выводит сообщение "Нет конфликтов" в окне Интерпретации. Если конфликты не обнаруживаются, каждая фигура с конфликтами передается методу GetMatchingRowsForRefreshConflict и выводит результирующие идентификаторы строк в том же окне. Затем он передает фигуры с конфликтами в метод 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 и обратная связь.