Vinculación de formas a datos

Nota:

Las características de conectividad de datos están disponibles solo para los usuarios con licencia de Microsoft Visio Profesional 2013.

Existen cuatro aspectos de conectividad de datos en Visio:

  • Conectar con un origen de datos
  • Vincular formas a datos
  • Mostrar datos vinculados gráficamente
  • Actualizar los datos vinculados que han cambiado en el origen de datos, actualizar las formas vinculadas y resolver los conflictos posteriores que puedan surgir

Normalmente, estos aspectos se plantean en el orden en el que se enumeran; es decir, primero conecte el dibujo de Visio a un origen de datos, después vincule las formas del dibujo a datos del origen de datos, muestre los datos de las formas vinculadas gráficamente y actualice los datos vinculados si fuese necesario.

Cada uno de estos aspectos tiene objetos y miembros asociados en el modelo de objetos de Visio. En este tema se trata el segundo de estos aspectos: vincular las formas de dibujo de Visio a un origen de datos. Para obtener más información sobre el resto de los aspectos de conectividad de datos, vea los temas siguientes:

Para conectar los dibujos de Visio a un origen de datos mediante programación, puede usar la API de Visio para la conectividad de datos, que incluye los siguientes objetos y sus miembros asociados:

Después de conectar un dibujo de Visio a un origen de datos externo, puede vincular las formas del dibujo a los datos de ese origen mediante programación. Puede vincular una o varias formas a una sola fila de datos de un conjunto de registros de datos o a varias filas de datos de diversos conjuntos de registros de datos. Sin embargo, no podrá vincular las formas a varias filas de datos del mismo conjunto de registros de datos.

Puede vincular formas existentes a los datos, forma a forma o como grupo; también puede crear formas y vincularlas a los datos simultáneamente. Si la sabe, puede especificar la correspondencia entre las formas y las filas de datos, o puede dejar a Visio determinar la correspondencia automáticamente, basándose en una comparación entre los datos de las formas existentes y los datos del conjunto de registros de datos.

Después de vincular las formas a los datos, podrá mostrar los datos gráficamente agregando gráficos de datos a las formas. Para obtener más información sobre los gráficos de datos, vea el tema sobre cómo mostrar los datos gráficamente.

Los objetos DataRecordset y DataColumn y la colección DataColumns exponen varias propiedades, métodos y eventos que facilitan la vinculación de datos. Además, varios miembros del modelo de objetos de Visio, incluidos los objetos Application, Document, Page, Selection, Shape y Window están relacionados con la vinculación de datos.

Vinculación de datos y datos de formas

La vinculación de formas a datos se basa en el hecho de que se pueden asignar datos de formas a todas las formas de Visio. En las versiones de Visio anteriores a Visio 2007, los datos de formas se denominaban propiedades personalizadas.

Para obtener acceso a los datos de formas en la interfaz de usuario de Visio, haga clic con el botón secundario en la forma, apunte a Datos y luego haga clic en Datos de formas. Asimismo, puede obtener acceso a los datos de formas y asignarlos manualmente o mediante programación en la hoja de cálculo de Visio ShapeSheet. Para mostrar la hoja de cálculo de ShapeSheet (ShapeSheet) de una forma seleccionada, haga clic con el botón secundario en la forma y haga clic en Mostrar ShapeSheet. Para ver este comando debe ejecutar Visio en modo para programadores. Para ejecutar Visio en modo para programadores, haga clic en la pestaña de Archivo, luego en Opciones, Avanzadas, y luego en General, seleccione Ejecutar en modo para programadores.

Dentro de ShapeSheet, los datos de la forma están incluidos en la sección de datos de formas (previamente denominada sección de propiedades personalizadas). Con el fin de mantener la compatibilidad con versiones anteriores, los miembros de los objetos existentes conservan "propiedad personalizada" o "propiedades personalizadas" en el nombre. Si no asigna datos de formas a una forma determinada, la sección de datos de formas no aparecerá en la hoja de cálculo ShapeSheet. Puede agregar una sección de datos de formas a una ShapeSheet mostrando dicha hoja de cálculo como se describe anteriormente, haciendo clic con el botón secundario en cualquier parte de la ventana ShapeSheet y haciendo clic en Insertar sección, seleccionando Datos de formas y haciendo clic en Aceptar.

Después de vincular formas a los datos, muchas de las columnas de la sección de datos de formas se corresponderán estrechamente con las propiedades del objeto DataColumn. Por ejemplo, la columna Etiqueta de la sección de Datos de formas, que proporciona la etiqueta que aparece para un determinado elemento de datos de formas del cuadro de diálogo Datos de formas, corresponde a la propiedad DataColumn.DisplayName, que controla el nombre que aparece para la columna de datos asociada en la ventana Datos externos. Para obtener más información sobre cómo trabajar con el objeto DataColumn consulte Obtener y establecer propiedades de la columna de datos.

Identificar formas, conjuntos de registros de datos y filas de datos

Visio utiliza números de identificación exclusivos para identificar formas, conjuntos de registros y filas de datos. Los identificadores de formas son exclusivos sólo dentro del ámbito de la página en la que se encuentran. Una vez que determine estos números, podrá pasarlos a los métodos de los objetos de Visio relacionados con los datos, para especificar exactamente cómo las formas del diagrama deberían vincularse a las filas de datos de los conjuntos de registros de datos disponibles.

Para determinar el identificador de una forma, obtenga el valor de la propiedad Shape.ID. Además, Visio también ofrece identificadores únicos o GUID de formas. El método Page.ShapeIDsToUniqueIDs obtiene una matriz de identificadores de formas, así como un valor de enumeración de VisUniqueIDArgs que especifica si obtiene, genera o elimina GUID de las formas. El método Page.ShapeIDsToUniqueIDs también devuelve una matriz de identificadores únicos para las formas pasadas. Si por el contrario conoce los identificadores únicos de un conjunto de formas, puede utilizar el método Page.UniqueIDsToShapeIDs para obtener los identificadores de esas formas. Para obtener una selección de formas, utilice el método Selection.GetIDs para obtener los identificadores de las formas.

Para determinar el identificador de un objeto DataRecordset que agrega a la colección DataRecordsets, obtenga el valor de la propiedad DataRecordset.ID. Para determinar los identificadores de cada una de las filas de un conjunto de registros de datos, llame al método DataRecordset.GetDataRowIDs, que devuelve una matriz de los identificadores de las filas. Para obtener más información, vea la sección "Obtener acceso a los datos de los conjuntos de registros de datos mediante programación" en Acerca de la conexión de datos en Visio.

Crear formas vinculadas a datos

Si desea crear formas ya vinculadas a los datos en una página de dibujo que no contiene ninguna forma o que contiene formas diferentes de aquellas que desea vincular, puede utilizar los métodos Page.DropLinked y Page.DropManyLinkedU para crear una o varias formas adicionales ya vinculadas a datos. Estos métodos se asemejan a los métodos Page.Drop y Page.DropManyU en que crean formas adicionales en una ubicación determinada de la página, pero además crean vínculos entre las formas nuevas y las filas de datos especificadas en un determinado conjunto de registros de datos.

El método DropLinked devuelve un nuevo objeto Shape vinculado y adopta los siguientes parámetros:

  • ObjectToDrop: la forma concreta (una forma de rectángulo, por ejemplo) que desea crear.
  • x: coordinada x del centro de la forma nueva de la página.
  • y: coordinada y del centro de la forma nueva de la página.
  • DataRecordsetID: valor de la propiedad ID del objeto DataRecordset que contiene la fila de datos a la que vincular.
  • DataRowID: valor de la propiedad ID de la fila de datos a la que vincular.
  • ApplyDataGraphicAfterLink: valor Boolean que especifica si se aplica el gráfico de datos de la forma automáticamente en caso de que ya tenga uno, y si no, especifica si se aplica el gráfico de datos utilizado más recientemente. El valor predeterminado es no aplicar un gráfico de datos. Para obtener más información sobre los gráficos de datos, vea Mostrar los datos gráficamente.

El código de ejemplo siguiente muestra cómo utilizar el método DropLinked para crear una forma en la página de dibujo activa, centrada en las coordinadas (2, 2) de la página y vinculada a una fila de datos. Toma el objeto DataRecordset pasado, obtiene su identificador y luego pasa ese identificador, junto con el identificador de la fila de datos a la que vincular, al método DropLinked. La forma colocada es un rectángulo simple de la galería de símbolos Basic_U.VSS, que abre el código, acoplado en la ventana de dibujo de Visio.

En este ejemplo, el identificador de la fila de datos se establece en 1; antes de ejecutar el código, asegúrese de que exista una fila con ese identificador o bien modifique el valor del identificador en el código.

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

Del mismo modo, el método DropManyLinkedU crea un conjunto de formas vinculadas, que se devuelven como una matriz de identificadores de formas. Toma como parámetros las matrices de formas que se van a colocar, las coordenadas y las filas de datos a las que vincular. Las entradas de las posiciones de índice de matriz correspondientes determinan cómo se relacionan las formas y las filas de datos y en qué lugar de la página se coloca cada forma.

Vincular formas existentes a datos

Si sabe exactamente cómo se corresponden una o varias formas existentes de un dibujo de Visio con una o varias filas de un conjunto de registro de datos, puede vincular las formas existentes a los datos de las formas siguientes:

  • Vincular una sola forma a una sola fila de datos
  • Vincular una selección de formas a una o varias filas de datos
  • Vincular varias formas a varias filas de datos

Además, si no conoce la forma exacta para la asignación de datos, puede dirigir Visio para realizar la mejor coincidencia posible, basándose en la información de coincidencia limita que proporcione.

Vincular una sola forma a una fila de datos

Para vincular una sola forma a una sola fila de datos, use el método Shape.LinkToData. Este método adopta un identificador de conjunto de registro de datos y un identificador de fila de datos así como una marcabooleana opcional que especifica si se muestran los datos vinculados en un gráfico de datos. El valor predeterminado es mostrarlos.

Vincular varias formas a datos

Dos miembros del objeto Selection, los métodos Selection.LinkToData y Selection.AutomaticLink, así como el método Page.LinkShapesToDataRows, permiten vincular una o más formas existentes de la selección a los datos.

El método Selection.LinkToData funciona en gran medida como el mismo método del objeto Shape , excepto que vincula una selección de formas, en vez de una sola forma, a una sola fila de datos.

Si no está seguro sobre la correspondencia entre las formas y las filas de datos, pero sabe que hay una coincidencia entre un atributo específico de cada forma y los datos de una columna de un conjunto de registros de datos, el método Selection.AutomaticLink proporciona un medio para vincular una selección de formas existentes a varias filas de datos. Tenga en cuenta que debe ser el mismo atributo para todas las formas. Para más información sobre este método, vea Vincular a datos automáticamente.

El método Page.LinkShapesToDataRows es similar al método Selection.LinkToData en que vincula varias formas. Sin embargo, se usa este método para vincular datos con formas en la misma página, en lugar de formas en una selección. El método LinkShapesToDataRows vincula formas a varias filas de datos, mientras que el método LinkToData vincula varias formas a una sola fila de datos. Para vincular formas, pase al método LinkShapesToDataRows un par de matrices: una para las formas y otra para las filas de datos. Observe que las posiciones de matriz coincidentes deben corresponderse. Como resultado, por ejemplo, la forma de la posición 1 de la matriz de formas está vinculada a los datos de la posición 1 de la matriz de filas de datos. De nuevo, al llamar al método, puede especificar opcionalmente si se muestra un gráfico de datos existente para las formas vinculadas.

Vincular a datos automáticamente

Use el método Selection.AutomaticLink para vincular los valores de datos de formas de las formas seleccionadas, es decir, de las formas asignadas a un objeto Selection, a filas de datos de un conjunto de registro de datos automáticamente, es decir, sin especificar la correspondencia exacta de todas las formas y filas de datos. Sin embargo, para proporcionar a Visio información suficiente para crear los vínculos, debe proporcionar al menos un conjunto de datos coincidentes: el nombre de una columna de la base de datos, un tipo de atributo de forma y, si es necesario, un valor de forma, todo ello en la misma posición del índice de las matrices correspondientes que pasa al método.

El tipo de atributo de forma indica el atributo de la forma en que basar la coincidencia. El atributo puede ser el valor de un elemento de datos de formas (anteriormente denominado propiedad personalizada), el texto de la forma o cualquiera de los valores especificados en la enumeración VisAutoLinkFieldTypes.

Nota:

Por ejemplo, supongamos que el dibujo contiene una selección de formas que representen los distintos empleados. El texto de las formas identifica las formas que, en este caso, serían los nombres de los empleados. (Podría usar algunos de los nombres de empleado del libro de OrgData.xls que se incluye con Visio y, a continuación, conectarse a ese origen de datos. De forma predeterminada, OrgData.xls se instala en la ruta de acceso siguiente: C:\Archivos de programa\Microsoft Office\Office15\Visio Content[ langID], donde langID varía según el país o región). En algunos equipos, la ruta de acceso podría incluir "Archivos de programa (x86)" en lugar de "Archivos de programa".

Para conectar estas formas a una base de datos donde los datos de cada empleado constituyen una fila en la base de datos, traslade los siguientes parámetros al método AutomaticLink:

  • DataRecordsetID: valor de la propiedad ID del objeto DataRecordset que contiene la fila de datos a la que vincular. En el ejemplo siguiente, se pasa un conjunto de registros de datos existente al procedimiento y se obtiene el Id.
  • ColumnNames(): matriz de cadenas formada por los nombres de las columnas de la base de datos. Al menos, una posición de la matriz debe tener un valor que se corresponda con los valores de la misma posición en las matrices AutoLinkFieldTypes y FieldNames. En el ejemplo siguiente, pasamos una matriz que contiene el nombre de columna "Nombre" en la posición de matriz 0.
  • AutoLinkFieldTypes(): matriz de valores Long de la enumeración VisAutoLinkFieldTypes, formada por los tipos de atributos de formas. Al menos, una posición de la matriz debe tener un valor que se corresponda con los valores de la misma posición en las matrices ColumnNames y FieldNames. En el ejemplo siguiente, pasamos el valor de enumeración visAutoLinkShapeText en la posición 0 de la matriz.
  • FieldNames(): matriz de cadenas formada por los valores de las formas. Al menos, una posición de la matriz FieldNames debe tener un valor que se corresponda con los valores de la misma posición en las matrices ColumnNames y AutoLinkFieldTypes.
  • Para la mayoría de los valores de AutoLinkFieldTypes, por ejemplo, para visAutoLinkShapeText, no es necesario especificar el valor de FieldNames; en su lugar, puede pasar el valor nulo. Ése es el caso en nuestro ejemplo, de modo que pasamos una cadena vacía. Sin embargo, cuando se pasan los valores visAutoLinkCustPropsLabel, visAutoLinkUserRowName, visAutoLinkPropRowNameU o visAutoLinkUserRowNameU de AutoLinkFieldTypes, debe pasar un valor de FieldNames para especificar exactamente el elemento de datos de formas para compararlo con el nombre de la columna de datos.
  • AutoLinkBehavior: valor de la enumeración VisAutoLinkBehaviors. Estos valores enumerados proporcionan opciones para personalizar el método, por ejemplo, para sustituir los vínculos existentes por otros nuevos. En el ejemplo siguiente se pasa el valor predeterminado, 0.
  • ShapeIDs(): matriz que el método rellena con los identificadores de las formas vinculadas cuando se devuelve.

En el ejemplo siguiente se muestra una forma de utilizar el método AutomaticLink para vincular formas y datos automáticamente. En el ejemplo se supone que ya ha conectado el dibujo a los datos del libro de ejemplo OrgData.xls, como se ha descrito anteriormente. Tenga en cuenta que el código requiere que la primera columna de datos se denomine "Name", como ocurre en el caso de OrgData.xls. Observe también que el texto de la forma de cada una de las formas del dibujo que desea vincular a datos debe coincidir con uno de los nombres de la columna "Name" de 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

Utilice los siguientes métodos para determinar qué formas están vinculadas a los datos. Saber cómo están vinculadas las formas a los datos permite evitar la aparición de conflictos y la ruptura de vínculos:

Puede utilizar los métodos Shape.BreakLinkToData y Selection.BreakLinkToData para romper los vínculos existentes entre formas y datos mediante programación. Además, algunos cambios en la interfaz de usuario pueden interrumpir estos vínculos. Por ejemplo, cuando los usuarios eliminan un conjunto de registros de datos, una fila vinculada o una forma vinculada, o cuando los usuarios hacen clic en la opción Desvincular de fila en el menú contextual de una forma o en Desvincular en el menú contextual de una fila, pueden provocar la ruptura de vínculos.

Todas estas acciones desencadenan el evento Shape.ShapeLinkDeleted, excepto cuando un usuario elimina un conjunto de registro de datos, una fila o una forma desde la interfaz de usuario. También puede usar los métodos descritos en la sección anterior para determinar el estado del vínculo.

Obtener y establecer propiedades de las columnas de datos

Cada objeto DataRecordset contiene una colección DataColumns de todos los objetos DataColumn asociados al objeto DataRecordset. Estos objetos permiten asignar columnas de datos a celdas en la sección de datos de formas de la hoja de cálculo ShapeSheet.

El ejemplo siguiente muestra cómo obtener el valor de la celda Label de la sección de datos de formas de la primera columna del conjunto de registros de datos pasada al método y cómo mostrarlo en la ventana Inmediato. A continuación establece y el valor y muestra el nuevo valor.

Si se cambia este valor, se cambia la etiqueta del elemento de datos de formas del cuadro de diálogo Datos de formas de todas las formas vinculadas a las filas del conjunto de registros de datos. Para obtener y establecer el valor de la celda Label, pasamos el valor visDataColumnPropertyDisplayName desde la enumeración VisDataColumnProperties a los métodos DataColumn.GetProperty y 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

Actualizar los datos vinculados y resolver conflictos

Cuando cambian los datos del origen de datos al cual está conectado un dibujo, puede actualizar los datos del dibujo de Visio para reflejar dichos cambios. Puede especificar que Visio actualice los datos automáticamente en un intervalo determinado estableciendo la propiedad DataRecordset.RefreshInterval. También puede actualizar los datos mediante programación llamando al método DataRecordset.Refresh.

Además, puede resolver todos los conflictos que se produzcan en la relación entre las formas y las filas de datos. Por ejemplo, pueden producirse conflictos cuando actualiza el conjunto de registros de datos y algunas filas de datos a las cuales fueron vinculadas las formas antes de la actualización ya no existen, debido a los cambios del origen de datos. Se pueden producir otros conflictos cuando dos o más filas del conjunto de registros actualizado tienen claves principales idénticas.

Actualizar los datos vinculados automáticamente

Cuando se crea un objeto DataRecordset , su propiedad RefreshInterval se establece en el valor predeterminado, 0. Este valor indica que los datos no se actualizan automáticamente. Si se establece DataRecordset.RefreshInterval en un valor Long positivo, se puede especificar el tiempo en minutos entre actualizaciones automáticas. El intervalo mínimo que se puede especificar es un minuto. Este valor se corresponde con el valor que un usuario puede establecer en el cuadro de diálogo Configurar actualización.

Para determinar la fecha y la hora de la última actualización, obtenga la propiedad DataRecordset.TimeRefreshed.

Además, la propiedad DataRecordset.RefreshSettings le permite personalizar las actualizaciones automáticas de los datos. Si establece esta propiedad en una combinación de valores de la enumeración VisRefreshSettings, podrá especificar que se produzcan cualquiera de las opciones siguientes o ambas:

  • La interfaz de usuario para reconciliar conflictos de actualización (el panel de tareas Conflictos de actualización) está deshabilitada. (Vea la siguiente sección para obtener más información).
  • Las operaciones de actualización reemplazan automáticamente los cambios a los datos realizados en la interfaz de usuario. El valor predeterminado para esta propiedad es 0, lo que significa que no se producirá ninguno de estos eventos.

Identificar filas de conjuntos de registros de datos para las operaciones de actualización

Como las formas están vinculadas mediante sus identificadores a filas específicas de datos, cuando Visio actualiza los datos vinculados, debe determinar qué filas del conjunto de registros de datos vinculados o conjuntos de registros se han agregado, cambiado o quitado desde la última vez que se actualizaron los datos. Para identificar estas filas, Visio utiliza los identificadores de fila asignados a las filas del conjunto de registros de datos. Visio puede asignar estos identificadores de filas de dos maneras, dependiendo de si se designaron claves principales para el conjunto de registros de datos al crearlo.

Actualizar los conjuntos de registros de datos que no tienen claves principales

Al crear un conjunto de registros de datos, Visio asigna los identificadores de fila a todas las filas del conjunto de registros basados en el orden de filas existente en el origen de datos. Por consiguiente, a la primera fila del conjunto de registros se le asigna siempre el ID 1, a la segunda fila el ID 2 y así sucesivamente.

A continuación, puede agregar o eliminar filas de datos del origen de datos original. Así, al actualizar los datos, el conjunto de registros de datos reflejará esos cambios. Como resultado, puede cambiar el orden de las filas del conjunto del registro de datos.

Por ejemplo, en un conjunto de registros de datos de cinco filas, si se elimina la cuarta fila del origen de datos, cuando Visio actualice el conjunto de registros de datos conectado a ese origen de datos, la quinta fila pasa a ser la nueva cuarta fila y se le asigna el ID 4. El ID 5 se elimina del conjunto de registros de datos.

En consecuencia, las formas vinculadas al identificador de fila ID 5 pierden sus vínculos y las formas vinculadas al identificador ID 4 obtienen los datos de la fila que estaba anteriormente en la quinta posición. Como puede ver, si no asigna claves principales a los conjuntos de registros de datos al crearlos, el resultado puede ser la ruptura de vínculos entre las formas y los datos, o que Visio vincule formas a filas diferentes de aquellas a las que deseaba que estuvieran vinculadas.

Actualizar los conjuntos de registros de datos que tienen claves principales

Puede evitar que se produzcan estas rupturas de vínculos o vinculaciones incorrectas asignando claves primarias a los conjuntos de registros de datos. Las claves principales identifican el nombre de la columna o columnas de datos que contienen identificadores únicos para cada fila. El valor de la primera columna de la clave principal de cada columna identifica de forma única esa fila del conjunto de registros de datos. Las claves principales son con frecuencia valores ID, pero se puede establecer cualquier columna o combinación de columnas como clave principal. No obstante, para obtener resultados coherentes al actualizar los datos, es fundamental que el valor de la columna de la clave principal (o conjunto de valores para varias columnas de clave principal) sea único para cada fila.

Como resultado, al actualizar o cuando Visio actualice un conjunto de registros de datos que incluye claves principales, las filas conservan los mismos identificadores de filas que tenían antes de la actualización. Como Visio vincula formas a filas de datos por identificador, ID de la forma al ID de la fila, y los identificadores de las filas son los mismos que tenían antes de la operación de actualización, las formas vinculadas a los datos siguen vinculadas a la fila correcta. Observe que los identificadores de fila no se reciclan nunca en un conjunto de registros de datos determinado.

Use el método DataRecordset.GetPrimaryKey para determinar la clave principal existente para un conjunto de registros de datos si tiene una especificada. Este método devuelve la clave principal establecida para el conjunto de registros de datos como un valor de la enumeración VisPrimaryKeySettings. Use claves principales simples o compuestas. Una clave principal simple basa la identificación de las filas en los valores de una sola columna. Una clave principal compuesta usa dos o más columnas para identificar una fila de forma única.

Si la configuración de la clave principal es visKeySingle o visKeyComposite, el método también devuelve una matriz de cadenas de nombres de columna de clave principal. Si la configuración de la clave principal es visKeyRowOrder, el valor predeterminado, el método devuelve una matriz vacía de claves principales.

Asimismo, puede utilizar el método DataRecordset.SetPrimaryKey para especificar la configuración de la clave principal del conjunto de registros de datos, así como el nombre de la columna o columnas que desee establecer como la columna o columnas de dicha clave. Una vez más, cuando establezca los valores de claves principales, asegúrese de que la columna o columnas elegidas para ser las columnas de la clave principal contienen valores (o conjuntos de valores) únicos para cada fila.

Actualizar los datos vinculados mediante programación

Para actualizar un conjunto de registros de datos conectado mediante programación, llame al método DataRecordset.Refresh.

Al llamar a este método se ejecuta la cadena de consulta asociada con el conjunto de registros de datos y, a continuación, se actualizan las formas vinculadas con los datos que devuelve la consulta. Al llamar al método Refresh de un objeto DataRecordset concreto se actualizan todos los demás objetos DataRecordset asociados al mismo objeto DataConnection (es decir, cuya propiedad DataConnection tenga el mismo valor). Los objetos DataRecordset que comparten el mismo valor de la propiedad DataConnection se denominan conjuntos de datos de la transacción.

Si al llamar a Refresh se provoca algún conflicto, Visio muestra el panel de tareas Conflictos de actualización en la interfaz de usuario, a no ser que se establezca la propiedad RefreshSettings de modo que incluya el valor enumerado visRefreshNoReconciliationUI.

Antes de actualizar los datos vinculados, si desea modificar la cadena de consulta utilizada por Visio para recuperar los datos para consultar otra tabla distinta de la misma base de datos, establezca la propiedad DataRecordset.CommandString en otro valor. Para efectuar la conexión a un origen de datos totalmente nuevo, establezca los valores de las propiedades DataRecordset.CommandString y DataConnection.ConnectionString.

El método DataRecordset.GetLastDataError obtiene el código de error Active X Data Objects (ADO), la descripción ADO y el identificador del conjunto de registros de datos asociados al error más reciente provocado al agregar un nuevo conjunto de registros de datos o al actualizar los datos de uno existente.

Identificar y resolver conflictos

Cuando actualiza los datos o Visio los actualiza y se produce un conflicto, puede utilizar los métodos DataRecordset.GetAllRefreshConflicts y DataRecordset.GetMatchingRowsForRefreshConflict para determinar el motivo del mismo. El método GetAllRefreshConflicts devuelve una matriz de formas para las que existe un conflicto entre los datos de la forma y los datos de la fila del conjunto de registros de datos a la que está vinculada la forma. Para determinar qué filas del conjunto de registros de datos provocan un conflicto, puede pasar cada una de estas formas al método GetMatchingRowsForRefreshConflict, que devolverá una matriz con las filas que están en conflicto.

Las filas del conjunto de registros de datos pueden producir un conflicto cuando dos o más de ellas tienen claves principales idénticas y pueden vincularse a la misma forma. Si esto sucede, GetMatchingRowsForRefreshConflict devuelve una matriz que contiene al menos dos identificadores de fila.

También puede producirse un conflicto cuando se quita una fila vinculada del conjunto de registros de datos. Si esto sucede, el método devuelve una matriz vacía.

Para eliminar el conflicto, pase la forma al método DataRecordset.RemoveRefreshConflict, que elimina la información que produce el conflicto del documento actual.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.