Compartilhar via


Método DataRecordset.GetMatchingRowsForRefreshConflict (Visio)

Retorna uma matriz das identificações das linhas do conjunto de registros de dados vinculadas a uma forma e que estarão em conflito após a atualização do conjunto de registros de dados.

Observação

This Visio object or member is available only to licensed users of Visio Professional 2013.

Sintaxe

expressão. GetMatchingRowsForRefreshConflict (ShapeInConflict)

Expressão Uma expressão que retorna um objeto DataRecordset .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
ShapeInConflict Obrigatório Formato Uma forma vinculada a dados que tem um conflito após a atualização do conjunto de registros de dados.

Valor de retorno

Long()

Comentários

O método GetAllRefreshConflicts retorna uma matriz de formas em que existe um conflito entre dados na forma e dados na linha data-recordset à qual a forma está vinculada. Para determinar quais linhas de conjunto de registros de dados produziram um conflito, você pode passar cada uma dessas formas por sua vez para o método GetMatchingRowsForRefreshConflict , que retorna uma matriz de linhas que estão em conflito para uma determinada forma.

As linhas no conjunto de registros de dados podem estar em conflito quando duas ou mais delas possuem chaves primárias idênticas e podem ser vinculadas à mesma forma. Quando isso ocorrer, o GetMatchingRowsForRefreshConflict retorna uma matriz com no mínimo duas identificações de linha.

Os conflitos podem também ocorrer quando uma linha anteriormente vinculada do conjunto de registros de dados for removida. Quando isso ocorrer, o método retorna uma matriz vazia.

Para remover um conflito, passe a forma que tem o conflito para o método RemoveRefreshConflict , que remove as informações conflitantes do documento atual. As informações sobre conflitos persistirão no documento atual até que você exclua a forma em conflito ou chame RemoveRefreshConflict na forma.

Exemplo

Essa macro do Microsoft Visual Basic for Applications (VBA) mostra como usar o método GetAllRefreshConflicts para determinar quais formas, se houver, apresentarão conflitos após a atualização de um conjunto de registros de dados e, em seguida, como usar o método GetMatchingRowsForRefreshConflict para determinar qual(is) linha(s) do conjunto de registros de dados está(ão) causando o conflito. Ela atualiza o conjunto de registros de dados adicionado mais recentemente e, se não localizar nenhum conflito resultante, imprimirá "No conflicts" na janela Immediate. Se localizar conflitos, ela passará cada uma das formas com conflitos para o método GetMatchingRowsForRefreshConflict e imprimirá as identificações das linhas resultantes na mesma janela.

Antes de executar essa macro, verifique se o conjunto de registros de dados adicionado mais recentemente é um conjunto de registros de dados conectado (não baseado em XML) e se a conexão com a fonte de dados original ainda está disponível. Em seguida, exclua uma linha da fonte de dados ou faça outra alteração que cause conflito quando você atualizar o conjunto de registros de dados.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.