AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Master / detail haut nicht hin!
Thema durchsuchen
Ansicht
Themen-Optionen

Master / detail haut nicht hin!

Ein Thema von cugar · begonnen am 13. Jan 2007 · letzter Beitrag vom 13. Jan 2007
Antwort Antwort
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#1

Master / detail haut nicht hin!

  Alt 13. Jan 2007, 10:32
Datenbank: InterBase • Version: 7,5 • Zugriff über: Delphi
Hi,
komme jetzt nicht weiter....
Habe zwei IBDataSets, die Daten werden in zwei DBGrids angezeigt.
Die erste Tabelle Rechnungen ist die Mastertabelle, die zweite RechDetail soll die Details anzeigen.
Über die Eigenschaft "DataSource" bei RechDetail wird das Verhältnis festgelegt? ...oder nicht?

Beide DBGrid zeigen die Daten an, mein Problem ist aber:
die Detailtabelle zeigt alles an was sie enthält, und nicht nur die Daten, die zu der jeweiligen Rechnung gehören.
Was mache ich da falsch?

Gruß
cugar
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Master / detail haut nicht hin!

  Alt 13. Jan 2007, 10:52
Hi,

sieht so aus, als ob die Where Bedingung im Detail - SQL fehlt.

Also:
select * from detail where master_id = :id In diesem Beispiel muss in der Mastertabelle ein Feld Id existieren, welches mit der Detailtabelle über das Feld master_id verknüpft ist.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#3

Re: Master / detail haut nicht hin!

  Alt 13. Jan 2007, 10:55
CREATE TABLE "RECHNUNG"
(
"Re_Nr" INTEGER NOT NULL,
"Datum" DATE NOT NULL,
"MWST" SMALLINT NOT NULL,
"KD_ID" INTEGER NOT NULL,
"Anmerkung" "STR(100)",
PRIMARY KEY ("Re_Nr")
);
CREATE TABLE "RECH_DETAIL"
(
"ID" INTEGER NOT NULL,
"Re_ID" INTEGER NOT NULL,
"Art_ID" INTEGER NOT NULL,
"MENGE" INTEGER DEFAULT 1 NOT NULL,
"Preis_NETTO" DOUBLE PRECISION,
"Anmerkung" "TSTR(50)",
PRIMARY KEY ("ID")
);

Mastertabelle:
select "RECHNUNG"."Anmerkung","Re_Nr","Datum","MWST","KD_ ID","Firma",ANREDE."Anrede" ||
' '|| "Kontakt_Vorname"||' '||"Kontakt_Name" AS "Kontakt_Person",
"TelefonNr",
"PLZ"||' '||"ORT"||' '||"STRASSE"||"HausNr" AS "Anschrift"
FROM RECHNUNG,KUNDE,ANREDE
WHERE "KD_ID"="KUNDE"."ID" AND "KUNDE"."ANREDE"="ANREDE"."ID"



Detailtabelle:
SELECT
RECH_DETAIL."ID", "Art_ID", "Re_ID", "MENGE", "Preis_NETTO", "ArtNr", "Bezeichnung","Anmerkung"
FROM RECH_DETAIL, PALETTE, RECHNUNG
WHERE "Art_ID"=PALETTE."ID" AND "Re_Nr"="Re_ID"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Master / detail haut nicht hin!

  Alt 13. Jan 2007, 12:44
Hallo cugar,

das SQL-Statement der Detail-Tabelle erhält den selektierenden master-key über einen Parameter:

SQL-Code:
SELECT r.re_nr, d.id, d.art_id, d.menge, d.preis_netto,
   p.artnr, p.bezeichnung, d.anmerkung
FROM rech_detail d, palette p, rechnung r
WHERE d.art_id = p.id AND d.re_id = r.re_nr AND d.re_id = :re_nr
Der Name des Parameters muss mit dem Namen desjenigen Feldes in der mit DataSource verknüpften Tabelle übereinstimmen, dessen Wert für die Selektion benutzt werden soll.

Noch ein Rat: Wenn RE_NR vom Benutzer eingegeben wird, dann nimm nicht RE_NR als primary key für die Tabelle Rechnung, sondern führe einen künstlichen Schlüssel ID ein, der automatisch (Generator) vergeben wird. Da dieser Schlüssel später als Fremdschlüssel Verwendung findet, ist ein surrogate key besser, da bei Änderungen der Schlüsselwert nicht auf abhängige Tabellen propagiert werden muss.

Noch etwas zur Namenskonvention: Beim ER-Entwurf stehen deine Entitäten im Singular, der Tabellenname wird üblicherweise in den Plural gesetzt. Innerhalb der Tabelle werden die Attributnamen, eventuell mit einem Rollen-Suffix, als Feldnamen übernommen. Dabei solltest du auf Redundanzen verzichten, In einer Tabelle "REchnungen" ist "Nummer" oder auch "NR" okay, RE_NR hingegen nur "zweite Wahl".

Freundliche Grüße
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#5

Re: Master / detail haut nicht hin!

  Alt 13. Jan 2007, 13:07
Vielen Dank für Deine Mühe!
Werde die beiden Tabellen noch mal erstellen und versuche den Tipps zu folgen.

Schönes Wochenende noch!
cugar
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz