Thema: Delphi feld nicht gefunden

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#20

Re: feld nicht gefunden

  Alt 12. Mär 2004, 09:54
OK, nochmal zum mitschreiben ( )
  • Die Zeile mit der Fehlermeldung
     versflid := ADOQuery1.FieldByName('Bearbeiter').asString; Du willst einen Wert aus ADOQuery1 an versflid übergeben.

    ADOQuery1 wird aber nie (!) mit einem SELECT-Stement aufgerufen, erst recht nicht mit einem, dass die Spalte "Bearbeiter" enthält.
    Wenn du Daten aus der DB in die Edits schreiben willst, dann schau dir mal OnCreate im Form "Versuch2" an.

    Außerdem hat diese Zeile keinen Sinn, da du die Variable "versflid" im Code nicht mehr benutzt.
  • Das UPDATE-Statement
    Delphi-Quellcode:
        With FindComponent(CompNames[i]) As TEdit Do
          If Text <> 'Then
          Begin
            // Wenn Edit <> '' -> Wert in den Array & Spalte kommt mit in die SET-Clause...
            SetVals[SetCount] := Text;
            SetStr := SetStr + ',' + #10 + ' ' + Fieldnames[i] + ' = :' + 'i_F' + IntToStr(SetCount);
            inc(SetCount);
          End;
        ...
        With ADOQuery1 Do
        Begin
          SQL.Text :=
            'UPDATE dbo_VFL_VERZ_TEMP t' + #10 +
            'SET ' + SetStr + #10 +
            'WHERE t.Bearbeiter = :i_Versuch';
          Prepared := True;
          // Werte der Paramter :i_F(1 - ...)
          For i := 0 To pred(SetCount) Do
            Parameters.ParamByName('i_F' + IntToStr(i)).Value := SetVals[i];
          ...
    Für jedes Edit, dass beschrieben wurde, kommt eine Zuweisung ins UPDATE-Statement (incl. Parameter).
    Die Werte, für die Parameter kommen in den Array SetVals.

    In SetCount steht wieviele Felder zu ändern sind. Es wird eine Schleife durchlaufen, in der die Parameterwete an die Query übergeben werden.
    Hier fehlt der Wert für :i_Versuch! Das könnte so aussehen:
     Parameters.ParamByName('i_Versuch').AsString := TB_Bearbeiter.Text;
  Mit Zitat antworten Zitat