Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Verknüpfung von Tabellen

  Alt 8. Mär 2005, 19:02
Zitat von Pindel:
Ich denke das habe ich nicht nötig...
mir ist schon klar was er meint, aber ich weiss nicht genau wie ich das vernünftig hinbekomme
wenn ich mich an die normalformen halten muss...
ich kann zum beispiel eine dritte tabelle machn in der ich die ID der videos-tabelle und die
id der kunden-tabelle mit einander verknüpfe, aber ich weiss nicht wie ich das dann vernünftig anzeigen
soll...
wenn ich zum beipiel auf einen kunden klicke, das ich dann sehe welche filme der ausgeliehen hat...
probleme habe ich außerdem mit der suche...
Du könntest z.B. einen Kundendialog machen, wo Name Adresse usw. drinstehen. Und dort fügst Du ein DbGrid ein, in dem die von diesem Kunden ausgeliehenen Filme mit Ausleihdatum stehen. Dazu musst Du von der untergeordneten TQuery die Eigenschaft DataSource setzen und kannst dann auf die Felder als automatische Parameter zugreifen.

Beipiel qryKunden:

SQL-Code:
SELECT *
FROM Kunden
WHERE id = :id
Delphi-Quellcode:
qryKunden.ParambyName.('Id').AsInteger := fKundenId
qryKunden.Open;
Beispiel für 2 Stufige Subquery der ausgeliehenen Filme:

SQL-Code:
SELECT Filme.Titel,
       Ausleih.Datum
FROM Ausleih
LEFT OUTER JOIN Filme on Filme.Id = Ausleih.FilmId
WHERE Ausleih.KundenId = :Id
Und zum Verbinden
qryAusleih.DataSource := dsKunden; Jedesmal wenn Du den Tabellenzeiger in qryKunden (dsKunden) bewegst (Next, Prior etc.) prüft dann qryAusleih über eine Notification die DataSource und aktualisiert sich selbst (d.h. macht Close, füllt den Parameter :id mit dem GLEICHNAMIGEN Wert aus qryKunden und wieder Open).

Analog kannst Du das auch umgekehrt bei den Filmen machen, also wer hat welchen Film ausgeliehen. In den jweiligen Grids könntest Du auch gleich Bearbeitungsoptionen mit reinnehmen, Neu, Löschen usw. dann kannst Du von den Kunden gleich zum Verleih springen oder vom Film einen Kunden entfernen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat