AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tabellenfelder automatisch füllen durch zweite Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellenfelder automatisch füllen durch zweite Tabelle

Ein Thema von stOrM · begonnen am 11. Mai 2017 · letzter Beitrag vom 12. Mai 2017
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 11. Mai 2017, 16:56
Und was hast Du bei KeyFieldNames eingetragen?

List... ist für die anzuzeigenden Daten.

Wenn Du so 'nen LookupComboBox auf ein Grid setzt, dann müsste das eigentlich so funktionieren:

ListField ist die Spalte der Tabelle, aus der ausgewählt werden soll, und zwar der verbale Inhalt.

KeyField ist die Spalte der Tabelle, aus der ausgewählt werden soll, und zwar der Wert, der übernommen werden soll.

Wenn es um die Übernahme von Daten in die Tabelle Angebot geht, müsste LookupComboBox bei Dir dann auf dem Feld AngebotNr stehen.
ListSource müsste auf die Tabelle Artikel verweisen.
ListField wäre ArtikelBezeichnung.
KeyField sollte dann ArtikelNr sein.

PS:

Das hat nichts einem unglücklich gewählten Datenmodell zu tuen, es ist lediglich eine Hilfe, um die entsprechenden Fremdschlüssel in einem normalisierten Datenmodel auswählen zu können.

Es wird hier der Fremdschlüssel, der auf die andere Tabelle verweist, übernommen und nicht ein redundanter Wert.

Die Auswahl erfolgt über eine Sicht auf die Schlüsseltabelle, angezeigt wird die verbale Beschreibung.

Übernommen wird der Fremdschlüssel.

Geändert von nahpets (11. Mai 2017 um 18:14 Uhr) Grund: Text ergänzt um PS:
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 11. Mai 2017, 17:39
Danke nahpets so funktioniert es jetzt endlich
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 11. Mai 2017, 21:41
Das hat nichts einem unglücklich gewählten Datenmodell zu tuen, es ist lediglich eine Hilfe, um die entsprechenden Fremdschlüssel in einem normalisierten Datenmodel auswählen zu können.
Ich habe es so verstanden, dass in Angebot die Felder Bezeichnung und Nummer beide das gleiche beschreiben bzw. zum Nachschlagen nutzen, eben ein und den selben Artikel.
Daher bleibe ich bei meinen Gedanken.
Wenn das Datenmodell so in der Welt ist, okay. Dann muss man halt diese Bastelei machen, ansonsten (Entwicklungsphase) würde ich noch mal durchatmen und mir das ansehen.
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 11. Mai 2017, 21:52
Die Benutzung eine TBDlookupComboBox ist nur in einem normalisierten Datenmodel zum Nachschlagen von Fremdschlüsseln sinnvoll. In der Anzeige steht halt ein Text zum Fremdschlüssel, übernommen wird der Fremdschlüssel.

Wer es anders benutzt (z. B. zum Pflegen von Redundanzen) gehört geohrfeigt
Und wer beide Werte übernimmt erst recht.

Natürlich ist Dein Gedankengang grundsätzlich erstmal richtig.

Ausnahmen davon müssen sehr genau begründet werden, derweil: Sie tendieren in der Verwendung leicht bis mittelstark in Richtung unpflegsame Systeme
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 12. Mai 2017, 11:03
[...]
Angenommen Du hast eine Tabelle "Artikel" und Du willst ein Angebot erstellen, dann packst Du in die Angebotstabelle den Schlüssel des Artikels und gut ist
Das ist ja der Vorteil einer relationalen Datenbank, daß jedes Datum nur einmal vorgehalten wird.
Das sollte man aber mit Vorsicht genießen.

Was passiert, wenn mal die Bezeichnung des Artikels geändert wird und vorher schon diverse Rechnungen über diesen Artikel geschrieben wurden? Dann passt die Bezeichnung des Artikels nicht mehr zur ursprünglichen Rechnung/Lieferschein/Whatever wenn man sie erneut drucken wollte.

Das kann unter Umständen böse ins Auge gehen.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#16

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 12. Mai 2017, 11:57
Nein, man ändert nicht nachträglich irgendwelche Werte und will trotz Änderung noch die ursprüngliche Ausgabe bekommen.

Entweder man arbeitet mit Historien, d. h. dass man z. B. ein Datum mit abspeichert, das besagt:

Bis zum Datum A galt der Text B.
Ab Datum C gilt Text C.

Sinnvollerweise arbeitet man hier dann mit Von-Bis-Werten.

Hat man die nicht, ändert man nicht nachträglich eine Artikelbezeichnung.
Man legt dann einen neuen Artikel mit eigener ArtikelNr. ... an.

Alternativ speichert man die Inhalte von Rechnungen ab und erstellt neue Ausdrucke ... aus den abgespiecherten Daten.
Man geht aber sicherlich dann nicht her und versucht aus dem aktuellen Datenbestand historische Ausgaben zu reproduzieren.

Das wäre ja so, als müsste im heutigen Duden alle Schreibweisen der deutschen Sprache enthalten sein, um daraus auch noch Texte aus dem 19. Jahrhundert in der damals korrekten Schreibweise reproduzieren zu können. (Ok: Beispiel ist etwas überspitzt, dürfte sinngemäß aber schon (annähernd) passen).
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 12. Mai 2017, 12:25
Das musst du mir nicht sagen. Unsere Software macht das so, dass die einzelnen Positionen einer Rechnung mit den zu dem Zeitpunkt gültigen Werten abspeichert. Wir haben die nicht selbst programmiert sondern greifen nur lesend auf die Datenbank zu. Deshalb kenne ich die Strukturen der Tabelle.

Mein Post war lediglich als Hinweis für den TE gedacht, dass er sich nicht unbedingt nur auf die PKs der Artikeltabelle verlassen soll.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Tabellenfelder automatisch füllen durch zweite Tabelle

  Alt 12. Mai 2017, 12:29
Was passiert, wenn mal die Bezeichnung des Artikels geändert wird und vorher schon diverse Rechnungen über diesen Artikel geschrieben wurden? Dann passt die Bezeichnung des Artikels nicht mehr zur ursprünglichen Rechnung/Lieferschein/Whatever wenn man sie erneut drucken wollte.

Das kann unter Umständen böse ins Auge gehen.
vollständig richtig!
Darum sollte dann auch gleich ein neuer Artikel angelegt werden.
Viele Konsumgüterhersteller stehen ja vor dem Problem, daß es für das gleiche Produkt(Rezeptur) mehrere Packungsgrößen und Namen gibt. Dann gibt es eben auch unterschiedliche Artikelnummern und EAN und ...
Oder aber, falls Namensänderungen öfters durchgeführt werden, dann benötigst du eben eine Namenstabelle.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 09:19 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