AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Datenbank-Komponente die auf Feldinhalt-Änderung reagiert

Datenbank-Komponente die auf Feldinhalt-Änderung reagiert

Ein Thema von mm1256 · begonnen am 8. Jun 2016 · letzter Beitrag vom 8. Jun 2016
Antwort Antwort
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Datenbank-Komponente die auf Feldinhalt-Änderung reagiert

  Alt 8. Jun 2016, 09:52
Hallo,

folgende Ausgangs-Situation: Ein Datenmodul mit einer TQuery/TTable und ein Formular mit einem DBGrid und einem DBNavigator. Also Datenzugriff und GUI sauber getrennt, wie es sich gehört.

Der User hat mehrere Möglichkeiten in der DB zu navigieren:

- Mit der Tastatur
- Click auf den Navigator
- Mausclick irgendwo im DBGrid

Angenommen der User hat eine Kundentabelle zur Ansicht auf dem Bildschirm und nun möchte ich wissen, wann sich der angezeigte Inhalt eines bestimmten Datenbank-Feldes ändert, z.B. der Ort. Ist das der Fall, soll eine bestimmte Aktion im Formular stattfinden.

Der klassische Weg den ich kenne und derzeit benutze ist der Event "AfterScroll" der Query bzw. Table. Im Formular löse ich dann die entsprechende Aktion aus.

  Datamodule.Table.AfterScroll := Form1.MeineAfterScrollProc; So weit so gut, aber, umständlich wird das, wenn der AfterScroll im Datamodule auch vorhanden ist, und ausgeführt werden soll. Oder wenn ein weiteres Formular geöffnet ist, dass die selbe TTable benutzt, und eine ganz andere (oder überhaupt keine) AfterScroll-Action ausgeführt werden soll. Alles machbar wie gesagt, aber eben umständlich.

Abhilfe wäre eine nicht visuelle Komponente mit den Eigenschaften

Enabled: Boolean;
DataSet: TDataSet;
DataField: String; (das zu überwachende Feld)

und dem Ereignis "OnFieldValueChange".

Meine Frage nun: Gibt es so was schon fertig?

Wenn nein, würde ich es gerne selber machen. Habe aber mit Komponentenentwicklung nichts bzw. nur sehr wenig am Hut. Wie würdet ihr es anfangen: ableiten ja/nein, wenn ja, von welcher Komponente?
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.795 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Datenbank-Komponente die auf Feldinhalt-Änderung reagiert

  Alt 8. Jun 2016, 10:01
Meine Frage nun: Gibt es so was schon fertig?
TDBUpdate von Breyten J. Ernsting auf http://torry.net/pages.php?id=556

Obwohl da Delphi 5 steht, habe ich diese Komponente bis einschließlich Berlin im Einsatz.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Datenbank-Komponente die auf Feldinhalt-Änderung reagiert

  Alt 8. Jun 2016, 11:36
Hallo Uwe,

runter geladen, ausprobiert...passt (fast) perfekt. Das Einzige was ich nachrüsten muss ist die Wechselbedingung. Ich brauche den Event ja nicht bei jedem Datensatz, sondern nur, wenn sich während des Scrollens der Inhalt des Feldes ändert, wenn z.B. aus dem Ort Berlin => Nürnberg wird. Aber das ist schnell nachgerüstet.

Vielen Dank für den sehr guten Tipp!
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf