Share via


Método DataRecordset.GetMatchingRowsForRefreshConflict (Visio)

Devuelve una matriz con los identificadores de las filas del conjunto de registros de datos vinculadas a una forma que están en conflicto después de actualizar el conjunto de registros de datos.

Nota:

Este objeto o miembro Visio solo se encuentra disponible para los usuarios con licencia de Visio Professional 2013.

Sintaxis

expresión. GetMatchingRowsForRefreshConflict (ShapeInConflict)

Expresión Expresión que devuelve un objeto DataRecordset .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
ShapeInConflict Obligatorio Shape Forma vinculada a datos que tiene un conflicto después de actualizar el conjunto de registros de datos.

Valor devuelto

Long()

Comentarios

El método GetAllRefreshConflicts devuelve una matriz de formas donde 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 de conjunto de registros de datos generaron un conflicto, puede pasar cada una de estas formas a su vez al método GetMatchingRowsForRefreshConflict , que devuelve una matriz de filas que están en conflicto para una forma determinada.

Las filas del conjunto de registros de datos pueden estar en 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 quitar un conflicto, pase la forma que tiene el conflicto al método RemoveRefreshConflict , que quita la información en conflicto del documento actual. La información sobre los conflictos se conserva en el documento actual hasta que se elimina la forma en conflicto o se llama a RemoveRefreshConflict en la forma.

Ejemplo:

En esta macro de Microsoft Visual Basic para Aplicaciones (VBA) se muestra cómo utilizar el método GetAllRefreshConflicts para determinar qué formas (si las hay) tienen conflictos después de actualizar el conjunto de registros de datos; a continuación, se utiliza el método GetMatchingRowsForRefreshConflict para determinar qué fila o filas del conjunto de registros de datos causan dicho conflicto. Si no se detectan conflictos al actualizar el último conjunto de registros de datos agregado, se imprime "No hay conflictos" en la ventana Immediate (Inmediato). Si se encuentra alguno, se pasa cada una de las formas que los tienen al método GetMatchingRowsForRefreshConflict y se imprimen en la misma ventana los identificadores de fila resultantes.

Antes de ejecutar esta macro, asegúrese de que el último conjunto de registros de datos agregado es un conjunto de registros de datos conectado (no basado en XML) y de que la conexión al origen de datos original aún está disponible. A continuación, elimine una fila del origen de datos o efectúe otro cambio para que se provoque un conflicto al actualizar el conjunto de registros de datos.

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

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.