AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Richtiges Aktualisieren einer Query
Thema durchsuchen
Ansicht
Themen-Optionen

Richtiges Aktualisieren einer Query

Ein Thema von mariusbenz · begonnen am 23. Nov 2018 · letzter Beitrag vom 23. Nov 2018
Antwort Antwort
hoika

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

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 07:48
Hallo,
Open/Close ist meine erste Wahl.
Es kann sich ja zwischenzeitlich etwas geändert haben.
Das Refresh kommt noch aus der guten alten TTable-Zeit.

Zitat:
Ein Close und Open der Query hat natürlich zur Folge, dass z.B. AfterOpens der Query ausgeführt werden, das Grid neugezeichnet wird, man die letzte ausgewählte Zeile erneut suchen muss, etc.
Das lasse ich nicht gelten, weil ich keine datensensitiven Elemente (z.B. TDBGrid) benutze.
Was benutzt du denn?
Heiko

Geändert von hoika (23. Nov 2018 um 08:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#2

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 08:13
Zitat:
Ein Close und Open der Query hat natürlich zur Folge, dass z.B. AfterOpens der Query ausgeführt werden, das Grid neugezeichnet wird, man die letzte ausgewählte Zeile erneut suchen muss, etc.
Das lasse ich nicht gelten, weil ich keine datensensitiven Elemente (z.B. TDBGrid) benutze.
Die Notwendigkeit, auf den zuletzt aktiven Datensatz zu positionieren ist erstmal unabhängig vom Einsatz datensensitiver Controls. Für das Argument mit AfterOpen gilt sinngemäß dasselbe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 08:15
Hallo,
Open/Close ist meine erste Wahl.
Es kann sich ja zwischenzeitlich etwas geändert haben.
Um das zu testen haben wir uns eine aktuelle Datenmenge anzeigen lassen, dann in der Datenbank Werte geändert (sodass sich nur bestimmte Werte ändern oder durch Filterung Zeilen dazukommen/verschwinden), und schließlich mit einem einfachen Refresh aktualisiert -> alle Änderungen wurden im Grid angezeigt.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 08:32
Um das zu testen haben wir uns eine aktuelle Datenmenge anzeigen lassen, dann in der Datenbank Werte geändert (sodass sich nur bestimmte Werte ändern oder durch Filterung Zeilen dazukommen/verschwinden), und schließlich mit einem einfachen Refresh aktualisiert -> alle Änderungen wurden im Grid angezeigt.

dann ist doch gut, wenn es bei Dir funktioniert.

gestern habe ich mit pgDac gespielt (Devart Komponenten für PostgreSQL) - da hat ein Refresh nicht funktioniert. und bei IBObjects mach ich inzwischen einen großen Bogen sowohl um Refresh als auch um locate.

Interessant wäre jetzt wie TUniQuery das Refrehs umsetzt - vielleicht macht das intern einen Open-Close mit Positionierung auf den letzt gewählten Datensatz (falls möglich)... Schon mal in den Source rein geschaut?
  Mit Zitat antworten Zitat
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 09:05
Interessant wäre jetzt wie TUniQuery das Refrehs umsetzt - vielleicht macht das intern einen Open-Close mit Positionierung auf den letzt gewählten Datensatz (falls möglich)... Schon mal in den Source rein geschaut?
Delphi-Quellcode:
procedure TDataSet.Refresh;
begin
  DoBeforeRefresh;
  CheckBrowseMode;
  UpdateCursorPos;
  try
    InternalRefresh;
  finally
    Resync([]);
    DoAfterRefresh;
  end;
end;
Hab mal drübergschaut, die Aktualisierung der Daten passiert im InternalRefresh. Ein Strg+Klick führt mich da in eine leere Prozedur, über F7 beim debuggen verliert es sich dann irgendwann in ASM
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: Richtiges Aktualisieren einer Query

  Alt 23. Nov 2018, 09:09
Hab mal drübergschaut, die Aktualisierung der Daten passiert im InternalRefresh. Ein Strg+Klick führt mich da in eine leere Prozedur, über F7 beim debuggen verliert es sich dann irgendwann in ASM
Natürlich, denn das ist eine virtuelle Methode die dann von Nachfolgern wie z.B. TUniQuery überschrieben werden kann. Man muss also dort nachschauen und nicht bei TDataSet .
  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 17:30 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