Ich kann auf einer beliebigen, via ADS geöffneten Tabelle auch problemlos ein DbGoPosition(39.10) auslösen, mit Xbase++ 1.9 SL1 und mit Xbase++ 2.0. Und, nein, da muss kein Integer hin. Die Funktion erwartet einen Prozentwert und ermittelt daraus dann die anzuspringende Ordinalposition. Aber vielleicht tritt der Fehler auf, wenn die Tabelle genau 100 Datensätze hat?
die betroffene Tabelle hat etwas über 1900 Datensätze und einen Index auf einem Datenbankfeld das nicht angezeigt wird und einen Filter der etwa 150 Sätze auswählt.
Beides soll ja nach der Funktionsbeschreibung möglich sein.
Schau mal, Carlo. Das sagt die ADS-Hilfe zu Fehler 7038:
7038 Invalid record number
Problem: Attempted to read a record and the record number is greater than the number of records in the file. This error often results from using an index that contains more keys than the table has records. This can occur if a Pack or Zap is performed on the table when the index file(s) was closed.
Tom hat geschrieben: ↑Mi, 01. Jul 2020 18:06
Mmh. Und wenn es was mit dem Filter zu tun hat? Eigenartig.
Genau das ist es. Der Filter. Ohne Filter keine Probleme.
Meine aktuelle Lösung: den Teil der Angezeigt werden soll in eine Temporäre Datei kopieren und dann diese anzeigen. Problem beseitigt.
Es gab mit Filtern im ADS-Kontext immer mal wieder Probleme, und da sich Alaska lange sehr damit zurückgehalten hat, an der DBE etwas zu machen, sind sie auch lange in der ADSDBE verlieben. Wenn man z.B. einen Filter klassisch setzt und dann zu einer Datensatznummer springt, die durchaus der Filterbedingung genügt, steht EoF() weiter auf TRUE, es sei denn, man löst vor dem DbGoto() ein DbGoTop() aus. Mit allen anderen DBEs geht das EoF() - richtigerweise - auf FALSE. Das kann man mit einem Dreizeiler nachstellen.
ADS hat schon einige Besonderheiten das ist wahr. Besondes auch Filter benötigten immer besondere Beachtung. In den vielen Jahren in welchen ich Programme zum Einsatz unter ADS geschrieben habe lehrte ich damit umzugehen. Als die erste Fassung 6.0 kam war dies ein ganz geniales Tool. Seitdem hat sich die Welt ein wenig geändert.
In unserer Agenda stand eigentlich der endgültige Abschied von ADS bereits fest. Nicht nur weil die ADS Zukunft unbestimmt ist sondern auch weil schon weite Teile der Programme auf PG portiert sind. Leider hat uns Corona die Agenda ein "wenig" durcheinander gebracht.
Ich kann aber gut mit dem aktuellen Stand der ADSDBE leben. Mit obiger Anpassung läuft es jetzt einwandfrei.
Tom hat geschrieben: ↑Fr, 03. Jul 2020 12:36
Oh, die ADSDBE ist sehr robust, keine Frage. Man muss nur ein paar Kleinigkeiten umschiffen, das ist alles.