Announcement

Collapse
No announcement yet.

Beziehungsconstraints

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Beziehungsconstraints

    Hi Leute,

    Wo werden in Access überall die Beziehungsconstraints gehalten?

    Ich habe das aktuelle Problem, dass ich in einer Datenbank ursprünglich zwischen den Tabellen "Zuordnung" und "Kategorien" eine Beziehung mit referentieller Integrität definiert hatte. Nun habe ich aus der Beziehungsansicht die Tabelle "Kategorien" gelöscht, und durch die Tabelle "Aufgabenbereiche" ersetzt und die Beziehung zwischen "Zuordnung" und "Aufgabenbereiche" entspreched der vorherigen eingefügt.

    Wenn ich aber nun mein Programm starte, das auf die Datenbank zugreift, kann ich keine Zuordnung anlegen, weil die Datenbankschnittstelle mir zurückliefert, der Datensatz aus Zuordnung könne nicht gespeichert werden, weil er ein Datensatz aus Kategorien mit ihm in Beziehung stehen müsste.

    Gruß
    Martin Dietz

  • #2
    Hallo,

    kann man direkt in die Tabelle 'was einfügen oder kommt da der gleiche Fehler?

    Was ist das für ein "Programm, das auf die Datenbank zugreift"?
    Weiß dieses um die geänderten Zusammenhänge?
    Greift es auch wirklich (schon) auf die aktualisierte Datenbank zu oder vielleicht doch noch auf eine alte Version?
    Was ist das für eine "Datenbankschnittstelle", die den Fehler liefert?

    Ich denke, das ist eher ein 'periphäres' Problem, kein Fehler im Access.

    Viel Erfolg!
    Tino
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Hi Tino

      Auch in die Access-Tabelle selbst kann ich nichts einfügen, wenn ich versuche einen Datensatz einzutragen, dessen ID in der Aufgabenbereich-Tabelle existiert, aber nicht in der Kategorie-Tabelle kommt aus Access der gleiche Fehler.

      Das Programm ist ein Programm, das ich entwickele und das eine Oberfläche zur Datenbankbefüllung und einige Auswertungen beinaltet, sowie automatische Benachrichtigungen an den Anwender, sollte ein für ihn relevanter Datensatz eingetragen werden. Und ja, dieses Programm greift auf die richtige Datenbank zu, da es die Debug-und-Test-Datenbank ist, eine "alte" Version in dem Sinne wäre die produktive DB auf dem SQL-Server, aber die enthält bestimmte Tabellen nicht, so dass es viel früher gekracht hätte, außerdem schreibe ich die verwendte DB in die Statusleiste meines Hauptfensters, und da steht die Access-Datenbank drin.

      Und die Datenbankschnittstelle (ebenfalls im eigenen Programm) generiert nur aus den übergebenen Daten SQL-Statements über das OleDBCommand bzw. SqlCommand (je nach verbundener Datenbank) und liest die Datenbank aus und stellt deren Inhalt als Tabelle zur Verfügung. Grundsätzlich hält das Programm also keine Inormation über Constraints, außer in der Programmierung solcher Dinge wie dass bestimmte Felder ausgefüllt sein müssen, bevor der Anwender auf Speichern klicken darf, oder dass bestimmte Verweise nur aus Auswahllisten gefüllt werden können, die aus der anderen Tabelle zusammengestellt wurde.

      Ich vermute, dass Access darüber stolpert, dass er zwar die Tabelle aus dem Beziehungslayout entfernt hat, die Beziehung dieser Tabelle aber nach wie vor irgendwo besteht, ohne dass sie angezeigt wird, und deshalb fragte ich, wo die Constraints noch gehalten werden, damit ich da die entsprechende Beziehung entfernen kann, oder zumindest den Haken für die referentielle Integrität entferne.

      Comment


      • #4

        So ein Zufall - ich musste eben selber auch danach suchen, um den Namen einer solchen Tabellenbeziehung herauszufinden.

        Also, die Beziehungen stehen in MSysRelationships. Um diese Tabellen zu sehen, musst du unter Optionen "Systemobjekt anzeigen" aktivieren.

        wie das bei Acc2007 geht, steht hier beschrieben
        http://office.microsoft.com/de-ch/ac...010211415.aspx

        Ich LIEBE diese neuen Menüs, alles ist woanders, da bleibt man geistig rege.
        Aber spätestens seit <Start> -> <Beenden> sollte ich mich da gar nicht mehr 'drüber aufregen. Sorry, musste mal sein.
        Ich habs gleich!
        ... sagte der Programmierer.

        Comment


        • #5
          Danke für die Rückmeldung, ich habe es gestern abend aber doch noch selbst gefunden: In dem Beziehungslayout gibt es in der Symbolleiste 2 Knöpfe "direkte Beziehungen anzeigen" und "alle Beziehungen anzeigen". Da musste ich nur die Tabelle "Zuordnung" aktivieren, "direkte Beziehungen anzeigen" anklicken und er hat die Beziehung wieder dargestellt.

          Anscheinend habe ich den Fehler gemacht, die Tabelle aus der Ansicht zu löschen, ohne vorher die Beziehung zu löschen, und damit hat er sie nur nicht mehr angezeigt, statt alle Beziehungen dieser Tabelle zu anderen zu entfernen. Also wenn ich eine derart irreführende Benutzeroberfläche zusammenstricken würde, hätte ich vermutlich sofort den Betriebsrat auf dem Hals, aber meine "Kunden" sind ja firmenintern und ich heiße auch nicht Bill Gates...

          Aber das mit den Systemobjekten werde ich mir auf alle Fälle merken. Danke!

          Gruß
          Martin

          Comment

          Working...
          X