2017-12-11 40 views
-1

현재 관계가없는 테이블이 많은 프로젝트에서 작업 중입니다. C# langauage 또는 외부 ms 액세스를 통해 예를 들어 테이블을 만든 다음 관계를 만들 수 있는지 여부를 알고 싶습니다.액세스 및 관계에서 생성 된 데이터베이스 테이블을 다른 곳에서 만들 수 있습니까?

정규화에 대한 지식이 있습니다. 그러나 나는 Google에서 답변을 찾을 수 없었기 때문에이 질문을하기 위해 정규화 프로세스를 시작한 다음 나중에 다른 방법을 통해 관계가 이미 수행되었음을 알았습니다.

에릭 알 수 있듯이 당신이

+1

을 데이터 무결성이 확정되면서 , 외래 키 오류가 없으므로 아무 것도 볼 수 없으므로 – SaggingRufus

+0

올바른 키가있는 테이블을 만든 다음 다른 프로그램의 관계를 수행 할 수 있습니까? @ SaggingRufus 당신이 내게 예제 또는 링크를주세요 수 – user2038084

+0

이런 걸까요? http://www.c-sharpcorner.com/forums/creating-relations-in-ms-access-with-c-sharp – SaggingRufus

답변

1

내가 DAO을 사용합니다 감사합니다. 나는 C#을에서 실행 할 코드가없는 있지만, VBA 예제는 여기에 단계가 필요 보여해야합니다

' Creates and appends missing relations between the local tables. 
' Note, that this will create a hidden index on the foreign table field. 
' Returns True if success, False if not. 
' 
' 2017-11-14. Gustav Brock. Cactus Data ApS, CPH. 
' 
Public Function CreateLocalDataTableRelations() As Boolean 

    Dim Database  As DAO.Database 
    Dim Field   As DAO.Field 
    Dim Relation  As DAO.Relation 
    Dim Table   As DAO.TableDef 
    Dim ForeignTable As DAO.TableDef 

    Dim RelationName As String 
    Dim Result   As Boolean 

    Set Database = CurrentDb 

    Set Table = Database.TableDefs("Country") 
    Set ForeignTable = Database.TableDefs("Zone") 
    RelationName = Table.Name & "_" & ForeignTable.Name 
    If Not IsTableRelation(RelationName) Then 
     ' Create and append relation RelationName. 
      Set Relation = Database.CreateRelation(RelationName) 
      Relation.Table = Table.Name 
      Relation.ForeignTable = ForeignTable.Name 
      Relation.Attributes = dbRelationUpdateCascade 
       Set Field = Relation.CreateField("Code") 
       Field.ForeignName = "CountryCode" 
      Relation.Fields.Append Field 
     Database.Relations.Append Relation 
    End If 

    Set Table = Database.TableDefs("Zone") 
    Set ForeignTable = Database.TableDefs("Timezone") 
    RelationName = Table.Name & "_" & ForeignTable.Name 
    If Not IsTableRelation(RelationName) Then 
     ' Create and append relation RelationName. 
      Set Relation = Database.CreateRelation(RelationName) 
      Relation.Table = Table.Name 
      Relation.ForeignTable = ForeignTable.Name 
      Relation.Attributes = dbRelationUpdateCascade 
       Set Field = Relation.CreateField("ZoneId") 
       Field.ForeignName = "ZoneId" 
      Relation.Fields.Append Field 
     Database.Relations.Append Relation 
    End If 

    Result = (Err.Number = ErrorNone) 

    CreateLocalDataTableRelations = Result 

End Function 

및 도우미 기능 : 내가 이론적으로 한 의미

' Checks if a relation named RelationName exists. 
' Returns True if it is found, False if not. 
' 
' 2017-11-14. Gustav Brock. Cactus Data ApS, CPH. 
' 
Public Function IsTableRelation(_ 
    ByVal RelationName As String) _ 
    As Boolean 

    Dim Relation As DAO.Relation 

    Dim Result  As Boolean 

    For Each Relation In CurrentDb.Relations 
     If Relation.Name = RelationName Then 
      Exit For 
     End If 
    Next 
    Result = Not (Relation Is Nothing) 

    IsTableRelation = Result 

End Function 
+0

'IsTableRelation'은 UDF입니까? 그렇다면, 당신이 그것을 제공하거나 그것이 무엇을하는지에 대한 통찰력을 제공 할 수 있습니까? 나는 그 기능에 익숙하지 않다. –

+0

@ErikvonAsmuth : 예, 놓쳐 버렸습니다. 죄송합니다. 그것은 간단한 도우미 기능입니다. 나는 그것을 추가했다. – Gustav