Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#2

AW: DBGridfeld nicht bescheibbar

  Alt 18. Jul 2015, 12:26
Interessant wäre zu erfahren:
  1. Mit welchem DBMS arbeitest du?
  2. Mit welcher Delphi-Version arbeitest du?
  3. Mit welchen DB-Zugriffskomponenten arbeitest du?

Mit bidirektional arbeitenden Zugriffskomponenten funktioniert das bei mir einwandfrei: Ich bereite ein Dataset oder Query für die zu erwartende Datenmenge vor, indem ich den Select-Befehl im Objektinspektor (OI) eingebe und dach die anderen SQL-Befehle wie Update, Insert, Delete usw. Die meisten DB-Komponenten, die mir bisher unterkamen, erledigen das halb- oder vollautomatisch. Danach klicke ich auf das Dataset bzw. Query mit der rechten Maustaste und wähle den Feldeditor (FE), in den ich ebenfalls mit der rechten Maustaste reinklicke und dein Eintrag Alle Felder hinzufügen ausführe. Danach werden alle Felder (Tabellenspalten) dort namentlich aufgeführt. Nun kann ich z.B. ein Feld markieren und mir im OI dessen Properties anzeigen lassen. Ich kann aber auch, und das ist wohl des Rätsels Lösung, in einen leeren Bereich des FE wieder mit der rechten Maustaste klicken und den Eintrag Neues Feld auswählen. Daraufhin erscheint ein Dialogfeld, wo ich z.B. auswählen kann, welchen Typ das Feld haben soll, ob es sich um ein berechnets Feld handeln soll oder einfach – und das ist jetzt wieder dein Ding – Nachschlagen, was auf englisch soviel wie Lookup bedeutet. Danach gibts du das Schlüsselfeld, die Datenmenge, den Schlüssel und das Ergebnisfeld an:
  • Schlüsselfeld ist der Foreign-Key (FK) in deiner Haupttabelle
  • Datenmenge ist die Lookup-Tabelle, in der der eben erwähnte FK den Primary Key (PK) abgibt.
  • Schlüssel ist eben jener PK deiner Lookup-Tabelle.
  • Ergebnisfeld ist die Spalte, die ausgelesen und angezeigt werden soll.

Nun wird – immer vorausgesetzt, es handelt sich um eine bidirektionale Datenmenge – beim Editieren jenes Feldes im DBGrid ein Lookup-Combo angezeit.

Sollten deine Zugriffskomponenten lediglich unidirektionale Datenmengen bereitstellen, geht das natürlich nicht.
  Mit Zitat antworten Zitat