Delphi-PRAXiS

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)

Sulustaner2004 11. Mär 2004 09:07


feld nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also langsam aber sicher wird mir das schon ein wenig peinlich hier immer zu fragen aber ich komme im moment nicht weiter...
beim speichern in die datenbank kommt als fehlermeldung feld nicht gefunden...
es ist aber die korrekte bezeichnung für das feld...

Sharky 11. Mär 2004 09:17

Re: feld nicht gefunden
 
Kopiere dir doch mal ADOQuery1.SQL.Text vor deinem ExecSQL in ein Memo und prüfe die Abfrage.
Bestimmt ist irgendwo ein kleiner Fehler.

Sulustaner2004 11. Mär 2004 09:21

Re: feld nicht gefunden
 
wie meinst du das ????

Sharky 11. Mär 2004 09:40

Re: feld nicht gefunden
 
Zitat:

Zitat von Sulustaner2004
wie meinst du das ????

Ziehe dir ein Memo auf ein Formular und setze vor dein ExecSQL:

Delphi-Quellcode:
Memo1.Clear;
Memo1.Text := ADOQuery1.SQL.Text;
//ExecSQL;

Sulustaner2004 11. Mär 2004 09:49

Re: feld nicht gefunden
 
naja, das klappt auch nicht so richtig...
der springt immer mit der meldung feld nicht gefunden raus...

Sharky 11. Mär 2004 09:56

Re: feld nicht gefunden
 
Zitat:

Zitat von Sulustaner2004
naja, das klappt auch nicht so richtig...
der springt immer mit der meldung feld nicht gefunden raus...

Hast Du dein ExecSQL aus auskommentiert?

Sulustaner2004 11. Mär 2004 09:58

Re: feld nicht gefunden
 
ja, habe ich gemacht !!!

Sharky 11. Mär 2004 10:08

Re: feld nicht gefunden
 
Eventuell ein Fehler bei deiner SetCount Variable? Wofür brauchst Du die überhaupt? Du weisst doch die Anzahl der Felder.

Sulustaner2004 11. Mär 2004 10:11

Re: feld nicht gefunden
 
ist richtig...ich weiß die anzahl der felder...es sind 25 !!!
ich habe diesen text ja auch nur übernommen eil mein eigener nicht funktioniert hat !!!!

Sulustaner2004 12. Mär 2004 07:12

Re: feld nicht gefunden
 
Morgen zusammen...
wie ich sehe könnt ihr mir da auch nicht helfen...wirklich sehr schade...

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;

Sulustaner2004 12. Mär 2004 09:23

Re: feld nicht gefunden
 
mmh..ich stelle fest mein hirn läuft heute auf sparflamme...
entweder ich kann oder will es heute nicht verstehen... :cry:
ick könnte heulen.....

Robert_G 12. Mär 2004 09:27

Re: feld nicht gefunden
 
Ich mach' jetzt erstmal Frühstückspause :mrgreen:
Danach versuch' ich's nochmal...

Sulustaner2004 12. Mär 2004 09:28

Re: feld nicht gefunden
 
ok..dann mal mahlzeit...:oops:

Robert_G 12. Mär 2004 10:06

Re: feld nicht gefunden
 
Was hast du denn nicht verstanden ?
*vollgerfressenen Bauch unter Schreibtisch wuchtet* :mrgreen:

Sulustaner2004 12. Mär 2004 10:11

Re: feld nicht gefunden
 
soll ich ganz ehrlich sein ??? alles *heul*
wieso geht es in der einen form und in der anderen nicht ???

Robert_G 12. Mär 2004 10:30

Re: feld nicht gefunden
 
Zitat:

Zitat von Robert_G
...Wenn du Daten aus der DB in die Edits schreiben willst, dann schau dir mal OnCreate im Form "Versuch2" an. ...

In Versuch2 machst du im OnCreate auch eine Abfrage.

Und in dort gibst du dem Parameter i_Versuch auch einen Wert.
Delphi-Quellcode:
    With ADOQuery1 Do
    Begin
      SQL.Text :=
        'SELECT dbo_VF.Versuchsfl_ID,' + #10 +
        '      dbo_VF.Versuchsfl_Bezeichnung,' + #10 +
        ...
        'FROM  dbo_Versuchsflaechen_ST dbo_VF' + #10 +
        'WHERE dbo_VF.Versuchsfl_Bezeichnung = :i_Versuch' + #10 +
        'ORDER By dbo_VF.Versuchsfl_Bezeichnung';
      Prepared := True;
      // Hier!
      Parameters.ParamByName('i_Versuch').Value := CBO_Bezeichnung.Text;
      Open;

Sulustaner2004 12. Mär 2004 10:40

Re: feld nicht gefunden
 
ich will ja von den textboxen in die datenbank schreiben !!!!

Robert_G 12. Mär 2004 10:43

Re: feld nicht gefunden
 
Hast du es überhaupt schon mal ohne die "böse" Zeile und mit dem hier (siehe mein Post weiter oben) ...
Delphi-Quellcode:
Parameters.ParamByName('i_Versuch').AsString := TB_Bearbeiter.Text;
... versucht?

Sulustaner2004 12. Mär 2004 11:10

Re: feld nicht gefunden
 
ja...habe ich versucht...bekomme dann die fehlermeldungen

[Fehler] dateneingabe.pas(190): Objekt oder Klassentyp erforderlich

[Fehler] dateneingabe.pas(190): Operator oder Semikolon fehlt

alle beide für diese zeile

Delphi-Quellcode:
Parameters.ParamByName('i_Versuch').AsString := TB_Bearbeiter.Text;

Robert_G 12. Mär 2004 11:18

Re: feld nicht gefunden
 
:wall: Langsam komme ich mit diesn gazen BDE/ADO-Fragen durcheinander (ich verwende keins von beiden), es muss ".Value" anstatt ".AsString" heißen.
Delphi-Quellcode:
  ...
  // Wenn SetStr beschrieben wurde -> baue UPDATE-Statement...
  If SetStr <> '' Then
  Begin
    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];
        // Hier
        Parameters.ParamByName('i_Versuch').Value := TB_Bearbeiter.Text;
      // Ausführen
      ExecSQL;
    // Dieses "End;" stand hinter den Edit/Label-Zeugs, es sollte aber hier den With-Block schließen
    End;

    label27.Caption := tb_Bearbeiter.Text;
    ...

Sulustaner2004 12. Mär 2004 11:35

Re: feld nicht gefunden
 
ok...ich danke dir !!!!
was würde ich nur ohne euch in diesem forum machen....???? :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.

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