Fehlermeldung "View hat sich geändert"

18/08/2008 - 14:17 von Turan Fettahoglu | Report spam
Ich habe ein VFP-9-Programm mit einer jungfràulichen VFP-Datenbank
ausgeliefert. Der Anwender erfasste einige Datensàtze mit meinem Programm,
wobei auch Datensàtze per Local View dargestellt und editiert wurden. Bei
einem bestimmten Datensatz kam nach Verànderung von View-Parametern
(?tnPersId, ?tdVonDatum, ?tdBisDatum) und einem anschließenden REQUERY()
eine Fehlermeldung "View definition has been changed".

Der View wird nicht programmgesteuert erzeugt, sondern steht schon in der
Datenbank und wird vom Programm nicht veràndert. Allerdings kann sich in dem
Grid, das den View angezeigt wird, die Recordsource-Eigenschaft àndern (mit
der Konsequenz, dass der Grid programmgesteuert neu definiert werden muss).

Bei anderen Datensàtzen konnte man die View-Parameter ohne Weiteres àndern
und der Requery funktionierte.

Nach Erfassen einiger weiterer Datensàtze war der Fehler verschwunden.

Ich habe die Datenbank in fehlerhaftem Zustand auf meinem
Entwicklungsrechner getestet: das Ergebnis war dasselbe. Nach einem Reindex
auf der dem View zugrunde liegenden Tabelle war der Fehler weg.

Die fraglichen Datensàtze waren vom Inhalt her unauffàllig.

Hat da irgendwer eine Erklàrung dafür? Wonach kann ich noch suchen? Oder hat
der Benutzer "nur" irgendwie den Index erlegt?

Das fragt sich
Turan
 

Lesen sie die antworten

#1 Olaf Doschke
18/08/2008 - 14:32 | Warnen spam
Hallo Turan,

was hast Du denn im View mit den Parametern angestellt?
Die Fehlermeldung kommt ja immer dann, wenn das
Queryergebnis strukturell nicht mit den in der Viewdefinition
mitgespeicherten Einzelfeldinformationen übereinstimmt.

Das kann durchaus schon mal durch bestimmte Viewparameter-
werte passieren, insbesondere wenn der View ergebnislos wird
kann die Ergebniscursorstruktur mal uneindeutig werden bzw. anders
als erwartet. Bei Ausdrücken wie NVL(...) oder IIF() z.B. hat man
logischerweise denselben Effekt wie mit einer IF-Abfrage, in der nur
im Spezialfall mal die Else-Klausel durchlàuft.

Tschüß, Olaf.

Ähnliche fragen