Announcement

Collapse
No announcement yet.

Table.EOF wird überlaufen bei Änderung von Table.IndexName !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Table.EOF wird überlaufen bei Änderung von Table.IndexName !

    Hallo,

    ich habe soeben ein merkwürdiges Verhalten der BDE (Delphi 5 Enterprise, Update Pack 1) rausgekriegt.

    Es existieren mehrere zusammengesetzte Indizes in einer SQL-Tabelle (Interbase 5.6). Einer davon ist im Objektinspektor ausgewählt.

    Stellt man nun per Zuweisung<br>
    Table.IndexName := 'IndexA';<br>
    auf einen anderen (gültigen) Index und versucht man nun folgende Schleife

    Table.First;<br>
    While not Table.EOF do<br>
    begin<br>
    ...<br>
    Table.Edit;<br>
    ...<br>
    Ändern eines Feldes<br>
    Table.Post;<br>
    ...<br>
    Table.Next;<br>
    end;<br>

    Bei Durchführung dieser Schleife wird EOF überlaufen !!! (man läuft in eine Endlosschleife)<br>
    und<br>
    Die Änderung wird nicht im Satz eingetragen !<br>

    Stellt man denjenigen Table.IndexName ein, welcher ursprünglich im Objektinspektor definiert wurde, läuft alles wunderbar.

    Hat jemand eine Erklärung ?

    Gruss<br>
    Helmut

  • #2
    Hallo,

    die SQL-Datenbanken verwenden keinen Index zur Festlegung der Sortierreihenfolge, sondern dies wird in der SELECT-Anweisung durch den ORDER BY-Teil erledigt. Wie sieht die SELECT-Anweisung aus, die der SQL-Monitor bei dieser Aktion mitprotokolliert (die BDE/VCL übersetzt die Zuweisung von IndexName nach SQL)

    Comment

    Working...
    X