Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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