AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle in Event updaten

Ein Thema von DSP · begonnen am 26. Mai 2015 · letzter Beitrag vom 26. Mai 2015
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 11:15
Ich verstehe leider nur Bahnhof ...
  Mit Zitat antworten Zitat
DSP

Registriert seit: 10. Jul 2014
49 Beiträge
 
#2

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 11:26
Ist eigentlich ganz einfach

Man nehme eine TTable -> T

Implementiere ein Event: AfterPost

Dann wird der Tupel (Datensatz, d) {key: 1, Wert: false} auf {1; true} geändert. Der d{2; true} verletzt die Restriktionen und ist daher auf {2; false} anzupassen. Daher irdischen sich im Post gemerkt, ist der aktuelle Datensatz angepasst worden, dann gehe durch die anderen Datensätze und passe die ebenfalls an. Das geschieht im AfterPost von T. Beim Post von T{2; false} wird dann wieder T>AfterPost aufgerufen.... Und die Komponente bekommt einen Knoten

Vielleicht ist das Problem nun etwas klarer.

Grüße
dsp
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 12:03
Alter...das muss ich 3-4 mal lesen, damit ich es auch nur 1 mal evtl. verstehe.
Daher irdischen sich im Post gemerkt, ist der aktuelle Datensatz angepasst worden, ...
Ab dem Satz war ich nämlich raus.


Nimm doch mal was nachvollziehbares, und vielleicht ein wenig Codeschnipsel.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.873 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 12:05
Dann hinterlege die Restriktionen (Constraints) im DBMS. Oder verwende BeforePost, dann kannst Du diese noch anpassen oder den zumindest den Post verhindern.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 12:07
Also ich glaube jetzt soweit verstanden zu haben, daß im AfterPost ständig wieder AfterPost ausgelöst wird, was eine Endlosschleife wäre ("die Komponente bekommt einen Knoten").
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:05
Ich musste die Angabe auch ein paarmal lesen.

Warum setzt Du in der AfterPost()-Methode kein Semaphore, welches Dir anzeigt, dass Du dich gerade in der Bearbeitung der Daten befindest und welches verhindert, dass AfterPost() ein zweitesmal durchlaufen wird? Wenn Du das nicht machst, dann wird AfterPost() natürlich immer wieder aufgerufen.

Nachdem Du die Daten bearbeitet/manipuliert hast, wird das Semaphore einfach wieder zurückgesetzt und die Methode wieder "scharf" gesetzt für das nächste Event.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:29
Semaphore? Du meinst ein Flag, also eine globale Boolean-Variable?
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:47
Ja, sowas wie ein Flag meinte ich.

Die Variable könnte dann innerhalb der Klasse definiert sein (und kann dort natürlich auch private sein). Global hört sich so schlimm an !
  Mit Zitat antworten Zitat
Antwort Antwort


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