次の方法で共有


DataRecordset.RemoveRefreshConflict メソッド (Visio)

現在の図面から、データにリンクされた図形の競合に関する情報をクリアします。

注:

この Visio オブジェクトまたはメンバーは Visio Professional 2013 のライセンス ユーザーのみが使用できます。

構文

RemoveRefreshConflict (ShapeInConflict)

DataRecordset オブジェクトを返す式。

パラメーター

名前 必須 / オプション データ型 説明
ShapeInConflict 必須 [IVSHAPE] データ レコードセットの更新後に競合するデータにリンクされた図形。

戻り値

なし

解説

ShapeInConflict に実際に競合がない場合、メソッドは無効になります。

競合に関する情報を削除しないことを選択すると、情報は現在の図面で無期限に永続化されます。

次の Microsoft Visual Basic for Applications (VBA) マクロは、RemoveRefreshConflict メソッドを使用して、競合を削除する方法を示します。 このマクロは、GetAllRefreshConflicts メソッドを呼び出して、データ レコードセットのリフレッシュ後に競合が存在する図形を特定します。 次に 、GetMatchingRowsForRefreshConflict メソッドを 呼び出して、競合の原因となっているデータ レコードセットの行を特定します。

最後に追加されたデータ レコードセットを更新し、競合がなかった場合は [イミディエイト] ウィンドウに "No conflicts" と出力します。 競合が見つかると、競合している各図形が GetMatchingRowsForRefreshConflict メソッドに渡され、結果の行 ID が同じウィンドウに出力されます。 次に、競合している図形を RemoveRefreshConflict メソッドに渡して、競合を削除します。

このマクロを実行する前に、最後に追加されたデータ レコードセットが、接続された (非 XML ベースの) データ レコードセットであり、元のデータ ソースに接続されていることを確認してください。 次に、データ ソースの行を削除するか、またはデータ レコードセットをリフレッシュすると競合が発生するような変更を行ってください。

Public Sub RemoveRefreshConflicts_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 
             
            Call vsoDataRecordset.RemoveRefreshConflict (vsoShapeInConflict) 
            
        Next intShapeCount 
         
    End If 
     
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。