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


О связывании фигур с данными

Примечание.

Функции подключения к данным доступны только для лицензированных пользователей Microsoft Visio профессиональный 2013.

Существует четыре аспекта подключения к данным в Visio:

  • Подключение к источнику данных
  • Связывание фигур с данными
  • Графическое представление связанных данных
  • Обновление связанных данных, измененных в источнике данных, обновление связанных фигур и разрешение последующих возможных конфликтов

Как правило реализация этих аспектов выполняется в перечисленном порядке. Это означает, что сначала вы подключаете документ Visio к источнику данных, затем связываете фигуры документа с данными в источнике, графически представляете данные в связанных фигурах и обновляете связанные данные при необходимости.

С каждым из этих аспектов связаны объекты и элементы в объектной модели Visio. В этой статье рассматривается второй из этих аспектов: связывание фигур в документе Visio с данными. Дополнительные сведения о других аспектах подключения к данным см. в следующих статьях:

Чтобы программно подключить документ Visio к источнику данных, можно использовать API Visio для подключений к данным, включающий следующие объекты и соответствующие элементы:

После подключения документа Visio к внешнему источнику данных вы можете программно связать фигуры в документе с данными из этого источника. Можно связать одну или нескольких фигур с одной строкой в наборе записей данных или несколькими строками данных в различных наборах записей данных. Однако нельзя связать фигуры с несколькими строками данных в одном наборе записей.

Вы можете связывать существующие фигуры с данными по одной фигуре или группой; или можно создавать фигуры и связывать их с данными одновременно. Вы можете указать соответствие между фигурами и строками данных, если вы его знаете, или можете позволить Visio автоматически определить соответствие на основе сравнения данных существующих фигур и данных в наборе записей.

После связывания фигур с данными можно графически представить эти данные, добавив связанные с данными рисунки в фигуры. Дополнительные сведения о связанных с данными рисунках см. в статье О графическом представлении данных.

Объекты DataRecordset и DataColumn, а также коллекция DataColumns представляют несколько свойств, методов и событий, облегчающих связывание данных. Кроме того, некоторые элементы других объектов в объектной модели Visio, включая объекты Application, Document, Page, Selection, Shape и Window, относятся к связыванию данных.

Связывание данных и данные фигуры

Связывание фигур с данными основано на том факте, что вы можете назначать данные фигуры всем фигурам Visio. В версиях Visio до Visio 2007 данные фигуры назывались настраиваемыми свойствами.

Для доступа к данным фигуры в пользовательском интерфейсе Visio и их назначения щелкните правой кнопкой мыши фигуру, наведите указатель на пункт Данные и выберите Данные фигуры. Кроме того, можно открыть и назначить данные фигуры вручную или программным способом в таблице свойств фигуры Visio. Чтобы отобразить таблицу свойств фигуры (ShapeSheet) для выделенной фигуры, щелкните фигуру правой кнопкой мыши и выберите пункт Показать таблицу свойств фигуры. Чтобы эта команда отобразилась, вы должны запустить Visio в режиме разработчика. Для этого щелкните вкладку Файл, выберите Параметры, Дополнительно, а затем в разделе Общие установите флажок Запускать в режиме разработчика.

В таблице свойств фигуры данные фигуры содержатся в разделе "Данные фигуры" (прежнее название — раздел "Настраиваемые свойства"). Чтобы обеспечить обратную совместимость, существующие элементы объектов содержат в именах "настраиваемое свойство" или "настраиваемые свойства". Если не назначить данные фигуры для определенной фигуры, раздел "Данные фигуры" не отображается в таблице свойств фигуры. Вы можете добавить раздел "Данные фигуры" в таблицу свойств фигуры. Для этого отобразите ее, как описано выше, щелкните правой кнопкой мыши в окне "Таблица свойств фигуры" и выберите пункт Добавить раздел, установите флажок Данные фигуры и нажмите кнопку ОК.

После связывания фигур с данными многие столбцы раздела "Данные фигуры" во многом соответствуют свойствам объекта DataColumn. Например, столбец Label в разделе "Данные фигуры", предоставляющий подпись, отображаемую для данных конкретной фигуры в диалоговом окне Данные фигуры, соответствует свойству DataColumn.DisplayName, управляющему именем, которое отображается для столбца связанных данных в окне Внешние данные. Дополнительные сведения о работе с объектом DataColumn см. в разделе Получение и установка свойств столбца данных.

Определение фигур, наборов записей данных и строк данных

Visio использует уникальные идентификаторы для определения фигур, наборов записей и строк данных. Идентификаторы фигур уникальны только в области страницы, на которой они находятся. После определения этих чисел их можно передать методам объектов Visio, относящихся к данным, чтобы указать точный способ связывания фигур на схеме со строками данных в доступных наборах записей.

Чтобы определить идентификатор для фигуры, получите свойство Shape.ID. Кроме того, Visio предоставляет фигурам уникальные идентификаторы или GUID. Метод Page.ShapeIDsToUniqueIDs использует массив идентификаторов фигур, а также значение перечисления из VisUniqueIDArgs, указывая, следует ли получить, создать или удалить GUID фигур. Метод Page.ShapeIDsToUniqueIDs также возвращает массив уникальных идентификаторов для переданных фигур. И наоборот, если вы знаете уникальные идентификаторы набора фигур, можно использовать метод Page.UniqueIDsToShapeIDs, чтобы получить идентификаторы для этих фигур. Для выделенных фигур используйте метод Selection.GetIDs, чтобы получить идентификаторы фигур.

Чтобы определить идентификатор для объекта DataRecordset, добавляемого в коллекцию DataRecordsets, получите значение свойства DataRecordset.ID. Чтобы определить идентификаторы для каждой строки в наборе записей данных, вызовите метод DataRecordset.GetDataRowIDs, возвращающий массив идентификаторов строк. Дополнительные сведения см. в разделе "Программный доступ к данным в наборах записей данных" статьи О подключении к данным в Visio.

Создание фигур, связанных с данными

Если нужно создать фигуры, заранее связанные с данными, на странице документа, не содержащей фигур или содержащей фигуры, отличные от тех, которые нужно связать, можно использовать методы Page.DropLinked и Page.DropManyLinkedU для создания одной или нескольких дополнительных фигур, заранее связанных с данными. Эти методы напоминают методы Page.Drop и Page.DropManyU тем, что они создают дополнительные фигуры в указанном месте на странице; но они дополнительно создают связи между новыми фигурами и указанными строками данных в указанном наборе записей данных.

Метод DropLinked возвращает новый связанный объект Shape и использует следующие параметры:

  • ObjectToDrop — определенная фигура (например, прямоугольник), которую нужно создать.
  • x — координата x центра новой фигуры на странице.
  • y — координата y центра новой фигуры на странице.
  • DataRecordsetID — значение свойства ID объекта DataRecordset, содержащего строку данных для связывания.
  • DataRowID — значение свойства ID строки данных для связывания.
  • ApplyDataGraphicAfterLink — логическое значение, указывающее, применять ли автоматически связанные с данными рисунки фигуры, если она уже содержит один из них, а если нет — применять ли последний использованный рисунок, связанный с данными. По умолчанию рисунки, связанные с данными, не применяются. Дополнительные сведения о связанных с данными рисунках см. в статье О графическом представлении данных.

В следующем примере кода показано использование метода DropLinked для создания фигуры на активной странице документа, с центром в координатах страницы (2, 2) и связью со строкой данных. В нем используется переданный объект DataRecordset, получается его идентификатор, который затем передается вместе с идентификатором связываемой строки данных в метод DropLinked. Размещенная фигура является простым прямоугольником из открываемого кодом набора элементов Basic_U.VSS, который закреплен в окне документа Visio.

В этом примере идентификатор строки данных устанавливается равным 1; перед выполнением кода убедитесь, что строка с этим идентификатором существует, или измените значение идентификатора в коде.

Public Sub DropLinkedShape(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim vsoShape As Visio.Shape 
    Dim vsoMaster As Visio.Master 
    Dim dblX As Double 
    Dim dblY As Double  
    Dim lngRowID As Long 
    Dim lngDataRecordsetID As Long 
 
    lngDataRecordsetID = vsoDataRecordset.ID 
    Set vsoMaster = Visio.Documents.OpenEx("Basic_U.VSS", 0).Masters("Rectangle") 
    x = 2 
    y = 2 
    lngRowID = 1 
    Set vsoShape = ActivePage.DropLinked(vsoMaster, dblX, dblY, lngDataRecordsetID, lngRowID, True) 
 
End Sub

Метод DropManyLinkedU аналогично создает набор связанных фигур, возвращаемый как массив идентификаторов фигур. В нем используются параметры массивов фигур для размещения, координаты и строки данных для связывания. Записи в соответствующих позициях индекса массива определяют, как связаны фигуры и строки данных, и где на странице размещаются отдельные фигуры.

Связывание существующих фигур с данными

Если вы знаете, как именно одна или несколько существующих фигур в документе Visio и одна или несколько строк в наборе записей данных соответствуют друг другу, вы можете связать существующие фигуры с данными следующими способами:

  • Связывание одной фигуры с одной строкой данных
  • Связывание выделенных фигур с одной или несколькими строками данных
  • Связывание нескольких фигур с несколькими строками данных

Кроме того, если вы не знаете точное соответствие фигуры и данных, вы можете указать, чтобы Visio выполнил наилучшее возможное сопоставление с учетом ограниченных предоставленных сведений сопоставления.

Связывание одной фигуры со строкой данных

Чтобы связать одну фигуру с одной строкой данных, используйте метод Shape.LinkToData. В этом методе используется идентификатор набора записей данных и идентификатор строки данных, а также необязательный логический флаг, указывающий, следует ли отображать связанные данные на рисунке, относящемся к данным. По умолчанию рисунок, относящийся к данным, отображается.

Связывание нескольких фигур с данными

Два элемента объекта Selection (методы Selection.LinkToData и Selection.AutomaticLink), а также метод Page.LinkShapesToDataRows дают возможность связать одну или несколько существующих фигур в выделении с данными.

Действие метода Selection.LinkToData во многом аналогично такому же методу объекта Shape, за исключением того, что он связывает со строкой данных выделенные фигуры, а не одну фигуру.

Если вы не уверены в сопоставлении фигур и строк данных, но знаете о наличии соответствия между определенным атрибутом каждой фигуры и данными в одном столбце набора записей данных, метод Selection.AutomaticLink предоставляет способ связывания выделенных существующих фигур с несколькими строками данных. Обратите внимание, что это должен быть один атрибут для всех фигур. Дополнительные сведения об этом методе см. в разделе Автоматическое связывание с данными.

Метод Page.LinkShapesToDataRows похож на метод Selection.LinkToData тем, что он связывает несколько фигур. Однако этот метод используется для связывания с данными фигур на одной странице, а не фигур в выделении. Метод LinkShapesToDataRows связывает фигуры с несколькими строками данных, а метод LinkToData связывает несколько фигур с одной строкой. Чтобы связать фигуры, передайте метод LinkShapesToDataRows в два массива: один для фигур, а другой для строк данных. Обратите внимание, что совпадающие позиции массива должны соответствовать друг другу. В результате, например, фигура в позиции 1 массива фигур связана с данными в позиции 1 массива строк данных. Напомним еще раз: при вызове метода вы можете при необходимости указать, применять ли существующий рисунок, относящийся к данным, к связанным фигурам.

Автоматическое связывание с данными

Используйте метод Selection.AutomaticLink для автоматического связывания значений данных фигуры из выделенных фигур (то есть фигур, назначенных объекту Selection) со строками данных в наборе записей, то есть без указания точного соответствия всех фигур и строк данных. Однако чтобы предоставить Visio достаточные сведения для создания связей, необходимо указать хотя бы один набор совпадающих данных: имя столбца в базе данных, тип атрибута фигуры и при необходимости значение фигуры — все в одной позиции индекса соответствующих массивов, передаваемых методу.

Тип атрибута фигуры указывает атрибут фигуры в качестве основы сопоставления. Атрибут может быть значением элемента данных фигуры (прежнее название — значение настраиваемого свойства), текстом фигуры или другими значениями, указанными в перечислении VisAutoLinkFieldTypes.

Примечание.

К примеру, предположим, что ваш документ содержит выделения фигур, представляющих разных сотрудников. Текст фигур определяет фигуры, в данном случае — имена соответствующих сотрудников. (Можно использовать некоторые имена сотрудников из книги OrgData.xls, поставляемой с Visio, а затем подключиться к источнику данных. По умолчанию OrgData.xls устанавливается по следующему пути: C:\Program Files\Microsoft Office\Office15\Visio Content[ langID], где langID зависит от страны или региона.) На некоторых компьютерах путь может содержать "Program Files (x86)" вместо "Program Files".

Для подключения этих фигур к базе данных, в которой данные каждого сотрудника образуют строку, передайте следующие параметры методу AutomaticLink:

  • DataRecordsetID — значение свойства ID объекта DataRecordset, содержащего строки данных для связывания. В следующем примере в процедуру передается существующий набор записей и возвращается его идентификатор.
  • ColumnNames() — строковый массив, состоящий из имен столбцов в базе данных. По крайней мере одна позиция в массиве должна содержать значение, соответствующее значениям в той же позиции в массивах AutoLinkFieldTypes и FieldNames. В следующем примере передается массив, содержащий имя столбца Name в позиции массива 0.
  • AutoLinkFieldTypes() — массив значений Long из перечисления VisAutoLinkFieldTypes, состоящий из типов атрибутов фигур. По крайней мере одна позиция в массиве должна содержать значение, соответствующее значениям в той же позиции в массивах ColumnNames и FieldNames. В следующем примере передается значение перечисления visAutoLinkShapeText в позиции массива 0.
  • FieldNames() — строковый массив, состоящий из значений фигур. По крайней мере одна позиция в массиве FieldNames должна содержать значение, соответствующее значениям в той же позиции в массивах ColumnNames и AutoLinkFieldTypes.
  • Для большинства значений AutoLinkFieldTypes, например visAutoLinkShapeText, указывать значение FieldNames не требуется. Вместо этого можно передать значение NULL. Этот случай относится к нашему примеру, поэтому мы передаем пустую строку. Однако при передаче значений visAutoLinkCustPropsLabel, visAutoLinkUserRowName, visAutoLinkPropRowNameU или visAutoLinkUserRowNameU объекта AutoLinkFieldTypes необходимо передать значение FieldNames , чтобы полностью указать элемент данных фигуры для сравнения с именем столбца данных данных.
  • AutoLinkBehavior — значение из перечисления VisAutoLinkBehaviors. Эти значения перечисления предоставляют параметры для настройки метода, например для замены существующих ссылок новыми. В следующем примере передается значение по умолчанию 0.
  • ShapeIDs() — массив, который метод заполняет идентификаторами связанных фигур при его возвращении.

В следующем примере показан один способ использования метода AutomaticLink для связывания фигур и данных автоматически. В примере предполагается, что вы подключили свой документ к данным в книге с примерами OrgData.xls, как описано выше. Обратите внимание, что для кода требуется назвать первый столбец данных Name, как в случае OrgData.xls. Также обратите внимание, что текст каждой фигуры в документе, который нужно связать с данными, должен соответствовать одному из имен в столбце Name файла OrgData.xls.

Public Sub LinkToDataAutomatically(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim vsoSelection As Visio.Selection 
    Dim columnNames(1) As String 
    Dim fieldTypes(1) As Long 
    Dim fieldNames(1) As String 
    Dim shapesLinked() As Long 
 
    columnNames(0) = "Name" 
    fieldTypes(0) = Visio.VisAutoLinkFieldTypes.visAutoLinkShapeText 
    fieldNames(0) = "" 
    ActiveWindow.DeselectAll 
    ActiveWindow.SelectAll 
    Set vsoSelection = ActiveWindow.Selection 
    vsoSelection.AutomaticLink vsoDataRecordset.ID, _ 
                    columnNames, _ 
                    fieldTypes, _ 
                    fieldNames, 0, shapesLinked 
 
End Sub

Используйте следующие методы, чтобы определить, какие фигуры связаны с данными. Зная, как фигуры связаны с данными, можно избежать конфликтов и разорванных связей:

Как следует из их названия, вы можете использовать методы Shape.BreakLinkToData и Selection.BreakLinkToData, чтобы программно разорвать существующие связи между фигурами и данными. Кроме того, эти связи могут быть разорваны различными изменениями, внесенными в пользовательский интерфейс. Например, когда пользователи удаляют набор записей данных, связанные строки или связанную фигуру или когда пользователи щелкают команду Разорвать связь со строкой в контекстном меню фигуры или "Разорвать связь" в контекстном меню строки, это может привести к разрыву связей.

Кроме случая, когда пользователь удаляет набор записей данных, строку или фигуру из пользовательского интерфейса, все эти действия запускают событие Shape.ShapeLinkDeleted. Вы также можете использовать методы, перечисленные в предыдущем разделе, чтобы определить состояние связи.

Получение и установка свойств столбца данных

Каждый объект DataRecordset содержит коллекцию DataColumns всех объектов DataColumn, относящихся к объекту DataRecordset. Эти объекты позволяют сопоставлять столбцы данных с ячейками в разделе "Данные фигуры" таблицы свойств фигуры.

В следующем примере показано, как получить значение ячейки Label в разделе "Данные фигуры" для первого столбца в наборе записей данных, передаваемого в метод, и открыть его в окне Интерпретация. Затем задается и отображается новое значение.

Изменение этого значения изменяет подпись данных фигуры в диалоговом окне Данные фигуры для всех фигур, связанных со строками в наборе записей данных. Чтобы получить и задать значение ячейки Label, значение visDataColumnPropertyDisplayName передается из перечисления VisDataColumnProperties в методы DataColumn.GetProperty и DataColumn.SetProperty.

Public Sub ChangeColumnProperties(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim strPropertyName As String 
    Dim strNewName As String 
    Dim vsoDataColumn As Visio.DataColumn 
 
    strNewName = "New Property Name" 
    Set vsoDataColumn = vsoDataRecordset.DataColumns(1) 
    strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName) 
    Debug.Print strPropertyName 
 
    vsoDataColumn.SetProperty visDataColumnPropertyDisplayName, strNewName 
    strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName) 
    Debug.Print strPropertyName 
 
End Sub

Обновление связанных данных и разрешение конфликтов

При изменении данных в источнике данных, к которому подключен документ, вы можете обновить данные в документе Visio, чтобы отразить эти изменения. Можно указать, чтобы Visio обновлял данные автоматически с определенным интервалом, установив свойство DataRecordset.RefreshInterval. Вы можете программно обновить данные, вызвав метод DataRecordset.Refresh.

Кроме того, можно разрешать любые конфликты в связях между фигурами и строками данных. Например, конфликты могут возникать при обновлении набора записей данных и отсутствии некоторых строк данных, с которыми фигуры были связаны перед обновлением, из-за изменений в источнике данных. Возможны другие конфликты, когда несколько строк в обновленном наборе записей содержат одинаковые первичные ключи.

Автоматическое обновление связанных данных

При создании объекта DataRecordset его свойству RefreshInterval присваивается значение по умолчанию 0. Это значение указывает, что данные не обновляются автоматически. Присвоив свойству DataRecordset.RefreshInterval положительное значение Long, можно указать время в минутах между автоматическими обновлениями. Минимальный интервал, который можно указать, равен одной минуте. Этот параметр соответствует значению, которое может задать пользователь в диалоговом окне Настройка обновления.

Чтобы определить дату и время последней операции обновления, получите свойство DataRecordset.TimeRefreshed.

Кроме того, свойство DataRecordset.RefreshSettings позволяет настроить автоматическое обновление данных. Присвоив этому свойству сочетание значений из перечисления VisRefreshSettings, вы можете указать, происходит одно или оба из указанных ниже действий:

  • Пользовательский интерфейс для разрешения конфликтов обновления (область задач Конфликты обновления области задач) отключен. (Дополнительные сведения см. в следующем разделе.)
  • Операции обновления автоматически перезаписывают изменения данных, выполненные в пользовательском интерфейсе. Значение по умолчанию для этого свойства — 0, то есть не происходит ни одно из этих событий.

Определение строк набора записей данных для операций обновления

Так как фигуры связаны с помощью своих идентификаторов с определенными строками данных, при обновлении в Visio связанных данных необходимо определить, какие строки в связанном наборе записей данных или наборах записей были добавлены, изменены или удалены с момента последнего обновления данных. Чтобы определить эти строки, Visio использует идентификаторы, назначенные строкам в наборе записей данных. Visio может назначить эти идентификаторы строк двумя способами в зависимости от того, назначены ли первичные ключи для набора записей данных при его создании.

Обновление наборов записей данных без первичных ключей

При создании набора записей данных Visio назначает идентификаторы всем строкам в наборе записей с учетом существующего порядка строк в источнике данных. Соответственно, первой строке в наборе записей всегда назначается идентификатор строки 1, второй строке —идентификатор строки 2 и т. д.

Впоследствии можно добавить или удалить строки данных из исходного источника данных. Затем при обновлении данных набор записей данных отражает эти изменения. В результате порядок строк в наборе записей данных может измениться.

Например, если удаляется четвертая строка в источнике данных для набора записей данных из пяти строк, когда Visio обновляет набор записей данных, подключенный к этому источнику, пятая строка в наборе записей данных становится новой четвертой строкой и ей назначается идентификатор строки 4. Идентификатор строки 5 удаляется из набора записей данных.

В результате фигуры, связанные с идентификатором строки 5, теряют свои связи, а фигуры, связанные с идентификатором строки 4, получают данные из строки, ранее находившейся в пятой позиции. Как видите, если не назначить первичные ключи наборам записей данных при их создании, это может привести к разрыву связей между фигурами и данными или связыванию в Visio фигур со строками, не относящимися к нужным строкам для связывания.

Обновление наборов записей данных с первичными ключами

Вы можете избежать разрывов или несоответствия связей, назначив первичные ключи наборам записей данных. Первичный ключ определяет имя столбца данных или столбцов, содержащих уникальные идентификаторы для каждой строки. Значение в столбце первичного ключа для каждой строки однозначно определяет эту строку в наборе записей данных. Первичные ключи часто являются значениями идентификаторов, но вы можете задать любой столбец или сочетание столбцов в качестве первичного ключа. Однако для получения согласованных результатов при обновлении данных важно сделать значение столбца первичного ключа (или набора значений для нескольких столбцов первичных ключей) уникальным для каждой строки.

В результате при обновлении в Visio набора записей данных, содержащего первичные ключи, его строки сохраняют те же идентификаторы строк, что и до обновления. Так как Visio связывает фигуры со строками данных по идентификатору (идентификатор фигуры с идентификатором строки) и идентификаторы строк не изменяются после операции обновления, фигуры, связанные с данными, остаются связанными с правильной строкой. Обратите внимание, что идентификаторы строк никогда не используются повторно для заданного набора записей данных.

Используйте метод DataRecordset.GetPrimaryKey, чтобы определить существующий первичный ключ для набора записей данных, если он указан. Этот метод возвращает параметр первичного ключа для набора записей данных как значение из перечисления VisPrimaryKeySettings. Используйте одинарные или составные первичные ключи. Одинарный ключ идентифицирует строки на основе значений в одном столбце. Составной первичный ключ использует несколько столбцов для уникальной идентификации строки.

Если параметру первичного ключа присвоено значение visKeySingle или visKeyComposite, метод также возвращает массив строк с именем столбцов первичного ключа. Если параметру первичного ключа присвоено значение visKeyRowOrder, по умолчанию метод возвращает пустой массив первичных ключей.

Аналогично можно использовать метод DataRecordset.SetPrimaryKey, чтобы указать параметр первичного ключа для набора записей данных, а также имя столбца или столбцов, которые нужно задать в качестве столбца или столбцов первичного ключа. Напомним еще раз: при настройке первичных ключей убедитесь, что столбец или столбцы, выбранные в качестве столбцов первичных ключей, содержат уникальные значения (или наборы значений) для каждой строки.

Программное обновление связанных данных

Чтобы программно обновить связанный набор записей данных, вызовите метод DataRecordset.Refresh.

Вызов этого метода выполняет строку запроса, относящуюся к набору записей данных, а затем обновляет связанные фигуры с использованием данных, возвращаемых запросом. Вызов метода Refresh для определенного объекта DataRecordset приводит к обновлению всех других объектов DataRecordset, связанных с одним объектом DataConnection (то есть с одинаковым значением свойства DataConnection). Объекты DataRecordset с одинаковым значением свойства DataConnection называются транзакционными наборами записей данных.

Когда вызов метода Refresh приводит к конфликтам, Visio отображает область задач Конфликты обновления в пользовательском интерфейсе, если не задано свойство RefreshSettings для включения перечисленного значения visRefreshNoReconciliationUI.

Перед обновлением связанных данных, если нужно изменить запрос, используемый в Visio, чтобы получить данные для запроса другой таблицы в этой же базе данных, присвойте свойству DataRecordset.CommandString новое значение. Чтобы подключиться к совершенно новому источнику данных, задайте значения обоих свойств DataRecordset.CommandString и DataConnection.ConnectionString.

Метод DataRecordset.GetLastDataError получает код ошибки объектов данных Active X (ADO), описание ADO и идентификатор набора записей данных, связанного с самой последней ошибкой, возникшей из-за добавления нового набора записей данных или обновления данных в существующем.

Обнаружение и разрешение конфликтов

Если в Visio данные обновляются с возникновением конфликта, можно использовать методы DataRecordset.GetAllRefreshConflicts и DataRecordset.GetMatchingRowsForRefreshConflict для определения причины конфликта. Метод GetAllRefreshConflicts возвращает массив фигур, для которых существует конфликт между данными в фигуре и данными в строке набора записей данных, с которой связана фигура. Чтобы определить, какие строки набора записей данных создали конфликт, можно передать каждую из этих фигур методу GetMatchingRowsForRefreshConflict, возвращающему массив конфликтующих строк.

Строки в наборе записей данных могут конфликтовать, если несколько из них содержат одинаковые первичные ключи и могут быть связаны с одинаковой фигурой. В этом случае метод GetMatchingRowsForRefreshConflict возвращает массив, содержащий не менее двух идентификаторов строк.

Конфликты также могут возникать, если из набора записей данных удалена строка, ранее связанная с данными. В этом случае метод возвращает пустой массив.

Чтобы удалить конфликт, передайте фигуру методу DataRecordset.RemoveRefreshConflict, удаляющему конфликтующие сведения из текущего документа.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.