Announcement

Collapse
No announcement yet.

Zugriff auf Felder

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

  • Zugriff auf Felder

    Hallo zusammen,<br>ich möchte auf ein bestimmtes Feld einer Datenbank zugreifen.<br>Dazu zähle ich mit FieldCount zuerst einmal die Felder und versuche dann, beim letzten Feld was zu ändern mit Fields->Fields[].<br>Es bleibt aber nur beim Versuch, weil ich eine Meldung bekomme "EListError...Index der Liste überschreitet Maximum".<br>Das ist auch der Fall, wenn ich auf ein anderes Feld zugreifen möchte, immer<br> wird angeblich das Maximum überschritten. Vielleicht kann mir jemand hier weiterhelfen.

    Gruß Irmgard

  • #2
    Hallo,

    in der Delphi-Hilfe ist zur Methode <b>FieldCount</b> ein Beispiel zu finden. Als erstes würde ich den Zugriff auf die Feldnamen ausprobieren. Die TTable-Instanz (Beispieldatenbank DBDEMOS) wird mit der Tabelle COUNTRY verbunden und ausgewertet:
    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i: Integer;
    begin
    Memo1.Lines.Add(Format('Die Felder von Tabelle %s sind:',[Table1.TableName]));
    for i := 0 to Table1.FieldCount - 1 do
    Memo1.Lines.Add(Table1.Fields[i].FieldName);
    end;
    </pre>
    War das erfolgreich, kann der Wert der letzten Spalte des aktuellen Datensatzes geändert werden:
    <pre>
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Table1.Edit;
    Table1.Fields[Table1.FieldCount - 1].Value := 999;
    Table1.Post;
    end;
    </pre>
    Tritt bei diesen Beispielen der o.g. Fehler immer noch auf, würde ich als Erstes alle Dritt-Komponenten de-installieren. Wenn ich mich richtig erinnere, gab es zum Beispiel bei einer Version von <i>RxLib</i> einen Bug, der sich als Seiteneffekt auf alle VCL-Komponenten sowie den Objektinspektor ausgewirkt hat. Das De-Installieren dieser nachträglich installierten Komponenten schafft Klarheit, wo genau die Ursache für dieses Problem zu suchen ist.
    &#10

    Comment


    • #3
      Hallo Andreas!

      Vielen Dank für die Antwort. An "Value" komme ich ja ran, nur bei "FieldKind" klappt es nicht.<br>Außerdem habe ich keinen blassen Schimmer, was Dritt-Komponenten sind. Ich habe es jetzt zu Fuß probiert.<br> Beim DBGrid-EReignis OnColEx wird der aktuelle Datensatz berechnet und in das Feld "gesamt" eingetragen. <br>Bloß hat die Sache noch einen Haken, nämlich wenn die Reihe gewechselt wird, tut sich nichts.<br>. Jetzt muß ich nur noch rauskriegen, wenn die Reihe bzw. der Datensatz gewechselt wird.<br> Wenn da jemand eventuell vielleicht eine Idee hätte.........

      Gruß Irmgar

      Comment


      • #4
        ...wenn Datensatz gewechselt wird ??? Das ist doch OnDataChange im DataSource-Objekt..
        Günther

        Comment


        • #5
          Es klappt mit OnDataChange! Danke!!! :

          Comment

          Working...
          X