Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi feld nicht gefunden (https://www.delphipraxis.net/17901-feld-nicht-gefunden.html)

Sharky 12. Mär 2004 07:22

Re: feld nicht gefunden
 
Bist Du denn dein Programm einemal im Debug-Modus (F8 / F9) durchgegangen?
An welcher Stelle genau kommt denn der Fehler?
Hast Du dir den zusammengesetzen SQL-Befehl mal in einem Memo oder so angezeigt?

Sulustaner2004 12. Mär 2004 07:27

Re: feld nicht gefunden
 
also er kommt garnicht bis zum sql string...
er springt an dieser stelle raus

Delphi-Quellcode:
versflid := ADOQuery1.FieldByName('Bearbeiter').asString;
mit der meldung feld bearbeiter nicht gefunden
er müsste in diesem feld unter anderem auch daten in der entsprechenden tavelle im entsprechenden eld daten anfügen !!!

Robert_G 12. Mär 2004 07:29

Re: feld nicht gefunden
 
Moin :hi:
Wieso kommt mir der Code so bekannt vor :gruebel: ( :mrgreen: )
Du hast dort, glaube ich noch 2 Spalten hinzu gefügt.
Poste mal bitten den COde, der für das Update zusammen gebastelt wird (geht am einfachsten so wie Sharky es beschrieben hat).
Ich hatte den nie getestet!

Nachtrag: Das hast du auch geändert ( :mrgreen: ) -> Ist ADOQuery1 zu diesem Zeitpunkt überhaupt geöffnet?

Sharky 12. Mär 2004 07:34

Re: feld nicht gefunden
 
Das Feld gibt es aber in der Tabelle?
Da ich davon einmal ausgehe -> hast Du eventuell über den Feldeditor Felder in deinem Query "ereugt" (Rechte Maus auf Query - Feldeditor). Wenn Du das machst werden nämlich nur die Felder zurückgegeben die dort stehen.

Bsp:
Code:
Tabelle:
id
name
vorname
strasse
ort
Im FeldEditor stehen die Felder:
Code:
name
vorname
Bei einem:

Delphi-Quellcode:
begin
  with Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Text := 'SELECT * FROM tablle';
    Open;
  end;
end;
werden Dir trotzdem nur die beiden Felder aus dem FeldEditor zurück gegeben. So könntest Du z.B. auf das Feld "ort" nie zugreifen.

Sulustaner2004 12. Mär 2004 07:43

Re: feld nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi Robert_G.. :hi:
also ich kann dir nochmal beide dateien anhängen...und ja, ich habe ihn noch ein wenig abgeändert weil es sein musste... schon alleine wegen der kompatibilität hier... :-)

Sulustaner2004 12. Mär 2004 07:45

Re: feld nicht gefunden
 
@ sharky er kommt ja nicht mal bis zur sql anweisung...

Delphi-Quellcode:
procedure TForm1.cb_takeClick(Sender: TObject);
Var
  versflid, SetStr                     : String;
  ProcessedRecs, i, SetCount           : Integer;
  SetVals                              : Array Of String;
Begin
  versflid := ADOQuery1.FieldByName('Bearbeiter').asString; //hier springt er dann raus mit der fehlermeldung
  If (tb_Bearbeiter.Text = '') Then
    ShowMessage('Bitte was eintragen.');
:wall:

Sharky 12. Mär 2004 07:47

Re: feld nicht gefunden
 
Zitat:

Zitat von Sulustaner2004
@ sharky er kommt ja nicht mal bis zur sql anweisung......

Wenn die Query nicht geöffnet wurde kannst Du doch auch nicht auf Felder der Tabelle zugreifen!

Robert_G 12. Mär 2004 07:56

Re: feld nicht gefunden
 
  • Deine ADOQuery1 wird in deinem Code nur für das UPDATE-Statement verwendet.
    Sie kann keine Ergebnismenge mit der Spalte "Bearbeiter" haben!

    Außerdem wird "VersFlID" gar nicht mehr verwendet. -> Die Zeile kann gelöscht werden.
  • Warum gibst du dem Parameter ":i_Versuch" keinen Wert?
    An der Stelle (in beiden Formularen) wird es als nächstes krachen :wink:

Sulustaner2004 12. Mär 2004 08:18

Re: feld nicht gefunden
 
:wiejetzt: ich bin wirklich zu blöd dafür...
habe echt keine ahnung was ihr mir damit sagen wollt... :cry:

Robert_G 12. Mär 2004 08:54

Re: feld nicht gefunden
 
OK, nochmal zum mitschreiben ( :P )
  • Die Zeile mit der Fehlermeldung
    Delphi-Quellcode:
     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:
    Delphi-Quellcode:
     Parameters.ParamByName('i_Versuch').AsString := TB_Bearbeiter.Text;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz