AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verlassen von dbGrid erzeugt BeforePost
Thema durchsuchen
Ansicht
Themen-Optionen

Verlassen von dbGrid erzeugt BeforePost

Ein Thema von norwegen60 · begonnen am 16. Apr 2019 · letzter Beitrag vom 22. Apr 2019
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

Verlassen von dbGrid erzeugt BeforePost

  Alt 16. Apr 2019, 09:36
Datenbank: MsSQL • Version: 2008R2 • Zugriff über: ADO
Hallo zusammen,

ich editiere teilweise DB-Daten direkt in einem dbAdvGrid. Wenn ich nun auf einen [Cancel]-Button klicke, wird automatisch das OnBeforPost der verknüpften Tabelle aufgerufen. Ich gehe davon aus, dass durch das Verlassen des Grid und der gerade editieren Zeile/Zelle automatisch ein Post aufgerufen wird (wie im SQL-Manager auch).

Gibt es eine Möglichkeit, dies zu verhindern?

Vielen Dank
Gerd
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Verlassen von dbGrid erzeugt BeforePost

  Alt 16. Apr 2019, 10:18
In den Optionen:
CancelOnExit oder so ähnlich
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verlassen von dbGrid erzeugt BeforePost

  Alt 17. Apr 2019, 11:36
So einfach ist es nicht. Auch der Klick auf btnSave führt ja zu einem exit. Und das BeforePost kommt vor dem OnClick.

Das Programm ist nicht von mir und ziemlich viel drum rum programmiert. Bis jetzt ist mir noch nicht klar, wann er beim Exit überhaupt ein Post macht. Auf manchen Rechnern immer, bei andern eher zufällig. Werde die DbAdvGrid mal solo testen, wie die sich normalerweise verhält.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: Verlassen von dbGrid erzeugt BeforePost

  Alt 17. Apr 2019, 12:08
Das Post hat nix mit dem Exit zu tun.

Wurde ein Datensatz geändert, wird beim Wechsel eines Datensatzes (gewöhnlich) ein Post ausgelöst, was den Aufruf von BeforePost impliziert.

Ja nach verwendetem DB-Grid kann man in den Optionen z. B. dgCancelOnExit aktivieren oder eben nicht aktivieren, sie steuert das Verhalten des Grids beim Verlassen.

Die mit dem Grid verbundene DataSource hat auch noch ein paar Eigenschaften und Ereignisse. Z. B. AutoEdit, dann kommt noch die passende TDataSet-Komponente oder einer ihrer Nachfolger dazu.

Dein Problem ist: So wie momentan die Einstellungen von DBGrid und Co. sind, sorgt jede Interaktion im Programm, die zu einem Verlassen des Grids führt, zu einem automatischen Speichern des aktuellen Datensatzes, deshalb kommt das Ereignis BeforePost vor dem Klick auf irgendeinen beliebigen Button ... außerhalb des Grids.

Statt der Buttons könntest Du es ja mal mit 'nem DBNavigator versuchen, der bringt von Hause aus die Buttons für Cancel, Save ... mit. Welche Buttons angezeigt werden, kann man konfigurieren. Da der DBNavigator mit der gleichen DataSource verbunden ist, wie das DBGrid, tritt der von Dir festgestellte Effekt nicht auf. (Jedenfalls ist er mit in den letzten 20 Jahren so noch nicht begegnet.)

Statt eines Cancelbuttons benutze ich einfach die Taste ESC, hat die gleiche Wirkung und ist deutlich schneller erreicht
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Verlassen von dbGrid erzeugt BeforePost

  Alt 22. Apr 2019, 09:40
Hallo,
welche TMS-Version hast Du?
Heiko
  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 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz