AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Master-/Detail wie am Besten

Master-/Detail wie am Besten

Ein Thema von ByteAngel · begonnen am 8. Jan 2014 · letzter Beitrag vom 8. Jan 2014
Antwort Antwort
ByteAngel

Registriert seit: 8. Jan 2014
1 Beiträge
 
#1

Master-/Detail wie am Besten

  Alt 8. Jan 2014, 18:51
Datenbank: Firebird • Version: 2.5 • Zugriff über: UniDac
Hallo Leute,

ich beschäftige mich seit langem mal wieder mit Delphi
und möchte gleich mal meine erste Frage loswerden.

Welche Ansätze gibt es zur Umsetzung von einer Oberfläche
die das Editieren von Master-/Detail Datensätzen ermöglicht ?

Aktuell habe ich gerade das Problem.
Es sind folgende 2 bzw. 3 Table gegeben :

- Table Benutzer (MasterTable)
ID Integer PK AutoInc(Generator)
Name Varchar(45)
.........

- Table Benutzer2Gruppe (Detail-table)
ID Integer PK AutoInc(Generator)
BENUTZER_ID FK auf Benutzer/ID
BENUTZERGRUPPEN_ID FK auf BENUTZERGRUPPEN/ID
.........

- Table BenutzerGruppen
ID Integer PK AutoInc(Generator)
Name Varchar(45)
.........

Bei DetailTable wurde :
- MasterSource auf den BenutzerTable gesetzt
- MasterField auf "ID"
- DetailField auf "BENUTZER_ID"
- CachedUpdates auf True

Damit funktioniert fast alles so wie es soll, nur ich bekomme es um's
verrecken nicht hin, das wenn im Mastertable ein neuer Datensatz angelegt wird
auch die neuen Datensätze des Detailtable erfolgreich mitgepostet werden.
Die neue ID wird im OnBeforePost des MasterTables aus einem Generator gelesen
und gesetzt.
Die neue Benutzer ID wird im DetailTable im OnNewRecord/BeforeInsert gesetzt,
somit müssten eigentlich alle Felder gefüllt sein.
Wenn ich aber MasterTable.Post aufrufe, werden die MasterDaten gespeichert,
die Detail-Daten aber nicht, es kommt keine Fehlermeldung nichts.

Hat jemand eine Idee/Tipp für mich ?

Welche Alternative Lösungsansätze gibt es noch ?
Querys für die Detail-Daten ? (Vor-/Nachteile)

Für ein paar Denkanstöße wäre ich sehr dankbar,

Gruß ByteAngel
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Master-/Detail wie am Besten

  Alt 8. Jan 2014, 19:47
Das ist auch keine Master-Detail-Beziehung sondern eine N:M-Beziehung.
Ein Benutzer kann Mitglied in mehren Gruppen sein.
Eine Gruppe kann mehrere Benutzer haben.
Dies wird durch die 3. Tabelle "Benutzer2Gruppe" abgebildet.

Wenn du ein Formular hast in dem die Benutzer angelegt und editiert werden,
dann könnte man dort für den aktuell selektierten User eine Liste der Gruppen anzeigen
in denen der User Mitglied ist.
Allerdings wäre diese Liste read-only; man kann sie nicht direkt editieren.

SQL-Code:
SELECT BenutzerGruppen.Name FROM
BenutzerGruppen INNER JOIN Benutzer2Gruppe ON BenutzerGruppen.ID=Benutzer2Gruppe.BENUTZERGRUPPEN_ID
WHERE Benutzer2Gruppe.BENUTZER_ID = :IdUser
Es gibt dann 2 Buttons "zu Gruppe hinzufügen" und "aus Gruppe entfernen".
Beim Hinzufügen wird ein SQL INSERT ausgeführt und beim Entfernen ein DELETE.

Genau das Gleiche kann man in dem Formular machen in dem die BenutzerGruppen editiert werden.

Du wirst um SQL-Kenntnisse nicht drumrumkommen.
Die Tabelle Benutzer2Gruppe braucht übrigens nur 2 Felder; das Autoinc-Feld kannst du löschen und im Gegenzug den Primärschlüssel auf die beiden verbleibenden Felder legen.
fork me on Github
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf