Partager via


Méthode DataRecordset.GetMatchingRowsForRefreshConflict (Visio)

Renvoie un tableau qui contient les ID des lignes d'un jeu d'enregistrements de données liées à une forme qui sont en conflit après l'actualisation du jeu d'enregistrements de données.

Remarque

Cet objet ou ce membre Visio est disponible uniquement pour les titulaires d’une licence d’utilisation de Visio Professionnel 2013.

Syntaxe

expression. GetMatchingRowsForRefreshConflict (ShapeInConflict)

Expression Expression qui renvoie un objet DataRecordset .

Parameters

Nom Requis/Facultatif Type de données Description
ShapeInConflict Requis Forme Forme liée à des données qui a un conflit après l’actualisation du jeu d’enregistrements de données.

Valeur renvoyée

Long()

Remarques

La méthode GetAllRefreshConflicts renvoie un tableau de formes où il existe un conflit entre les données de la forme et les données de la ligne data-recordset à laquelle la forme est liée. Pour déterminer quelles lignes de jeu d’enregistrements de données ont produit un conflit, vous pouvez ensuite passer chacune de ces formes à tour à la méthode GetMatchingRowsForRefreshConflict , qui retourne un tableau de lignes en conflit pour une forme donnée.

Les lignes d'un jeu d'enregistrements de données peuvent être en conflit lorsqu'au moins deux d'entre elles possèdent des clés primaires identiques et peuvent par conséquent être liées à la même forme. Lorsque cela se produit, GetMatchingRowsForRefreshConflict renvoie une matrice contenant les ID de ligne au moins deux.

Conflits peuvent également se produire quand une ligne précédemment données liées à partir du jeu d’enregistrements de données est supprimée. Lorsque cela se produit, la méthode renvoie une matrice vide.

Pour supprimer un conflit, transmettez la forme qui contient le conflit à la méthode RemoveRefreshConflict , qui supprime les informations en conflit du document actif. Les informations sur les conflits sont conservées dans le document actif jusqu’à ce que vous supprimiez la forme en conflit ou que vous appeliez RemoveRefreshConflict sur la forme.

Exemple

Cette macro Microsoft Visual Basic pour Applications (VBA) montre comment utiliser la méthode GetAllRefreshConflicts pour déterminer quelles formes, le cas échéant, ont des conflits après l’actualisation d’un jeu d’enregistrements de données, puis utiliser la méthode GetMatchingRowsForRefreshConflict pour déterminer la ou les lignes du jeu d’enregistrements de données qui sont à l’origine du conflit. Elle actualise le dernier jeu d'enregistrements de données ajouté et, si elle ne détecte aucun conflit, imprime « Aucun conflit » dans la fenêtre Exécution. Si elle détecte des conflits, elle transmet chaque forme pour laquelle il existe un conflit à la méthode GetMatchingRowsForRefreshConflict, puis affiche les ID de ligne dans la même fenêtre.

Avant d'exécuter cette macro, vérifiez que le jeu d'enregistrements de données dernièrement ajouté est un jeu connecté (non XML) et que la connexion à la source de données d'origine est toujours disponible. Supprimez ensuite une ligne dans la source de données ou apportez toute autre modification qui générera un conflit après l'actualisation du jeu d'enregistrements de données.

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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.