Compartilhar via


Método Database.CreateRelation (DAO)

Aplica-se ao: Access 2013, Office 2013

Cria um novo objeto Relation (apenas espaços de trabalho do Microsoft Access). .

Sintaxe

expressão . CreateRelation(Name, Table, ForeignTable, Attributes)

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

Parâmetros

Nome

Necessária/opcional

Tipo de dados

Descrição

Name

Opcional

Variant

Um Variant (subtipo String) que denomina exclusivamente o novo objeto Relation. Consulte a propriedade Name para obter detalhes sobre nomes de relação válidos.

Table

Opcional

Variant

Um Variant (subtipo String) que denomina a tabela primária na relação. Se a tabela não existir antes de você acrescentar o objeto Relation, ocorrerá um erro em tempo de execução.

ForeignTable

Opcional

Variant

Um Variant (subtipo String) que denomina a tabela externa na relação. Se a tabela não existir antes de você acrescentar o objeto Relation, ocorrerá um erro em tempo de execução.

Atributos

Opcional

Variant

Uma constante ou combinação de constantes que contém informações sobre o tipo de relação. Consulte a propriedade Atributos para obter detalhes.

Valor de retorno

Relation

Comentários

O objeto Relation fornece informações ao mecanismo de banco de dados do Microsoft Access sobre a relação entre campos em dois objetos TableDef ou QueryDef. Você pode implementar integridade referencial usando a propriedade Attributes.

Se omitir uma ou mais dessas partes opcionais quando usar o método CreateRelation, você poderá usar uma instrução de atribuição apropriada para definir ou redefinir a propriedade correspondente antes de acrescentar o novo objeto à coleção. Depois de acrescentar o objeto, você não poderá alterar nenhuma de suas configurações de propriedade. Consulte os tópicos de propriedade individuais para obter mais detalhes.

Antes de poder usar o método Append em um objeto Relation, você deve acrescentar os objetos Field apropriados para definir as tabelas de relações entre chaves primária e estrangeira.

Se o nome se referir a um objeto que já é um membro da coleção ou se os nomes de objeto Field fornecidos na coleção Campos subordinados forem inválidos, ocorrerá um erro em tempo de execução ao usar o método Append .

Você não pode estabelecer ou manter uma relação entre uma tabela replicada e uma tabela local.

Para remover um objeto Relation da coleção Relations, use o método Delete na coleção.

Exemplo

Este exemplo usa o método CreateRelation para criar um objeto Relation entre o TableDef Employees e o novo TableDef denominado Departments. Este exemplo demonstra ainda como a criação de um novo Relation também criará os Indexes necessários na tabela externa (o índice DepartmentsEmployees na tabela Employees).

    Sub CreateRelationX() 
     
     Dim dbsNorthwind As Database 
     Dim tdfEmployees As TableDef 
     Dim tdfNew As TableDef 
     Dim idxNew As Index 
     Dim relNew As Relation 
     Dim idxLoop As Index 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
     With dbsNorthwind 
     ' Add new field to Employees table. 
     Set tdfEmployees = .TableDefs!Employees 
     tdfEmployees.Fields.Append _ 
     tdfEmployees.CreateField("DeptID", dbInteger, 2) 
     
     ' Create new Departments table. 
     Set tdfNew = .CreateTableDef("Departments") 
     
     With tdfNew 
     ' Create and append Field objects to Fields 
     ' collection of the new TableDef object. 
     .Fields.Append .CreateField("DeptID", dbInteger, 2) 
     .Fields.Append .CreateField("DeptName", dbText, 20) 
     
     ' Create Index object for Departments table. 
     Set idxNew = .CreateIndex("DeptIDIndex") 
     ' Create and append Field object to Fields 
     ' collection of the new Index object. 
     idxNew.Fields.Append idxNew.CreateField("DeptID") 
     ' The index in the primary table must be Unique in 
     ' order to be part of a Relation. 
     idxNew.Unique = True 
     .Indexes.Append idxNew 
     End With 
     
     .TableDefs.Append tdfNew 
     
     ' Create EmployeesDepartments Relation object, using 
     ' the names of the two tables in the relation. 
     Set relNew = .CreateRelation("EmployeesDepartments", _ 
     tdfNew.Name, tdfEmployees.Name, _ 
     dbRelationUpdateCascade) 
     
     ' Create Field object for the Fields collection of the 
     ' new Relation object. Set the Name and ForeignName 
     ' properties based on the fields to be used for the 
     ' relation. 
     relNew.Fields.Append relNew.CreateField("DeptID") 
     relNew.Fields!DeptID.ForeignName = "DeptID" 
     .Relations.Append relNew 
     
     ' Print report. 
     Debug.Print "Properties of " & relNew.Name & _ 
     " Relation" 
     Debug.Print " Table = " & relNew.Table 
     Debug.Print " ForeignTable = " & _ 
     relNew.ForeignTable 
     Debug.Print "Fields of " & relNew.Name & " Relation" 
     
     With relNew.Fields!DeptID 
     Debug.Print " " & .Name 
     Debug.Print " Name = " & .Name 
     Debug.Print " ForeignName = " & .ForeignName 
     End With 
     
     Debug.Print "Indexes in " & tdfEmployees.Name & _ 
     " TableDef" 
     For Each idxLoop In tdfEmployees.Indexes 
     Debug.Print " " & idxLoop.Name & _ 
     ", Foreign = " & idxLoop.Foreign 
     Next idxLoop 
     
     ' Delete new objects because this is a demonstration. 
     .Relations.Delete relNew.Name 
     .TableDefs.Delete tdfNew.Name 
     tdfEmployees.Fields.Delete "DeptID" 
     .Close 
     End With 
     
    End Sub