Метод DataRecordset.GetMatchingRowsForRefreshConflict (Visio)
Возвращает массив идентификаторов строк набора записей данных, связанных с фигурой, конфликтующей после обновления набора записей данных.
Примечание.
Этот объект или элемент Visio доступен только лицензированным пользователям Visio профессиональный 2013.
Синтаксис
expression. GetMatchingRowsForRefreshConflict (ShapeInConflict)
Выражение Выражение, возвращающее объект DataRecordset .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
ShapeInConflict | Обязательный | Shape | Фигура, связанная с данными, конфликтующая после обновления набора записей данных. |
Возвращаемое значение
Long()
Замечания
Метод GetAllRefreshConflicts возвращает массив фигур, в которых существует конфликт между данными в фигуре и данными в строке data-recordset, с которой связана фигура. Чтобы определить, какие строки набора данных вызвали конфликт, можно передать каждую из этих фигур в свою очередь методу GetMatchingRowsForRefreshConflict , который возвращает массив строк, конфликтующих для данной фигуры.
Строки в наборе записей данных могут конфликтовать, если две или более из них имеют одинаковые первичные ключи и могут связываться с одной и той же фигурой. В этом случае метод GetMatchingRowsForRefreshConflict возвращает массив, содержащий не менее двух идентификаторов строк.
Конфликты также могут возникать, если из набора записей данных удалена строка, ранее связанная с данными. В этом случае метод возвращает пустой массив.
Чтобы удалить конфликт, передайте фигуру с конфликтом в метод RemoveRefreshConflict , который удаляет конфликтующую информацию из текущего документа. Сведения о конфликтах сохраняются в текущем документе до тех пор, пока вы не удалите фигуру в конфликте или не вызовете метод RemoveRefreshConflict для фигуры.
Пример
Этот макрос Microsoft Visual Basic для приложений (VBA) показывает, как использовать метод GetAllRefreshConflicts, чтобы определить, какие фигуры, если таковые имеются, имеют конфликты после обновления набора записей данных, а затем использовать метод GetMatchingRowsForRefreshConflict, чтобы определить, какие строки или строки набора записей данных вызывают конфликт. Он обновляет недавно добавленный набор данных и, если не обнаруживает результирующие конфликты, выводит сообщение "Нет конфликтов" в окне Интерпретации. Если конфликты не обнаруживаются, каждая фигура с конфликтами передается методу GetMatchingRowsForRefreshConflict и выводит результирующие идентификаторы строк в том же окне.
Перед выполнением этого макроса убедитесь, что последний добавленный набор записей данных является подключенным (не основанным на XML) набором данных и что подключение к исходному источнику данных по-прежнему доступно. Затем удалите строку в источнике данных или внесите другое изменение, которое вызовет конфликт при обновлении набора записей данных.
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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.