2017-12-11 6 views
-1

Ich arbeite gerade an einem Projekt, das viele Tabellen ohne Beziehungen hat. Ich würde gerne wissen, ob es möglich ist, Tabellen zuerst zu erstellen und dann Beziehungen zum Beispiel über C# oder außerhalb von ms zu erstellen (ist das überhaupt möglich?)Datenbanktabellen erstellt in Zugriff und Beziehungen an anderer Stelle erstellt werden?

Ich habe Kenntnis von Normalisierung. Da ich jedoch keine Antwort auf Google finden konnte, wollte ich diese Frage stellen, wenn ich den Normalisierungsprozess starte und später herausfinde, dass die Beziehungen bereits über eine andere Methode hergestellt wurden.

Danke

+1

ich theoretisch bedeuten, solange die Datenintegrität bestätigt wurde , so dass es keine Fremdschlüsselfehler gibt, kann ich keinen Grund sehen, dass Sie das – SaggingRufus

+0

nicht tun können, so können Sie nur Tabellen mit den richtigen Schlüsseln erstellen und dann die Beziehungen von einem anderen Programm machen? @SaggingRufus kannst du mir bitte ein Beispiel oder einen Link geben – user2038084

+0

so etwas wie das? http://www.c-sharpcorner.com/forums/creating-relations-in-ms-access-with-c-sharp – SaggingRufus

Antwort

1

I DAO als Erik schlägt vor, verwenden würde. Obwohl ich keinen Code habe es von C# zu laufen, sollte das VBA Beispiel hier zeigt die Schritte erforderlich:

' 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 

und die Hilfsfunktion:

' 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

Ist 'IsTableRelation' eine UDF? Wenn ja, könnten Sie es entweder bereitstellen oder Einblick in das, was es tut? Ich kenne diese Funktion nicht. –

+0

@ErikvonAsmuth: Ja, verpasst, tut mir leid. Es ist eine einfache Hilfsfunktion. Ich habe es hinzugefügt. – Gustav

Verwandte Themen