Hallo Manfred,
genau kann ich es nicht erklären, aber es hat auf jeden Fall damit zu tun, dass Dir ein
SQL-Server im Gegensatz zu einer Desktop-
DB (wie
Paradox, dBase,
Access...) keine echten, also physischen Tabellen liefert, sondern eine Ergebnismenge.
Selbst wenn Du eine Komponente hättest, die sich wie eine Tabelle benimmt, ruft diese intern die DAten doch über eine SELECT-Abfrage ab.
Der SErver stellt nun auf Deine Anfrage hin eine Ergebnismenge zusammen und hält die so lange vor, wie die Transaktion aktiv ist.
Wenn Du nun etwas an den Daten änderst, wird das in den Tabellen in der
DB eingetragen; die Ergebnismenge weiß aber noch nichts davon. Deshalb müssen die Daten neu eingelesen werden. Ich glaube, es gibt ausgefeilte Komponenten, die tatsächlich nur den geänderten Datensatz neu einlesen, was natürlich wesentlich schneller ist als eine komplette DAtenmenge mit Tausenden Datensätzen neu einzulesen..
Ihc denke, Dein Requery entspricht meinem Vorschlag, die
Query zu schließen und wieder zu öffnen (wie gesagt, ich kenne mich mit
ADO nicht aus).
Eine Alternative wäre evtl. mit CachedUpdates zu arbeiten. Dann werden alle Änderungen in einer lokalen Kopie beim Client gemacht und am Schluss auf einmal in die
DB geschrieben.
MfG
Urs