Announcement

Collapse
No announcement yet.

Felder einer Datenbank

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

  • Felder einer Datenbank

    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,<br> beim letzten Feld was zu ändern mit Fields->Fields[]. Es bleibt aber nur beim Versuch,<br> 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
    Warum nimmst Du nicht die Funktion FieldByName ?

    Table->FieldByName("Name")->AsString="Neuer Wert"
    Günther

    Comment


    • #3
      Hallo Günther, <br>das funktioniert ebenfalls nicht. Ich knacke immer noch an meinem berechneten Feld<br>herum und hatte gehofft, ich könnte es durch die "Hintertür" doch noch hinkriegen. <br> Ich wollte, nachdem das Feld "gesamt" angelegt ist, FieldKind auf fkCalculated sezten <br>(mit dem Feldereditor klappts). Aber zur Laufzeit kriege ich nur Probleme.<br> Gruß Irmgar

      Comment


      • #4
        Hallo Irmgard,

        jetzt wäre es ganz gut wenn man die betreffenden Zeilen Deines Codes studieren könnte. Ideal wäre natürlich ein einfaches, aber komplettes Beispiel.

        Gruß - Günthe
        Günther

        Comment


        • #5
          Hallo Irmgard, so in etwa hatte ich mir das schon vorgestellt. Eine Lösung hab ich aber noch nicht.

          In der Hilfe zu table->FieldDefs->Add ist mir gestern folgender Hinweis aufgefallen: <b>Add dient der Rückwärtskompatibilität. Neue Felddefinitionen sollten mit der Methode AddFieldDef dem Array der Eigenschaft Items hinzugefügt werden.</b> Das Beispiel zu AddFieldDef verwendet aber auch die Methode Add, so daß ich da nicht weitergekommen bin...

          Statt Table->Fields->Fields[feld]->FieldKind=fkCalculated; könntest Du mal ausprobieren:

          TDateField *F=(TDateField *)Table->Fields->Fields[feld];

          F->FieldKind=fkCalculated;

          Gruß - Günthe
          Günther

          Comment


          • #6
            Hallo Günther!

            Das klappt ebenfalls nicht. Es kommt immer noch dieselbe Meldung. Es ist zum Verzweifeln.<br> Ich werde doch hoffentlich nicht an einer anderen Stelle irgend einen blöden Fehler gemacht haben?! Das Programm hat 3 Forms. <br> Aber ansonsten klappt ja alles.

            Gruß Irmgar

            Comment


            • #7
              Hallo Irmgard,

              Du machst die Tabelle mehrmals zu und wieder auf. Kann man sie nicht durchgehend geöffnet halten ? Bei besagter Fehlermeldung ist die Tabelle geschlossen, ist das richtig ?

              Hast Du die Tips von Andreas im BDE Ordner gelesen ?

              Gruß - Günthe
              Günther

              Comment


              • #8
                Hallo Günther!<br>Hier der Code

                // Anlegen der Felder

                table->TableName = "Jan.db";<br>
                table->FieldDefs->Clear();<br>
                //das Feld "Datum" kommt an den Anfang<br>
                table->FieldDefs->Add("Datum",ftDate,0,true);<br>
                //dann folgen die Felder, die vom Benutzer angegeben werden<br>
                for(int x=0;x<liste->Items->Count;x++)<br>
                { S=liste->Items->Strings[x];
                table->FieldDefs->Add(S,ftCurrency,0,false);
                }<br>
                //zum Schluß kommt das Feld "gesamt"<br>
                table->FieldDefs->Add("gesamt",ftCurrency,0,false);<br>
                table->CreateTable();<br>
                //bis hierhin klappt es!!!<br>
                //jetzt kommts<br>
                Table->Active=false;<br>
                Table->DatabaseName="kosten";<br>
                Table->TableName="Jan.db";<br>
                Table->Active=true;<br>
                int feld = Table->FieldCount-1;<br>
                Table->Active=false;<br>
                //hier erscheint die besagte Meldung von wegen Index usw.<br>
                Table->Fields->Fields[feld]->FieldKind=fkCalculated;<br>
                // Table->FieldByName("gesamt")->FieldKind=fkCalculated;
                //(klappt nicht, das Feld "gesamt" wird nicht gefunden)<br>
                Table->Active=true;<br>

                Gruß Irmgar

                Comment

                Working...
                X