wenn ich mit klassischen dBase-Dateien arbeite, verwende ich (wie auch hier) FOXCDX, sowie eine Klasse, die den Zugriff auf die Daten steuert. In zig Applikationen funktioniert es, aber jetzt habe ich eine Tabelle, bei der Zugriffe nach einem nicht erkennbare Schema nicht funktionieren.
Xbase Version ist 355 mit allen derzeit verfügbaren Patches.
FOXCDX läuft ohne Anpassung irgendwelcher Parameter.
Datei: PostTrack.dbf {{"PTID", "N", 15, 0}, {"PTCOUNT", "N", 8, 0}}
geöffnet ist die Datei mit dem Alias POSTTRACK
Der Programmcode:
Code: Alles auswählen
...
lResult := .T.
FOR nI := 1 TO nFields
xValue := (self:cAlias)->(FieldPut(nI, aFieldList[nI]))
lResult := lResult .AND. (xValue == aFieldList[nI])
NEXT
...
aFieldList sieht so aus: {2050621, 2726}
self:cAlias hat den Wert "POSTTRACK"
(self:cAlias)->(FieldGet(1)) => 2050621
(self:cAlias)->(FieldGet(2)) => 3
der Datensatz kommt nur einmal vor
der Datensatz ist gesperrt
die FieldPut() Anweisung gibt einmal 2050621, und dann 2726 zurück
Was mich jetzt so irritiert: der Wert des zweiten Feldes wird NICHT verändert. Normalerweise ist nur eine Instanz des Programms aktiv. Seitdem der Fehler auftritt, habe ich noch DBU (Xbase compiliert) im Hintergrund offen.
Es gibt keine Fehlermeldung noch sonst etwas. Es scheint so, als würden neue Sätze (die über die gleiche Schleife laufen, nachdem ein dbAppend() durchgeführt wurde) korrekt geändert. Ob alle Updates gegen die Wand laufen, kann ich derzeit noch nicht sagen, würde es aber vermuten.
Das Problem scheint aber auch nur bei dieser einen Datei aufzutreten ...
Also habe ich die Datei umbenannt, den Index gelöscht, Datei und Index neu erstellt, die Daten aus der Kopie übernommen => gleicher Fehler.