Sobre a vinculação de formas dos dados
Observação
Recursos de conectividade de dados estão disponíveis apenas para usuários licenciados do Microsoft Visio Professional 2013.
São quatro os aspectos de conectividade de dados no Visio:
- Conexão com uma fonte de dados
- Vinculando formas aos dados
- Exibição gráfica de dados vinculados
- Atualização de dados vinculados que foram alterados na fonte de dados, atualização de formas vinculadas e solução de conflitos subsequentes que possam surgir
Em geral, você aborda esses aspectos na ordem em que eles estão listados, ou seja, primeiro você conecta o desenho do Visio a uma fonte de dados, depois vincula as formas do desenho aos dados da fonte de dados, exibe os dados graficamente em formas vinculadas, e atualiza os dados vinculados, quando necessário.
Cada um desses aspectos tem objetos e membros associados a ele no modelo de objeto do Visio. Este tópico fala sobre o segundo aspecto, vinculação de formas do desenho do Visio aos dados. Para obter mais informações sobre outros aspectos da conectividade de dados, consulte os seguintes tópicos:
Para conectar seu desenho do Visio a uma fonte de dados programaticamente, você pode usar a API do Visio para a conectividade dos dados, que inclui os seguintes objetos e seus membros associados:
- Coleção DataRecordsets
- ObjetoDataRecordset
- ObjetoDataConnection
- ObjetoDataRecordsetChangedEvent
- Coleção DataColumns
- ObjetoDataColumn
Após conectar o seu desenho Visio a uma fonte de dados externa, você pode vincular as formas no desenho a dados daquela fonte programaticamente. É possível vincular uma ou mais formas a uma única linha de dados em um conjunto de registros de dados ou a várias linhas de dados em conjuntos de registros de dados diferentes. Porém, não é possível vincular formas a várias linhas de dados no mesmo conjunto de registros.
É possível vincular formas existentes a dados, uma forma por vez ou em um grupo; também é possível criar formas e vinculá-las a dados simultaneamente. É possível especificar a correspondência entre formas e linhas de dados, se puder, ou deixar que o Microsoft Visio determine a correspondência automaticamente, com base em comparação entre os dados das formas existentes e os dados no conjunto de registros de dados.
Após vincular as formas aos dados, é possível exibir esses dados graficamente adicionando gráficos de dados às formas. Para obter mais informações sobre os gráficos de dados, consulte Sobre a exibição gráfica de dados.
Os objetos DataRecordset e DataColumn e a coleção DataColumns expõem várias propriedades, métodos e eventos que facilitam a vinculação de dados. Além disso, vários membros de outros objetos no modelo de objeto do Visio, inclusive os objetos Aplicativo, Documento, Página, Seleção, Forma e Janela estão relacionados à vinculação de dados.
Vinculação de dados e dados de forma
Vincular formas a dados depende do fato de você poder atribuir dados de forma a todas as formas do Visio. Em versões anteriores ao Visio 2007, os dados de forma eram chamados de propriedades personalizadas.
Para acessar e atribuir dados de forma na interface de usuário do Visio, clique com o botão direito em uma forma, aponte para Dados e clique em Dados da Forma. Do mesmo modo, é possível acessar e atribuir dados de forma manualmente ou programaticamente na planilha Visio ShapeSheet. Para exibir a planilha ShapeSheet (ShapeSheet) para uma forma selecionada, clique com o botão direito na forma e clique em Mostrar ShapeSheet. Para ver este comando, é preciso estar executando o Visio em modo de desenvolvedor. Para executar o Visio em modo de desenvolvedor, clique na guia Arquivo, clique em Opções, clique em Avançado e, em Geral, selecione Executar no modo do desenvolvedor.
Dentro do ShapeSheet, os dados de forma estão contidos na seção Dados de Forma (anteriormente chamada de seção de Propriedades Personalizadas). Para manter a compatibilidade com versões anteriores, os membros de objeto existentes retêm a "propriedade personalizada" ou as "propriedades personalizadas" em seus nomes. Se não forem atribuídos dados de forma a uma determinada forma, nenhuma seção de Dados de Forma será exibida no ShapeSheet. É possível adicionar uma seção Dados de Forma a um ShapeSheet exibindo o ShapeSheet conforme descrito anteriormente, clicando com o botão direito em qualquer ponto da janela ShapeSheet e clicando em Inserir Seção, selecionando Dados de Forma e clicando em OK.
Após vincular formas a dados, várias colunas da seção Dados de Forma correspondem de perto às propriedades do objeto DataColumn. Por exemplo, a coluna Rótulo na seção Dados da Forma, que fornece o rótulo que aparece para um item de dados de forma específico na caixa de diálogo Dados da Forma, corresponde à propriedade DataColumn.DisplayName, que controla o nome que é exibido para a coluna de dados associada, na janela Dados Externos. Para saber mais sobre como trabalhar com o objetoDataColumn, confira obter e configurar as propriedades de coluna de dados.
Identificando formas, conjuntos de registros de dados e linhas de dados
O Visio usa números de identificação exclusivos para identificar formas, conjuntos de registros de dados e linhas de dados. As identificações das formas são exclusivas apenas para o escopo da página na qual elas estão. Após determinar esses números, você pode passá-los aos métodos dos objetos relacionados aos dados do Visio para especificar exatamente como as formas no seu diagrama devem vincular-se às linhas de dados nos conjuntos de registros de dados disponíveis.
Para determinar a identificação de uma forma, obtenha o valor da propriedade Shape.ID. Além disso, o Visio também fornece formas GUIDs ou IDs exclusivas. O método Page.ShapeIDsToUniqueIDs obtém uma matriz das identificações das formas, bem como um valor de enumeração do VisUniqueIDArgs, especificando se deve obter, obter e fazer ou excluir as GUIDs das formas. O método Page.ShapeIDsToUniqueIDs também retornará uma matriz de IDs exclusivas para as formas passadas. De modo inverso, se souber as identificações exclusivas de um conjunto de formas, você pode usar o método Page.UniqueIDsToShapeIDs para obter as identificações daquelas formas. Para uma seleção de formas, use o método Selection.GetIDs para obter as identificações das formas.
Para determinar a identificação de um objeto DataRecordset que você adiciona à coleção DataRecordsets, obtenha o valor da propriedade DataRecordset.ID. Para determinar as identificações de cada linha em um conjunto de registros de dados, chame o método DataRecordset.GetDataRowIDs, que retornará uma matriz de identificações de linha. Para saber mais, confira a seção "Acessar dados em dados conjuntos de registros por programação" no sobre como se conectar aos dados no Visio.
Criando formas vinculadas a dados
Quando desejar criar formas já vinculadas aos dados de uma página de desenho que não contém formas ou que contém formas diferentes das que deseja vincular, você poderá usar os métodosPage.DropLinked ePage.DropManyLinkedU para criar uma ou mais formas adicionais já vinculadas aos dados. Esses métodos são semelhantes aos métodos Page.Drop e Page.DropManyU existentes, pois criam formas adicionais em um local especificado na página, mas também criam vínculos entre as novas formas e as linhas de dados especificadas de um determinado conjunto de registros de dados.
O método DropLinked retorna o objeto novo e vinculado a Forma e obtém os seguintes parâmetros:
- ObjectToDrop A forma específica (uma forma retangular, por exemplo) a ser criada.
- x - A coordenadax-do centro de uma nova forma na página.
- y - A coordenada y-do centro de uma nova forma na página.
- DataRecordsetID - O valor da propriedade do ID do objeto DataRecordset que contém a linha de dados para vinculação.
- DataRowID - O valor da propriedade do IDda linha de dados para vinculação.
- ApplyDataGraphicAfterLink Um valor Boolean especificando se é necessário aplicar o gráfico de dados da forma automaticamente se já tiver um ou, caso contrário, se é necessário aplicar o gráfico de dados usado por último. O padrão é não aplicar nenhum gráfico de dados. Para obter mais informações sobre os gráficos de dados, consulte Exibindo dados graficamente.
O código de amostra a seguir mostra como usar o método DropLinked para criar uma forma na página de desenho ativa, centralizada em coordenadas de página (2, 2) e vinculada a uma linha de dados. Leva o obtém DataRecordset passado, obtém sua identificação e, em seguida, passa esta identificação, junto com a identificação da linha de dados que servirá como link para o métodoDropLinked. A forma perdida é um retângulo simples de estêncil Basic_U.VSS, que abre o código, encaixada na janela de desenho do Visio.
Neste exemplo, a identificação da linha de dados é definida como 1; antes de executar o código, verifique se existe uma linha com essa identificação ou altere o valor da identificação no código.
Public Sub DropLinkedShape(vsoDataRecordset As Visio.DataRecordset)
Dim vsoShape As Visio.Shape
Dim vsoMaster As Visio.Master
Dim dblX As Double
Dim dblY As Double
Dim lngRowID As Long
Dim lngDataRecordsetID As Long
lngDataRecordsetID = vsoDataRecordset.ID
Set vsoMaster = Visio.Documents.OpenEx("Basic_U.VSS", 0).Masters("Rectangle")
x = 2
y = 2
lngRowID = 1
Set vsoShape = ActivePage.DropLinked(vsoMaster, dblX, dblY, lngDataRecordsetID, lngRowID, True)
End Sub
Do mesmo modo, o método DropManyLinkedU cria um conjunto de formas vinculadas, retornado como uma matriz das identificações de forma. Obtém como matriz de parâmetros para as formas a desenvolver, coordenadas e linhas de dados para vinculação. As entradas em posições matriz-índice correspondentes determinam como as formas e as linhas de dados são relacionadas e onde, na página, as formas individuais são desenvolvidas.
Vinculando formas existentes a dados
Quando você souber exatamente como uma ou mais formas existentes em um desenho Visio e uma ou mais linhas em um conjunto de registros de dados correspondem uma com a outra, você poderá vincular as formas existentes aos dados da seguinte maneira:
- Vinculando uma única forma a uma única linha de dados
- Vinculando uma seleção de formas a uma ou mais linhas de dados
- Vinculando várias formas a várias linhas de dados
Além disso, se não souber a forma exata do mapeamento de dados, você pode direcionar o Visio a conseguir a melhor correspondência possível, com base em informações limitadas de coincidência que você fornecer.
Vinculando uma única forma a uma linha de dados
Para vincular uma única forma a uma única linha de dados, use o método Shape.LinkToData. Esse método obtém uma identificação para o conjunto de registros de dados e uma identificação de linha de dados, bem como um sinalizador Boolean opcional especificando se é necessário exibir os dados vinculados em um gráfico de dados. O padrão é exibir o gráfico de dados.
Vinculando várias formas a dados
Dois membros do objeto Seleção, os métodos Selection.LinkToData e Selection.AutomaticLink, bem como o método Page.LinkShapesToDataRows, tornam possível o vínculo de uma ou mais formas existentes em uma seleção aos dados.
O método Selection.LinkToData funciona de maneira muito similar ao mesmo método do objeto Forma, exceto porque ele vincula uma seleção de formas, em vez de uma única forma, a uma única linha de dados.
Se você tiver dúvida a respeito da correspondência entre as formas e as linhas de dados, mas souber que há uma coincidência entre um atributo específico de cada forma e os dados em uma coluna no conjunto de registros de dados, o método Selection.AutomaticLink oferece uma maneira de vincular uma seleção de formas existentes a várias linhas de dados. Observe que ele deve estar atributo mesmo para todas as formas. Para saber mais sobre esse método, confira vincular a dados automaticamente.
O método Page.LinkShapesToDataRows é igual ao método Selection.LinkToData pois ele vincula várias formas. No entanto, usar este método para vincular dados a formas na mesma página, em vez de formas em uma seleção. O método LinkShapesToDataRows vincula formas a várias linhas de dados, enquanto que o método LinkToData vincula várias formas a uma única linha. Para vincular formas, passe ao método LinkShapesToDataRows um par de matrizes: um para as formas, e um para as linhas de dados. Observe que as posições de correspondência das matrizes devem coincidir. Como resultado, por exemplo, a forma na posição 1 na matriz de formas é vinculada aos dados na posição 1 na matriz das linhas de dados. Mais uma vez, ao chamar o método, você poderá especificar se é necessário aplicar um gráfico de dados existente às formas vinculadas.
Vinculando a dados automaticamente
Use o método Selection.AutomaticLink para vincular automaticamente os valores de dados de formas em formas selecionadas - isto é, as formas atribuídas a um objeto Selection - a linhas de dados em um conjunto de registros de dados - isto é, sem especificar a correspondência exata de todas as formas e linhas de dados. Para fornecer ao Visio informações suficientes para criar os links, é preciso fornecer no mínimo um conjunto de dados correspondentes: o nome de uma coluna no banco de dados, um tipo de atributo de forma e, se necessário, um valor de forma, todos na mesma posição de índice das matrizes correspondentes que você passar para o método.
O tipo de atributo de forma indica o atributo de forma para basear a correspondência. O atributo pode ser o valor de um item de dados de forma (anteriormente conhecido como valor de propriedade personalizado), um texto de forma ou qualquer outro valor especificado na enumeração VisAutoLinkFieldTypes.
Observação
Por exemplo, digamos que o desenho contém uma seleção de formas que representam diferentes funcionários. O texto da forma identifica as formas, nesse caso, seria nomes correspondentes do funcionário. (Você pode usar alguns dos nomes de funcionários da pasta de trabalho OrgData.xls que é enviada com o Visio e, em seguida, conectar-se a essa fonte de dados. Por padrão, OrgData.xls é instalado no seguinte caminho: C:\Arquivos do Programa\Microsoft Office\Office15\Visio Content[ langID], em que o langID varia de acordo com país ou região.) Em alguns computadores, o caminho pode incluir "Arquivos de Programa (x86)" em vez de "Arquivos de Programa".
Para conectar essas formas a um banco de dados no qual os dados de cada funcionário formam uma linha do banco de dados, você passa os seguintes parâmetros para o método AutomaticLink:
- DataRecordsetID O valor da propriedade doID - do objetoDataRecordsetque contém a linha de dados para vinculação. No exemplo a seguir, vamos passar um conjunto de registros de dados existente para o procedimento e obter a ID.
- Uma matriz de cadeia de caracteres de nomes de colunas no banco de dados. No mínimo uma posição na matriz deve ter um valor que corresponda aos valores na mesma posição nas matrizes AutoLinkFieldTypes e FieldNames. No exemplo a seguir, vamos passar de uma matriz que contém o nome da coluna "Nome" na matriz posição 0.
- AutoLinkFieldTypes() Uma matriz dos valores Longda enumeração VisAutoLinkFieldTypes, consistindo em tipos de atributo de forma. No mínimo uma posição na matriz deve ter um valor que corresponda aos valores na mesma posição nas matrizes ColumnNames e FieldNames. No exemplo a seguir, vamos passar o valor enumeração visAutoLinkShapeText na matriz posicionar 0.
- Uma matriz de cadeia de caracteres consistindo de valores de formas. No mínimo uma posição na matriz deve ter um valor que corresponda aos valores na mesma posição nas matrizes ColumnNames e AutoLinkFieldTypes.
- Para a maioria dos valores de AutoLinkFieldTypes, por exemplo, visAutoLinkShapeText, não é necessário especificar o valor FieldNames ; em vez disso, você pode passar o valor nulo. Que é o caso em nosso exemplo, portanto, podemos transmitir uma cadeia de caracteres vazia. No entanto, ao passar os valores visAutoLinkCustPropsLabel, visAutoLinkUserRowName, visAutoLinkPropRowNameU ou visAutoLinkUserRowNameU de AutoLinkFieldTypes, você deve passar um valor para FieldNames especificar totalmente o item de dados de forma a ser comparado ao nome da coluna de dados.
- AutoLinkBehaviors Um valor da enumeração VisAutoLinkBehaviors. Esses valores enumerados oferecem opções para personalizar o método, por exemplo, para substituir os links existentes por novos. O exemplo a seguir passa o valor padrão, 0.
- ShapeIDs() Uma matriz que o método preenche com as identificações das formas vinculadas retornadas.
O exemplo a seguir mostra uma maneira de usar o método AutomaticLink para vincular formas e dados automaticamente. Ele assume que você tenha conectado o desenho aos dados na pasta de trabalho de exemplo do OrgData.xls, como explicado anteriormente. Observe que o código requer que a primeira coluna de dados seja nomeada como "Nome", como no caso do OrgData.xls. Observe também que o texto de cada uma das formas do desenho a ser vinculado aos dados deve coincidir com um dos nomes da coluna "Nome" do OrgData.xls.
Public Sub LinkToDataAutomatically(vsoDataRecordset As Visio.DataRecordset)
Dim vsoSelection As Visio.Selection
Dim columnNames(1) As String
Dim fieldTypes(1) As Long
Dim fieldNames(1) As String
Dim shapesLinked() As Long
columnNames(0) = "Name"
fieldTypes(0) = Visio.VisAutoLinkFieldTypes.visAutoLinkShapeText
fieldNames(0) = ""
ActiveWindow.DeselectAll
ActiveWindow.SelectAll
Set vsoSelection = ActiveWindow.Selection
vsoSelection.AutomaticLink vsoDataRecordset.ID, _
columnNames, _
fieldTypes, _
fieldNames, 0, shapesLinked
End Sub
Descobrindo links entre formas e dados
Use os métodos abaixo para determinar quais formas estão vinculadas aos dados. Saber como as formas são vinculados a dados pode auxiliar na eliminação de conflitos e quebra de links:
- Page.GetShapesLinkedToData
- Page.GetShapesLinkedToDataRow
- Shape.GetLinkedDataRow
- Shape.GetCustomPropertyLinkedColumn
- Shape.GetCustomPropertiesLinkedToData
- Shape.IsCustomPropertyLinked
Quebrando links entre formas e dados
Como as palavras acima sugerem, é possível usar os métodos Shape.BreakLinkToData e Selection.BreakLinkToData para quebrar os links existentes entre as formas e os dados programaticamente. Além disso, diversas alterações feitas na interface do usuário podem dividir esses links. Por exemplo, quando os usuários excluírem um conjunto de registros de dados, uma linha vinculada ou uma forma vinculada, ou quando eles clicarem em Desvincular de Linha em um menu de atalhos de formas ou Desvincular em um menu de atalhos da uma linha, pode ser causado uma quebra de links.
Exceto quando um usuário excluir um conjunto de registros de dados, uma linha ou uma forma da interface do usuário, pois essas ações que disparam o evento Shape.ShapeLinkDeleted. Você também pode usar métodos listados na seção anterior para determinar o status do link.
Obtendo e configurando as propriedades das colunas de dados
Cada objeto DataRecordset contém uma coleção DataColumns de todos os objetos DataColumn associados ao objeto DataRecordset. Esses objetos permitem mapear as colunas de dados em células na seção Shape Data do ShapeSheet.
A amostra a seguir é sobre como obter o valor da célula Rótulo na seção Dados das Formas para a primeira coluna do conjunto de registros de dados passado ao método e exibi-lo na janela Imediato. Em seguida define o novo valor e o exibe.
A alteração desse valor modifica o rótulo do item de dados da forma na caixa de diálogo Dados da Forma de todas as formas vinculadas às linhas no conjunto de registros de dados. Para obter e definir o valor da célula Rótulo, passamos o valor visDataColumnPropertyDisplayName da enumeração VisDataColumnProperties para os métodos DataColumn.GetProperty e DataColumn.SetProperty.
Public Sub ChangeColumnProperties(vsoDataRecordset As Visio.DataRecordset)
Dim strPropertyName As String
Dim strNewName As String
Dim vsoDataColumn As Visio.DataColumn
strNewName = "New Property Name"
Set vsoDataColumn = vsoDataRecordset.DataColumns(1)
strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName)
Debug.Print strPropertyName
vsoDataColumn.SetProperty visDataColumnPropertyDisplayName, strNewName
strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName)
Debug.Print strPropertyName
End Sub
Atualizando os dados vinculados e resolvendo conflitos
Ao alterar os dados na fonte de dados à qual seu desenho está conectado, você poderá atualizar os dados em seu desenho Visio para refletir essas alterações. É possível definir que o Visio atualize os dados automaticamente em intervalos específicos, configurando a propriedade DataRecordset.RefreshInterval. É possível atualizar os dados programaticamente chamando o método DataRecordset.Refresh.
Além disso, é possível resolver qualquer conflito na relação entre as formas e a linhas de dados. Por exemplo, os conflitos podem ocorrer quando você for atualizar o conjunto de registros e algumas linhas de dados, às quais formas estavam vinculadas antes da operação de atualização não existem mais como resultado das alterações na fonte de dados. Outros conflitos podem ocorrer quando duas ou mais linhas no conjunto de registros atualizado tiverem chaves primárias idênticas.
Atualizando automaticamente dados vinculados
Ao criar um objeto DataRecordset , o valor de sua propriedade RefreshInterval fica definido para o padrão 0. Esta configuração indica que os dados não são atualizados automaticamente. Configurando o DataRecordset.RefreshInterval para um valor Long positivo, será possível especificar o tempo, em minutos, entre as atualizações automáticas. O intervalo mínimo que pode ser especificado é um minuto. Esta configuração corresponde ao valor que o usuário pode definir na caixa de diálogo Configurar Atualização.
Para determinar a data e o horário da última operação de atualização, chame a propriedade DataRecordset.TimeRefreshed.
Além disso, a propriedade DataRecordset.RefreshSettings permite personalizar as atualizações automáticas de dados. Configurando esta propriedade para uma combinação de valores na enumeração VisRefreshSettings, é possível especificar que uma ou ambas as condições abaixo podem ocorrer:
- A IU para reconciliar conflitos de atualização (o painel de tarefas Conflitos de Atualização) está desabilitada. (Para obter mais informações, consulte a próxima seção.)
- As operações de atualização substituem automaticamente as alterações nos dados realizadas na IU. O valor padrão para esta propriedade é 0, significando que nenhum desses eventos ocorrerá.
Identificando as linhas do conjunto de registros de dados para as operações de atualização
Como as formas são vinculadas, por suas identificações, a linhas de dados específicas, quando o Visio atualizar os dados vinculados, ele deve determinar quais linhas no conjunto ou conjuntos de registros de dados vinculados foram adicionadas, alteradas ou removidas desde a última atualização. Para identificar essas linhas, o Visio usa as identificações atribuídas às linhas no conjunto de registros de dados. O Visio pode atribuir essas identificações de duas maneiras, dependendo das chaves primárias que você designou para o conjunto de registros de dados quando você o criou.
Atualizar conjunto de registro de dados que não tem chaves primárias
Quando um conjunto de registros de dados é criado, o Visio atribui identificações a todas as linhas no conjunto com base na ordem existentes das linhas na fonte de dados. Assim sendo, à primeira linha no conjunto de registros é sempre atribuída a identificação 1, à segunda linha a identificação 2 e assim por diante.
Posteriormente, você pode adicionar ou remover linhas de dados da fonte de dados original. Em seguida, quando você atualiza os dados, o conjunto de registros de dados reflete as alterações. Como resultado, a ordem de linha do conjunto de dados pode mudar.
Por exemplo, em um conjunto de registros de cinco linhas, se a quarta linha na fonte de dados for removida, quando o Visio for atualizar o conjunto conectado àquela fonte de dados, a quinta linha no conjunto de registros se tornará a nova quarta linha e a identificação 4 será atribuída. A identificação de linha 5 será removida do conjunto de registros de dados.
Assim, as formas vinculadas a uma identificação 5 perdem seus vínculos e as formas vinculadas a identificação 4 obtém os dados da linha que estava anteriormente na quinta posição. Desse modo, não atribuir chaves primárias aos conjuntos de registros de dados quando forem criados poderá resultar em quebra de links entre as formas e os dados ou em o Visio vincular formas a linhas diferentes daquelas que você deseja que sejam vinculadas.
Atualizar conjunto de registro de dados que têm chaves primárias
É possível evitar essas quebras ou links não correspondentes atribuindo chaves primárias aos conjuntos de registros de dados. Uma chave primária identifica o nome da coluna ou colunas de dados que contiverem identificadores exclusivos para cada linha. O valor na coluna da chave primária, para cada linha, identifica exclusivamente aquela linha do conjunto de registros. As chaves primárias, geralmente, são valores de identificação, porém é possível definir qualquer coluna ou combinação de colunas para tornar-se a chave primária. Entretanto, para obter resultados consistentes quando for atualizar os dados, é importante que tornar o valor da coluna da chave primária (ou conjunto de valores para várias colunas de chaves primárias) como exclusivo para cada linha.
Assim, quando você ou o Visio for atualizar um conjunto de registros de dados que inclui chaves primárias, suas linhas retêm a mesma identificação que elas tinham antes da atualização. Como o Visio vincula as formas a linhas de dados por meio da identificação — identificação da forma a identificação da linha — e como as identificações de linha permanecem as mesmas após a operação de atualização, as formas vinculadas por dados permanecem vinculadas à linha correta. Observe que as identificações de linha nunca são recicladas para um determinado conjunto de registros de dados.
Use o método DataRecordset.GetPrimaryKey para determinar a chave primária existente para um conjunto de registros de dados, caso esteja especificada. Esse método retorna a configuração da chave primária ao conjunto de registros como um valor da enumeração VisPrimaryKeySettings. Use chaves primárias únicas ou compostas. Uma chave única baseia a identificação de linha nos valores de uma única coluna. Uma chave primária composta usa duas ou mais colunas para identificar exclusivamente uma linha.
Se a configuração da chave primária for visKeySingle ou visKeyComposite, o método também retorna uma matriz de cadeia de chaves primárias com nomes de colunas. Se a configuração da chave primária for visKeyRowOrder, que é o padrão, o método retorna uma matriz de chaves primárias vazia.
Do mesmo modo, é possível usar o método DataRecordset.SetPrimaryKey para especificar a configuração da chave primária para o conjunto de registros de dados, bem como o nome da coluna ou colunas que você deseja configurar como coluna ou colunas de chave primária. Aqui, novamente, quando configurar as chaves primárias, certifique-se de que a coluna ou colunas que você selecionar para serem colunas de chave primária contenham valores exclusivos (ou conjuntos de valores) para cada linha.
Atualizando dados vinculados por programação
Para atualizar um conjunto de registros de dados conectado por programação, chame o método DataRecordset.Refresh.
Isso fará com o método execute a cadeia de consulta associada ao conjunto de registros e em seguida atualize as formas vinculadas com os dados retornados pela consulta. Chamar o método Atualizar para um objeto DataRecordset específico fará com que todos os demais objetos DataRecordset associados ao mesmo objeto DataConnection, (isto é, tendo o mesmo valor para sua propriedade DataConnection) sejam atualizados. Os objetosDataRecordset que compartilham o mesmo valor da propriedadeconexão de dadossão chamados de conjuntos de registros de transações de dados.
Se ao chamar a opção Atualizar ocorrerem conflitos, o Visio exibe o painel de tarefas Conflitos de atualização na IU, a menos que você configure a propriedade RefreshSettings para incluir o valor enumerado visRefreshNoReconciliationUI.
Antes de atualizar dados vinculados, se você deseja alterar a consulta que o Visio usa para recuperar os dados para consultar uma tabela diferente no mesmo banco de dados, configure a propriedade DataRecordset.CommandString para um novo valor. Para conectar a uma fonte de dados completamente nova, configure os valores das duas propriedades a seguir DataRecordset.CommandString e DataConnection.ConnectionString.
O método DataRecordset.GetLastDataError recebe o código de erro ADO (ActiveX Data Objects), a descrição ADO e a identificação do conjunto de registro de dados associado ao erro mais recente que resultou da adição de um novo conjunto de registro ou da atualização de dados em um conjunto existente.
Identificando e resolvendo conflitos
Quando você ou o Visio atualizar os dados e isto resultar em uma ocorrência de conflito, é possível usar os métodos DataRecordset.GetAllRefreshConflicts e DataRecordset.GetMatchingRowsForRefreshConflict para determinar o motivo do conflito. O método GetAllRefreshConflicts retorna uma matriz de formas para a qual existe um conflito entre os dados na forma e os dados da linha do conjunto de registros aos quais a forma está vinculada. Para determinar as linhas do conjunto de registro que produziram o conflito, passe cada uma das formas para o método GetMatchingRowsForRefreshConflict, que retornará uma matriz de linhas que estão em conflito.
As linhas no conjunto de registros de dados podem estar em conflito quando duas ou mais dessas linhas tiverem chaves primárias idênticas e puderem vincular-se à 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 eliminar o conflito, passe a forma para o método DataRecordset.RemoveRefreshConflict, que removerá as informações conflitantes do documento.
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.