Hallo,
ich habe hier immer wieder Probleme mit
DB-Controls, die Datenbankwerte ändern (sollen), z.B. über eine TDBRadioGroup, und das z.B. über ein OnClick über die Maske erledigen.
Eigentlich liegt dem doch im Hintergrund eine Änderung des entsprechnden Datenbank TField-Elements zugrunde.
Also dachte ich, dass es doch eigentlich viel einfacher sein müsste, die Änderungen direkt an den Datenbankfeldern zu verarbeiten anstatt an verschiedenen Stellen die Änderungen der Masken-Controls zu überwachen,
Beispiel (ist zwar für
BDE, sollte aber bei anderen Datenbank-Zugriffsschichten ähnlich sein):
- es gibt ein TQuery "qryHead", dem ein
SQL (SELECT) und auch entsprechende Statements für UPDATE/DELETE über ein UpdateObject zugewiesen sind.
- es gibt eine TDataSource "dsHead", der das "qryHead" als DataSet zugewiesen ist
- den Datenbank-Controls (z.B. TDBRadioGroup rgTest) ist "dsHead" als DataSource und ein DataField (z.B. "MyTest") zugewiesen
- in der
IDE kann ich am "qryHead" per rechter Maustaste den "Fields Editor" aufrufen und dort dem Field "MyTest" eine Eventroutine für "OnChange" zuweisen.
Ich dachte, dass jegliche Änderungen, die z.B. über Clicks in den Checkboxen in der TBRadioGroup passieren, direkt eine Auslösung des OnChange-Events des Feldes zur Folge haben.
Nur leider ist dem nicht so und das verstehe ich nicht...
Wo liegt da mein Denkfehler bzw. wann werden die OnChange-Events ausgelöst?