Zuerst zu deinem Beziehungsdatentyp KOMPONENTEN - wenn BEZEICHNUNG darin die Bezeichnung des Artikels ist, dann ist sie redundant und sollte dort nicht gespeichert werden. Da du dein Grid mit einer
Query füttern möchtest, diese
Query update-fähig sein soll und der Benutzer die Artikelbezeichnung in der Anzeige sehen soll, sobald er eine Artikelnummer eingetragen hat, deklarierst du BEZEICHNUNG als berechnetes Feld.
Mit einem Doppelklick auf die
Query-Komponente kannst du dabei auch das Feld KOMPONENTEN_ID unsichtbar machen. Sichtbar sind dann nur die Felder PROTOKOLL_ID, ARTIKEL und BEZEICHNUNG - wobei BEZEICHNUNG nicht vom Benutzer beschreibbar ist. Damit die Bezeichnung passend zur Artikelnummer angezeigt wird, musst du für das Ereignis OnCalcFields() etwas Code (drei Zeilen) schreiben. Wenn der Primärschlüssel nicht automatisch von der Datenbank beigesteuert wird, dann kannst du das im Ereignis OnBeforePost() erledigen.
Ein DBGrid ist für diese Aufgabe nicht unbedingt ideal - immerhin werden nur Schlüssel eingegeben und diese müssen auch noch aus einer definierten Vorratsmenge stammen. Aber Hauptsache es funktioniert erstmal.
marabu