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.