AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Master-Detail-Verknüpfung
Thema durchsuchen
Ansicht
Themen-Optionen

Master-Detail-Verknüpfung

Ein Thema von barnti · begonnen am 3. Sep 2003 · letzter Beitrag vom 4. Sep 2003
Antwort Antwort
Seite 2 von 2     12   
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Master-Detail-Verknüpfung

  Alt 3. Sep 2003, 16:20
Hallo,

Generalissimo: da haben wir uns falsch verstanden. Sorry. Das klappt natürlich mit einer DBCombo. Ich hatte anfangs eine DBLookupC. benutzt.

Der Doppelpunkt ist in dem Statement vorhanden...

Ich muss erst mal eine Pause einlegen. Ich melde mich spätestens morgen noch einmal.

Danke für eure Anteilnahme bis hier,

Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#12

Re: Master-Detail-Verknüpfung

  Alt 3. Sep 2003, 17:38
Also für Zukunft:
Mach Dir das Leben nicht unnötig schwer! Programmierer (meint man) sind faul und gehen immer den Weg des geringsten Widerstandes (bzw. der geringstnötigen Gedächtnisleistung)

Daher hier meine 10 Gebote für den faulen Datenbankmenschen:

1. Benenne Deine Tabellen nach ihrem Hauptinhalt
2. verwende den Plural (Kunden nicht: Kunde) - macht später die Querys leichter lesbar
3. Benenne Zwischentabellen (auch Verknüpfungstabellen genannt) nach den Tabellen, auf die sie verweisen und verwende einen Unterstrich zur Trennung z.B. Tabellen: Kunden,Standorte Zwischentabelle: Kunden_Standorte
4. Benenne das Schlüsselfeld des Primärschlüssels genauso wie die Tabelle, nur setze ein 'Id' davor also: 'IdKunden'
5. denke Dir einen 1-Stelligen Code für den DatenTyp aus und stelle diesen jedem Feldnamen voran, es sei denn es ist ein Id-Feld z.B.
iFarbe (Integer),
cNummer (char oder Varchar)
lAktiv (Logisch/Boolean/Bit)
tBeschreibung (Text) - das erleichtert Dir in Delphi die korrekte Ansprache der Felder (AsInteger,AsString etc)
6. verwende immer wieder die gleichen FeldNamen für die gleichartige Dinge (zb. Tabelle: Funktionen / Felder: IdFunktionen,cBezeichnung | Tabelle: Taetigkeiten / Felder: IdTaetigkeiten,cBezeichnung)
7. Wenn eine Eigenschaft eines Dinges, das Du in eine Tabelle stopfen möchtest mehr Werte annehmen kann, als Deine MausHand an freien Fingern hat, wenn alle Tasten gedrückt sind, dann pack es in eine Detailtabelle (Z.B. Tabelle: Rufnummern Feld: idRufnummernTyp / Tabelle: RufnummernTyp Felder: idRufnummernTyp,cBezeichnung Werte: 'Festnetz privat','Festnetz Büro','Funk privat','Funk dienstlich','Fax privat','Fax Büro','Pager privat','Pager dienstlich')
8. verwende Aliasse in Selects, die sich auf mehr als eine Tabelle beziehen, nutze für Haupttabellen wenn's geht 1 Buchstaben, für ZwischenTabellen 2 z.B. Tabellen: Kunden, Adressen,Kunden_Adressen dann :
SQL-Code:
         select K.cVorname,
                K.cName,
                A.cStrasse,
                A.cNummer,
                A.cPlz,
                A.cOrt
           from Kunden K
left outer join Kunden_Adressen KA
             on KA.idKunden = K.idKunden
left outer join Adressen A
             on A.idAdressen = KA.idAdressen
          where K.iGenus = 0
mit Aliassen sind 'K', 'A' und 'KA' gemeint
9. Nutze wenn immer möglich joins statt Unterabfragen. Unterabfragen (Subselects) sind zwar oft schneller vom Programmierer zu formulieren, meist jedoch deutlich weniger performant und nicht in allen db-Systemen verfügbar (MySQL bis dato soviel ich weis z.B. unterstützt keine Subselects).
10. Wenn Du kannst bleibe so ANS-SQL-konform wie möglich - erleichtert ungemein den Wechsel des Datenbanksystems. (Die einzige Versuchung der ich beim MS-SQL-Server meist nicht widerstehen kann sind die dort möglichen case-STatements in Selectanweisungen - sau-bequem )

Ende der Gebote

Also, Dein select von 16:26 Uhr "verstößt" gegen Faulheitsregel Nummer 8
ausserdem machst Du einen Cross-join (verknüpfe alle Datensätze aus Tabelle Kunde mit allen aus Tabelle Standorte) um ihn anschließend mit Distinct wieder einzugrenzen = ZuHause>Sydney>Tokio>NewYork>Tokio>Sydney>KneipeAn DerEcke
Wenn Delphi (nicht BDE oder DatenbankSystem) diese Meldung bringt, dann hast Du wahrscheinlich doppelt auf Deine TQuery-Komponente geklickt, im daraufhin erscheinenden Dialog Felder hinzugefügt (möglicherweise auch alle), anschließend die Tabellenstruktur in Datenbank geändert (Feld hinzugefügt) und vergessen in Feldliste der TQuery dieses Feld hinzuzufügen. dann findet die TDatasSource das Feld nicht und meckert.
So. Genug jetzt.
Tim Leuschner
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Master-Detail-Verknüpfung

  Alt 4. Sep 2003, 08:09
Hallo ihr!

Das Problem hat sich folgendermassen gelöst:
Die DBLookUpCombobox hatte in ihren Properties "ReadOnly" eingestellt.
Dann kann das nicht funktionieren! Dort geändert - schwups - jetzt funktioniert es.

Zitat:
Daher hier meine 10 Gebote für den faulen Datenbankmenschen
Amen!(Einige dieser 'Regeln' sind sicherlich hilfreich, aber nicht im Interesse der OOP und widersprechen auch dem DB -Design)

Das Problem bei Ansi-SQL ist, das mysql es nicht überall unterstützt. Damit ist die Frage des DB -Wechsels überflüssig.

ES GEHT! Nach einem Tag wurde das auch Zeit. Ich denke hier ist noch eine wichtige Regel, die der beherzte Programmierer zu achten hat (was sich grad wieder bestätigt):

11. Mach mal ne Pause!

Danke für eure Unterstützung, auch wenn nicht immer die direkte Problemlösung in diesem Forum gewährt ist, ist es absolut erfreulich sich mal mit "Gleichgesinnten" auszutauschen! 8)

Vielen Dank für das Interesse,

Barnti
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:56 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