Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi fehlermeldung in der query... (https://www.delphipraxis.net/16613-fehlermeldung-der-query.html)

Sulustaner2004 20. Feb 2004 08:22


fehlermeldung in der query...
 
Guten Morgen,
und da bin ich wieder mit meiner obligatorischen morgenfrage...:-)

Ich bin dabei mehrere Textboxen über eine Query anzusprechen und dank Button in eine Datenbank zu schreiben...soweit so gut...
nun bekomme ich allerdings schon bei der 2. Textbox die Fehlermeldung Adoquery1: Operation bei geschlossener Datenmenge nicht ausführbar
nun meine frage an euch...woran könnte das liegen ???

Delphi-Quellcode:
//----------erste Textbox--------------\\

   if adoquery1.Locate('Versuchs_ID',tb_versuch_id.Text,[])then

      adoquery1.FieldByName('Versuchs_ID').AsString;

    with adoquery1 do
     begin
     close;
     sql.Clear;
     sql.Add('UPDATE dbo_Versuchsflaechen_ST');
     sql.Add('SET Versuchs_ID =' + QuotedStr (tb_versuch_id.Text));
     sql.Add('WHERE Versuchsfl_Bezeichnung =' + quotedstr(cbo_bezeichnung.Text));
     //sql.Add('SELECT dbo_Versuchsflaechen_ST.Versuchs_ID,');
     //sql.Add('dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung, dbo_Versuchsflaechen_ST.Versuchs_ID');
     //sql.Add('FROM dbo_Versuchsflaechen_ST');
     //sql.Add('WHERE dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung ='+ quotedstr(versflid));
     //open;
     ExecSQL;
     end;

   while not adoquery1.Eof do
    begin
     adoquery1.Edit;
     adoquery1.FieldByName('Versuchs_ID').Asstring:=tb_versuch_id.Text;
     adoquery1.Post;
     tb_versuch_id.Clear;
     adoquery1.Next;
    end;
 

  //----------------zweite Textbox--------------\\

   // Bei dieser if Anweisung springt er dann raus...
   if adoquery1.Locate('Behandlung',tb_behandlung.Text,[])then
       adoquery1.FieldByName('behandlung').AsString;



    with adoquery1 do
     begin
     close;
     sql.Clear;
     sql.Add('UPDATE dbo_Versuchsflaechen_ST');
     sql.Add('SET Behandlung =' + QuotedStr (tb_behandlung.Text));
     sql.Add('WHERE Versuchsfl_Bezeichnung =' + quotedstr(cbo_bezeichnung.Text));
     //open;
     ExecSQL;
     end;




   while not adoquery1.Eof do
    begin
     adoquery1.Edit;
     adoquery1.FieldByName('Behandlung').Asstring:=tb_behandlung.Text;
     adoquery1.Post;
     tb_behandlung.Clear;
     adoquery1.Next;
    end;
bei der ersten box klappt das tadellos nur ei der 2. nicht mehr... :wall:

Sharky 20. Feb 2004 08:33

Re: fehlermeldung in der query...
 
Hai Sulustaner2004,

Zitat:

Zitat von Sulustaner2004
...
Delphi-Quellcode:
   while not adoquery1.Eof do
    begin
     adoquery1.Edit;
     adoquery1.FieldByName('Versuchs_ID').Asstring:=tb_versuch_id.Text;
     adoquery1.Post;
     tb_versuch_id.Clear;
>>>>>    adoquery1.Next;
    end;
  //----------------zweite Textbox--------------\\

   // Bei dieser if Anweisung springt er dann raus...
   if adoquery1.Locate('Behandlung',tb_behandlung.Text,[])then
       adoquery1.FieldByName('behandlung').AsString;
.
.

Durch Dein .Next springst Du ja immer zum nächsten Datensatz. Dadurch ist dein DataSet nicht mehr im Edit-Modus!
Ausserdem hast Du da echt böse fehler (ist nicht böse gemeint von mir!!). Beschreib doch mal am besten was Du machen möchtest.

Sulustaner2004 20. Feb 2004 08:44

Re: fehlermeldung in der query...
 
Liste der Anhänge anzeigen (Anzahl: 1)
also ich muss für mein praktikum hier eine eingabemaske erstellen die auf eine datenbank zugreift...
das lesen der daten klappt ohne probleme nur eben das schreiben klappt nicht
er springt wie gesagt nach der ersten textbox raus...
ich gebe dir die form mal als bitmap mit...vieleicht kkannst du dir ja dann mal ein bild machen @ sharky
und ich bin dir nicht böse wenn du sagst das ich fehler drin habe... :-) darum habe ich ja gefragt :-)

[edit=Sharky]Bild als JPG angehängt. Ist doch etwas kleiner als deine 1.x MB Version ;-) Mfg, Sharky[/edit]

sorry...könnte auf die schnelle keine jpg datei erzeugen.. :-)

Sharky 20. Feb 2004 09:07

Re: fehlermeldung in der query...
 
Jetzt fehlt nur noch eine kleine Beschreibung was passieren soll.

Ich sehe dein Dropdown-Feld. Wofür ist dieses?
Was hat es mit dem Feld "Versuchs_id" auf sich?

Sulustaner2004 20. Feb 2004 09:14

Re: fehlermeldung in der query...
 
um ehrlich zu sein darf ich dir darüber nicht sonderlich viel erzählen...nur so viel...
mit dem drpdown feld werden versuchsflächen ausgeählt du bei der aktivierung der form dort reingeschreiben werden...unter jedem textfeld befindet sich ein label was die eventuell vorhandenen daten zu der versuchsfläche anzeigt...
jetzt sollen in die textboxen neue daten eingetragen und dann in der datenbank gespeichert werden...
das feld versuchs_id ist nur eine spalte in einer tabelle in der datenbank mit dem namen dbo_versuchsfleachen_ST

mikhal 20. Feb 2004 09:35

Re: fehlermeldung in der query...
 
Delphi-Quellcode:
 // Bei dieser if Anweisung springt er dann raus...
   if adoquery1.Locate('Behandlung',tb_behandlung.Text,[])then
       adoquery1.FieldByName('behandlung').AsString;
Steht das wirklich so in deinem Programm?

Ist zwar syntaktisch korrekt, deshalb schmeißt dein Compiler keine Fehlermeldung aber im Programmablauf gibt's dann ein Problem...

Grüße
Mikhal

Sulustaner2004 20. Feb 2004 09:37

Re: fehlermeldung in der query...
 
ja, das steht wirklich so in meinem programm...
und wie gesagt, er macht es ja bei der ersten textbox... :?

Robert_G 20. Feb 2004 10:01

Re: fehlermeldung in der query...
 
Was funktionierte denn hiermit nicht? -> Datenbank über Button beschreiben lassen...
Du läuftst doch schon wieder in einer Schleife durch ein DataSet und änderst über Edit & Post.
Wenn du die Where-Clause, die du für die Schleife benutzt einfach in einem UPDATE verwendest. Dann kannst du alle deine Werte auf einmal und mit einem Bruchteil an Code und Traffic in die DB schreiben (siehe dein anderer Thread in dem Link oben).

Edit: früh-morgendliches-gichtfinger-tipp-syndrom :mrgreen:

mikhal 20. Feb 2004 10:19

Re: fehlermeldung in der query...
 
Delphi-Quellcode:
adoquery1.FieldByName('behandlung').AsString;
Was soll denn das bringen? So wie es jetzt dort steht, suchst du via Locate nach einem Datensatz. Wenn du ihn gefunden hast, liest du ein Feld des Datensatzes aus, ohne es einer Variablen oder einem anderen Datenfeld zuzuweisen (also ein Aufruf einer Funktion, ohne das Ergebnis zu verwenden).

Danach änderst du ALLE Datensätze deiner Datenbank ab dem gefundenen Datensatz auf den Wert, der in der Textbox gefunden wird.
Wenn Locate aber nichts findet, steht der Datenbank-Cursor immer noch an der Position, an der er stand, bevor du Locate aufgerufen hast. Das bedeutet, daß du im schlimmsten Fall wirklich ALLE Datensätze deiner Datenbank anpackst und änderst.

Wenn dein Programm dann im zweiten Schritt bereits bei der IF-Anweisung einen Fehler produziert (du hast immer noch nicht geschrieben, welche Fehlermeldung du erhälst!) dann liegt es wahrscheinlich daran, daß entweder das Feld in der Datenbanktabelle nicht existiert (falsche Schreibweise) oder der Name des Textfeldes falsch ist. Es kann auch sein, daß die Zeichenkette zu lang ist und deshalb nicht in die Datenbank geschrieben werden kann...

Grüße
Mikhal

Sulustaner2004 20. Feb 2004 10:21

Re: fehlermeldung in der query...
 
nun....das problem besteht ja auch darin das ich mit delphi nicht sonderlich bewandert bin... musste mir das was ich bis jetzt kann alles selber beibringen...und das in 2 monaten !! :-)
was mit deiner anweisung nicht funktioniert hat war das er mir incompatible typen angegeben hat... und zwar
[Fehler] versuch2.pas(205): Inkompatible Typen: 'Variant' und 'Tversuch'
und damit kann ich nichts anfangen...

Sulustaner2004 20. Feb 2004 10:24

Re: fehlermeldung in der query...
 
@ mikhal
doch, habe die fehlermeldung schon mit reingeschreiben...steht ganz oben !!!

mikhal 20. Feb 2004 10:30

Re: fehlermeldung in der query...
 
Yeap, hab ich übersehen...

Ich verwende grundsätzlich verschiedene TQueries um SELECT's und UPDATE's abzusetzen. Wenn ich mich Recht erinnere, wird eine mit Open geöffnete Query vor einem EXECSQL geschlossen...

Grüße
Mikhal

Robert_G 20. Feb 2004 10:31

Re: fehlermeldung in der query...
 
Zeige mal die Declarierung von TVersuch...

Sulustaner2004 20. Feb 2004 10:43

Re: fehlermeldung in der query...
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich mache es am besten mal anders...ich gebe dir mal das ganze programm...dann kannst du mal nachsehen was mein problem ist...
bin ich kein delphi programmierer...mehr html oder vb !!! :-)
kleiner hinweis noch...das programm besteht aus 2 formen...die erste heist dateneingabe und die unterform heißt versuch2
die erste musst du nicht beachten... :-) und daten2 auch nicht beachten...:-)

Robert_G 20. Feb 2004 12:37

Re: fehlermeldung in der query...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe es eben mal auf die ganz schnelle & ganz dreckige "Quick 'n Dirty" - Art gemacht.
Mehr Zeit habe ich jetzt erstmal nicht. Ich hoffe es klappt (ungetestet!), wenn nicht vielleicht kannst du oder ein anderer DP'ler es ausbessern...

Sulustaner2004 20. Feb 2004 12:51

Re: fehlermeldung in der query...
 
also erstmal herzlichsten dank für deine hilfe....
nur eine frage habe ich noch...ich kann mit diesem fieldnames nichts anfangen...
wo ist das denn deklariert @ GeorgeWNewbie ???

Robert_G 20. Feb 2004 12:54

Re: fehlermeldung in der query...
 
Unter Private des Forms.
Kann sein, dass du es umbenennen musst -> in einem "With ADOQuery1"-Block könnte es ja auch FieldNames geben (nämlich ADOQuery1.FieldNames :oops:)

Sulustaner2004 20. Feb 2004 13:11

Re: fehlermeldung in der query...
 
ich danke auch und vor allem dir GeorgeWNewbie für eure hilfe...
die kleinen fehler die jetzt noch drin sind bekomm ich schon raus !! :-) jedenfalls herzlichen dank und ein schönes we... :dp:

Sulustaner2004 23. Feb 2004 07:41

Re: fehlermeldung in der query...
 
Guten morgen....vieleicht kann mir einer von euch helfen....
ich habe am freitag von Robert_G eine überarbeite quellcode datei bekommen...jetzt habe ich ein problem..ich kann mit einigen seiner bezeichnungen nichts anfangen...
bekomme nur fehlermeldungen...
z.b.

[Fehler] versuch2.pas(229): Inkompatible Typen: 'String' und 'Integer'
[Fehler] versuch2.pas(262): Undefinierter Bezeichner: 'FieldNames'
[Fehler] versuch2.pas(275): Anweisung erforderlich, aber Ausdruck vom Typ 'String' gefunden
[Fehler] versuch2.pas(288): Deklaration erwartet, aber Dateiende gefunden

ich habe alles versucht...aber irgendwie klappt nichts...
würde mich freuen wenn ihr mir helfen könntet...

fkerber 23. Feb 2004 07:45

Re: fehlermeldung in der query...
 
HI!

Ohne die betreffenden Code-Zeilen lässt sich leider nur wenig sagen.

Was den ersten Fehler angeht:
Du gibst ihm einen String und er will einen Integer (oder umgekehrt, bin grad verwirrt, sorry)
Guck mal nach inttostr und strtoint

Ciao fkerber

Sulustaner2004 23. Feb 2004 07:54

Re: fehlermeldung in der query...
 
also die datei befindet sich auf seite 1 dieses beitrages...
und ist von robert_g.... :oops:

fkerber 23. Feb 2004 08:16

Re: fehlermeldung in der query...
 
Hi!

Also von hinten nach vorne :lol:

am Ende fehlt ein
Delphi-Quellcode:
end.
Was den Fehler in 275 angeht:

Delphi-Quellcode:
Begin
      'Update dbo_Versuchsflaechen_ST t' + #10 +
        'Set  ' + SetStr + #10 +
        'WHERE t.Versuchsfl_Bezeichnung = :i_Versuch';
Du hast da hinter dem Begin einfach so nen String stehen. Du musst den String schon irgendeiner Variable zuweisen. Ich kenne mich leider nicht mit ADOQuery aus, aber wie gesagt, irgendwas muss dieser String zugewiesen werden:
Delphi-Quellcode:
variable:='string';
Was den Fieldnames-Fehler angeht, habe ich leider keine Ahnung, weil ich nicht so ganz durchschaue, was da geschieht.

Bzgl. des ersten Fehlers:
Probiers mal so:

Delphi-Quellcode:
          TLabel(FindComponent('label' + IntToStr(i + 29))).Caption := FieldValues[i].Value;
Hoffe, das hilft.

Ciao fkerber

Sulustaner2004 23. Feb 2004 08:32

Re: fehlermeldung in der query...
 
also alles in allem klappt das nicht so @ fkerber
er hat irgendwelche probleme...wenn ich intostr setze stört ihn die vorschleife und danach der selbe fehler wieder...
ich poste nochmal den gesamten quellcode...

Delphi-Quellcode:

...
PRIVATE
    { Private-Deklarationen }
    FieldList, CompNames: TStringList;
  PUBLIC
    { Public-Deklarationen }
  End;

Var
  versuch                              : Tversuch;

Implementation
//uses form1;

{$R *.dfm}
// Zum füllen der combobox cbo_bezeichnung

Procedure TVersuch.FormCreate(Sender: TObject);
Begin
  FieldList := TStringList.Create;
  CompNames := TStringList.Create;
  // Für jedes Feld (FieldList) gibt es ein TEdit (CompNames)
  With adoquery1 Do
  Begin
    sql.Add('BEHANDLUNG');
    sql.Add('VERSUCHSFL_NR_WW');
    sql.Add('ANLAGEJAHR');
    sql.add('FLAECHENGROESSE');
    sql.Add('FLAECHENFORM');
    sql.Add('FOWUGEB');
    sql.Add('FOWUBEZ');
    sql.Add('MAKROKLIMA');
    sql.Add('KLIMASTUFE');
    sql.Add('BOART');
    sql.Add('LOBOFORM');
    sql.Add('HUFORM');
    sql.Add('BOTYP');
    sql.Add('NKS');
    sql.Add('HOEHE_NN');
    sql.Add('HANG_N');
    sql.Add('HANG_R');
    sql.Add('BA_M');
    sql.Add('HERKUNFT');
  End;
  With CompNames Do
  Begin
    Add('TB_BEHANDLUNG');
    Add('TB_VFL_NR_WW');
    Add('TB_JAHR');
    Add('TB_GROESSE');
    Add('TB_FORM');
    Add('TB_FOW1');
    Add('TB_FOW2');
    Add('TB_MAKRO');
    Add('TB_KLIMA');
    Add('TB_BO');
    Add('TB_LOBO');
    Add('TB_HU');
    Add('TB_BOTYP');
    Add('TB_NKS');
    Add('TB_HOEHE');
    Add('TB_HANG_N');
    Add('TB_HANG_R');
    Add('TB_BA');
    Add('TB_HERKUNFT');
  End;

  With ADOQuery1 Do
  Begin
    SQL.Text :=
      'SELECT dbo_VF.Versuchsfl_Bezeichnung' + #10 +
      'FROM  (dbo_Versuch_ST dbo_V Inner Join dbo_Versuchsflaechen_ST dbo_VF On' + #10 +
      '       dbo_V.Versuchs_ID = dbo_VF.Versuchs_ID)' + #10 +
      //'INNER JOIN Koordinaten_ST ON dbo_VF.Versuchsfl_ID = Koordinaten_ST.Versuchsfl_ID' + #10 +
//'WHERE (((dbo_VF.Versuchsfl_Bezeichnung)))' + #10 +
    'ORDER By dbo_VF.Versuchsfl_Bezeichnung;';
    Open;
    While Not Eof Do
    Begin
      cbo_bezeichnung.Items.Add(FieldByName('Versuchsfl_Bezeichnung').asString);
      Next;
    End;
  End;
End;
//zum füllen der labels

Procedure TVersuch.CBO_BezeichnungChange(Sender: TObject);
Var
  Versuch                              : String;
  i                                    : String;
Begin
  If cbo_bezeichnung.Text <> '' Then
  Begin
    versuch := cbo_bezeichnung.Text;
    label30.Caption := '';
    label31.Caption := '';

    With ADOQuery1 Do
    Begin
      SQL.Text :=
        'SELECT dbo_VF.Versuchsfl_ID,' + #10 +
        '      dbo_VF.Versuchsfl_Bezeichnung,' + #10 +
        '      dbo_VF.Versuchs_ID,' + #10 +
        '      dbo_VF.Behandlung,' + #10 +
        '      dbo_VF.Versuchsfl_nr_WW,' + #10 +
        '      dbo_VF.Versuchsfl_nr_Hass,' + #10 +
        '      dbo_VF.AnlageJahr,' + #10 +
        '      dbo_VF.Flaechengroesse,' + #10 +
        '      dbo_VF.Flaechenform,' + #10 +
        '      dbo_VF.FOWUGEB,' + #10 +
        '      dbo_VF.FOWUBEZ,' + #10 +
        '      dbo_VF.MAKROKLIMA,' + #10 +
        '      dbo_VF.KLIMASTUFE,' + #10 +
        '      dbo_VF.BOART,' + #10 +
        '      dbo_VF.LOBOFORM,' + #10 +
        '      dbo_VF.HUFORM,' + #10 +
        '      dbo_VF.BOTYP,' + #10 +
        '      dbo_VF.NKS,' + #10 +
        '      dbo_VF.Hoehe_NN,' + #10 +
        '      dbo_VF.HANG_N,' + #10 +
        '      dbo_VF.HANG_R,' + #10 +
        '      dbo_VF.BA_M,' + #10 +
        '      dbo_VF.Herkunft' + #10 +
        'FROM  dbo_Versuchsflaechen_ST dbo_VF' + #10 +
        'WHERE dbo_VF.Versuchsfl_Bezeichnung = :i_Versuch' + #10 +
        'ORDER By dbo_VF.Versuchsfl_Bezeichnung';
      Prepared := True;
      Parameters.ParamByName('i_Versuch').Value := CBO_Bezeichnung.Text;
      Open;
      // Ab der 3. Spalte beginnen die Werte, die in den Labels dargestellt werden sollen...
      If Not Eof Then
        For i := 2 To pred(FieldCount) Do
        Begin
          TLabel(FindComponent('label' + IntToStr((i + 29)))).Caption := FieldValues[i].Value;
        End;

    End;
  End;
End;

Procedure TVersuch.cb_ExitClick(Sender: TObject);
Begin
  Close;
End;

Procedure TVersuch.CB_TakeClick(Sender: TObject);
Var
  versflid, SetStr                     : String;
  ProcessedRecs, i, SetCount           : Integer;
  SetVals                              : Array Of String;
Begin
  versflid := ADOQuery1.FieldByName('versuchs_id').asString;
  If (tb_versuch_id.Text = '') Then
    ShowMessage('Bitte was eintragen.');

  SetCount := 0;
  // Arraylänge auf ANzahl der TEdits
  SetLength(SetVals, CompNames.Count);

  For i := 0 To pred(CompNames.Count) Do
  Begin
    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;
  End;
  // Entferne erstes Komma & Leerzeichen
  SetStr := Copy(SetStr, 10, Length(SetStr));
  // Wenn SetStr beschrieben wurde -> baue UPDATE-Statement...
  If SetStr <> '' Then
  Begin
    With ADOQuery1 Do
    Begin
      'Update dbo_Versuchsflaechen_ST t' + #10 +
        'Set  ' + SetStr + #10 +
        'WHERE t.Versuchsfl_Bezeichnung = :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];
      // Ausführen
      ExecSQL;
    End;
  End;

End;

end.
bin langsam wirklich am verzweifeln... :wall:

fkerber 23. Feb 2004 08:35

Re: fehlermeldung in der query...
 
Hi!

So wie ich das sehe sind die Fehler immer noch drin.
Die Sache mit dem String bei der ADO-Query z.B.
Und was das mit dem InttoStr beim FindComponent angeht, dann schau mal in der Hilfe nach.

Du musst zumindest versuchen meine Lösungsansätze nachzuvollziehen und nicht nur sagen, es geht nicht.

Ciao fkerber

Robert_G 23. Feb 2004 08:37

Re: fehlermeldung in der query...
 
:wall: wie gesagt, ich hatte das Ding auf die Schnelle runtergehackt.

Natürlich ist das 'UPDATE... reinster Schwachfug... :oops:
Es sollte so aussehen:
Delphi-Quellcode:
  Begin
    With ADOQuery1 Do
    Begin
      SQL.Text :=
        'Update dbo_Versuchsflaechen_ST t' + #10 +
          'Set  ' + SetStr + #10 +
          'WHERE t.Versuchsfl_Bezeichnung = :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];
      // Ausführen
      ExecSQL;
    End;

Sulustaner2004 23. Feb 2004 08:43

Re: fehlermeldung in der query...
 
danke dir...
das habe ich inzwischen auch gesehen gehabt !! :-)
aber trotzdem habe ich noch andere fehler die ich nicht sehe...einmal der
Delphi-Quellcode:
 For i := 2 To pred(FieldCount) Do
mit der fehlermeldung
[Fehler] versuch2.pas(227): FOR-Schleifenvariable muss von ordinalem Typ sein

der
Delphi-Quellcode:
TLabel(FindComponent('label' + IntToStr((i + 29)))).Caption := FieldValues[i].Value;
mit der fehlermeldung
[Fehler] versuch2.pas(229): Inkompatible Typen: 'String' und 'Integer'

und der
Delphi-Quellcode:
SetStr := SetStr + ',' + #10 + '      ' + FieldNames[i] + ' = :' + 'i_F' + IntToStr(SetCount);
mit der fehlermeldung
[Fehler] versuch2.pas(262): Undefinierter Bezeichner: 'FieldNames'

Robert_G 23. Feb 2004 08:49

Re: fehlermeldung in der query...
 
Liste der Anhänge anzeigen (Anzahl: 1)
"i" ist in dem von mir geposteten Code Integer.
Und nimm anstatt FieldNames die StringList FieldList, die unter private deklariert wurde...
Nachtrag:

Du solltest am Besten einfach meinen Code nehmen und den Bug bei 'UPDATE... beheben.
Du hast nämlich noch eine Menge mehr Fehler eingebaut...

[edit=Sharky]Doppelpostin auf wunsch gelöscht. Mfg, Sharky[/edit]

Sulustaner2004 23. Feb 2004 08:56

Re: fehlermeldung in der query...
 
ok...soweit geht es...nur mir der zeile
Delphi-Quellcode:
TLabel(FindComponent('label' + strtoint((i + 29)))).Caption := FieldValues[i].Value;
hat er noch seine probleme...
er sagt dann immer
[Fehler] versuch2.pas(229): Inkompatible Typen: 'String' und 'Integer'

und
Delphi-Quellcode:
 With adoquery1 Do
  Begin
    Add('BEHANDLUNG');
    Add('VERSUCHSFL_NR_WW');
    Add('ANLAGEJAHR');
    Add('FLAECHENGROESSE');
    Add('FLAECHENFORM');
    Add('FOWUGEB');
    Add('FOWUBEZ');
    Add('MAKROKLIMA');
    Add('KLIMASTUFE');
    Add('BOART');
    Add('LOBOFORM');
    Add('HUFORM');
    Add('BOTYP');
    Add('NKS');
    Add('HOEHE_NN');
    Add('HANG_N');
    Add('HANG_R');
    Add('BA_M');
    Add('HERKUNFT');
  End;
  With CompNames Do
  Begin
    Add('TB_BEHANDLUNG');
    Add('TB_VFL_NR_WW');
    Add('TB_JAHR');
    Add('TB_GROESSE');
    Add('TB_FORM');
    Add('TB_FOW1');
    Add('TB_FOW2');
    Add('TB_MAKRO');
    Add('TB_KLIMA');
    Add('TB_BO');
    Add('TB_LOBO');
    Add('TB_HU');
    Add('TB_BOTYP');
    Add('TB_NKS');
    Add('TB_HOEHE');
    Add('TB_HANG_N');
    Add('TB_HANG_R');
    Add('TB_BA');
    Add('TB_HERKUNFT');
  End;
dort sagt er
[Fehler] versuch2.pas(120): Undefinierter Bezeichner: 'Add'

also entweder ich bin zu bl.. oder einfach noch nicht wach...

Robert_G 23. Feb 2004 08:58

Re: fehlermeldung in der query...
 
Ist I immer noch String?

Sulustaner2004 23. Feb 2004 09:02

Re: fehlermeldung in der query...
 
ja...i ist für ihn immer noch string !!!

Robert_G 23. Feb 2004 09:06

Re: fehlermeldung in der query...
 
:wall: ich glaube dieses FieldValues[i] an besagter Stelle muss mit Fields[i].asString erstzt werden.

Sulustaner2004 23. Feb 2004 09:09

Re: fehlermeldung in der query...
 
ok..das klappt...nur das mit dem undefinierten bezeichner klappt noch nicht !!!
ich merke schon..ich bleibe definitiv bei vb!!! :-)

Robert_G 23. Feb 2004 09:17

Re: fehlermeldung in der query...
 
Hast du dir den Code von Hheute gesaugt, oder benutzt du noch deine veränderte Variante?
Wie ich bereits geschrieben habe: UnterPRIVATE ist nicht FieldNames, sondern FieldList deklariert (hatte ich beim tippen verwechselt).
Wenn du das benutzt sollte es kompiliert werden können.

p.s.: Da es gerade noch Montag nacht ist kannst du von mir aber noch keine geistigen Höhenflüge erwarten :mrgreen:

Nachtrag: Versuche sowas in VB und du wirst merken, dass du für hyperprimitive Dinge ein/zwei Zeilen Code hast.
Für alles was komplizierter wird bist, du dann nur mit unübersichtlichen Workarounds beschäftigt.
Außerdem ist das einfach keine Programmiersprache. :zwinker:

Sulustaner2004 23. Feb 2004 09:27

Re: fehlermeldung in der query...
 
ich habe den code von heute gesaugt !!! und es klappt jetzt alles !!!
danke dir für deine wirklich sehr sehr große hilfe !!! :-)
ich kann dank eurer hilfe jetzt wieder weiter machen !!! :-)

Sulustaner2004 23. Feb 2004 09:58

Re: fehlermeldung in der query...
 
Nachtrag

müsste er nicht eigentlich alles speichern ??? irgendwie lässt er die zeile versuchs_id aus...

Robert_G 23. Feb 2004 10:08

Re: fehlermeldung in der query...
 
Ich hatte mich da an deine Vorlage gehalten.
Eigentlich wird ja auch nur ein Update ausgeführt. Es werden keine neuen Datensätze angelegt!
Warum sollte man den die VersuchsID ändern (ist die nicht der prim. Schlüssel :gruebel: )!
Ich bin gerade etwas im Stress, in etwa 30 - 40 min schaue ich mir das nochmal an, damit auch Datensätze angelegt werden, wenn es die VersuchsID noch nicht gibt.

Sulustaner2004 23. Feb 2004 10:12

Re: fehlermeldung in der query...
 
nein...die versuchs_id ist nicht der primärschlüssel...den beachte ich eigentlich garnicht !!!
die versuchsfl_bezeichnung ist das 4. feld und dann kommt die versuchs_id
das lustige ist ja...als erstes hat er sich ja gespeichert !!! :-)

Robert_G 23. Feb 2004 10:16

Re: fehlermeldung in der query...
 
Na dann füge doch im OnCreate des Forms "VERSUCHS_ID" an die FieldList und das dazugehörige Edit and die CompNames an.
Die Schleife im OnClick müsste dann auch die VersuchsID berücksichtigen.

Sulustaner2004 23. Feb 2004 10:46

Re: fehlermeldung in der query...
 
ok...jetzt funktioniert es alles.. :-) danke vielmals... :-)

Sulustaner2004 3. Mär 2004 08:12

Re: fehlermeldung in der query...
 
guten morgen...
habe mal eine frage zu der sqlanweisung die du mir geschrieben hast @ Robert_g
und zwar kann ich damit nichts anfangen...
Delphi-Quellcode:
With ADOQuery1 Do
  Begin
    SQL.Text :=
      'SELECT dbo_VF.Versuchsfl_Bezeichnung' + #10 + //was hat dieses VF zu bedeuten ???
      'FROM  (dbo_Versuch_ST dbo_V Inner Join dbo_Versuchsflaechen_ST dbo_VF On' + #10 +
      '       dbo_V.Versuchs_ID = dbo_VF.Versuchs_ID)' + #10 +
      //'INNER JOIN Koordinaten_ST ON dbo_VF.Versuchsfl_ID = Koordinaten_ST.Versuchsfl_ID' + #10 +
//'WHERE (((dbo_VF.Versuchsfl_Bezeichnung)))' + #10 +
    'ORDER By dbo_VF.Versuchsfl_Bezeichnung;';
    Open;
wäre für eine antwort sehr dankbar...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Seite 1 von 2  1 2      

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