Compartilhar via


Método Database.PopulatePartial (DAO)

Aplica-se ao: Access 2013, Office 2013

Sincroniza as alterações em uma réplica parcial com a réplica completa, limpa todos os registros na réplica parcial e preenche novamente a réplica parcial com base nos filtros da réplica atual. (Apenas bancos de dados do mecanismo de banco de dados do Microsoft Access).

Sintaxe

expressão . PopulatePartial(DbPathName)

expressão Uma variável que representa um objeto do Banco de dados.

Parâmetros

Nome

Necessária/opcional

Tipo de dados

Descrição

DbPathName

Obrigatório

String

O caminho e o nome da réplica completa a partir da qual os registros serão preenchidos.

Comentários

Quando você sincroniza uma réplica parcial com uma réplica completa, é possível criar registros "órfãos" na réplica parcial. Por exemplo, suponha que você tenha uma tabela Customers com seu ReplicaFilter definido como "Região = 'CA'". Se um usuário alterar uma região de Customers de CA para NY na réplica parcial e, em seguida, ocorrer uma sincronização por meio do método Synchronize, a alteração será propagada para a réplica completa mas o registro que contém NY na réplica parcial é órfão porque agora ele não satisfaz aos critérios do filtro da réplica.

Para solucionar o problema dos registros órfãos, você pode usar o método PopulatePartial. O método PopulatePartial é semelhante ao método Synchronize, mas ele sincroniza quaisquer alterações com a réplica completa, remove todos os registros na réplica parcial e, em seguida, preenche novamente a réplica parcial com base nos atuais filtros da réplica. Mesmo que os filtros da réplica não tiverem sido alterados, PopulatePartial sempre limpará os registros na réplica parcial e os preencherá novamente com base nos filtros atuais.

Geralmente, você deve usar o método PopulatePartial ao criar uma réplica parcial e sempre que alterar os filtros da réplica. Se seu aplicativo alterar os filtros da réplica, você deve executar os seguintes procedimentos:

  1. Sincronize sua réplica completa com a réplica parcial nas quais os filtros estão sendo alterados.

  2. Use as propriedades ReplicaFilter e PartialReplica para fazer as alterações desejadas no filtro da réplica.

  3. Chame o método PopulatePartial para remover todos os registros da réplica parcial e transferir todos os registros da réplica completa que satisfazem os novos critérios do filtro da réplica.

Se um filtro de réplica tiver sido alterado e o método Synchronize for invocado sem que seja invocado primeiramente PopulatePartial, ocorrerá um erro interceptável.

O método PopulatePartial pode ser invocado apenas em uma réplica parcial que tiver sido aberta para acesso exclusivo. Além disso, não é possível chamar o método PopulatePartial a partir do código em execução dentro da própria réplica parcial. Em vez disso, abra a réplica parcial exclusivamente a partir da réplica completa ou de outro banco de dados e, em seguida, chame PopulatePartial.

Observação

[!OBSERVAçãO] Embora PopulatePartial execute uma sincronização de mão única antes de limpar e preencher novamente a réplica parcial, ainda é uma boa ideia chamar Synchronize antes de chamar PopulatePartial. Isso ocorre porque se a chamada de Synchronize falhar, ocorrerá um erro interceptável. Você pode usar esse erro para decidir prosseguir ou não com o método PopulatePartial (o que remove todos os registros da réplica parcial). Se PopulatePartial for chamado por si mesmo e ocorrer um erro enquanto os registros estiverem sendo sincronizados, os registros da réplica parcial ainda serão limpos, o que pode não ser o resultado desejado.

Exemplo

O exemplo a seguir usa o método PopulatePartial depois de alterar um filtro de réplica.

Sub PopulatePartialX() 
 
 Dim tdfCustomers As TableDef 
 Dim strFilter As String 
 Dim dbsTemp As Database 
 
 ' Open the partial replica in exclusive mode. 
 Set dbsTemp = OpenDatabase("F:\SALES\FY96CA.MDB", True) 
 
 With dbsTemp 
 Set tdfCustomers = .TableDefs("Customers") 
 
 ' Synchronize with full replica 
 ' before setting replica filter. 
 .Synchronize "C:\SALES\FY96.MDB" 
 
 strFilter = "Region = 'CA'" 
 tdfCustomers.ReplicaFilter = strFilter 
 
 ' Populate records from the full replica. 
 .PopulatePartial "C:\SALES\FY96.MDB" 
 
 .Close 
 End With 
 
End Sub