AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi fehlermeldung in der query...

fehlermeldung in der query...

Ein Thema von Sulustaner2004 · begonnen am 20. Feb 2004 · letzter Beitrag vom 3. Mär 2004
Antwort Antwort
Seite 3 von 5     123 45   
Sulustaner2004

Registriert seit: 14. Jan 2004
106 Beiträge
 
Delphi 7 Professional
 
#21

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 07:54
also die datei befindet sich auf seite 1 dieses beitrages...
und ist von robert_g....
Und das leben geht weiter.....
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#22

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:16
Hi!

Also von hinten nach vorne

am Ende fehlt ein
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:
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:

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

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Sulustaner2004

Registriert seit: 14. Jan 2004
106 Beiträge
 
Delphi 7 Professional
 
#23

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:32
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...
Und das leben geht weiter.....
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#24

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:35
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
Frederic Kerber
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#25

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:37
wie gesagt, ich hatte das Ding auf die Schnelle runtergehackt.

Natürlich ist das 'UPDATE... reinster Schwachfug...
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;
  Mit Zitat antworten Zitat
Sulustaner2004

Registriert seit: 14. Jan 2004
106 Beiträge
 
Delphi 7 Professional
 
#26

Re: fehlermeldung in der query...

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

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

und der
SetStr := SetStr + ',' + #10 + ' ' + FieldNames[i] + ' = :' + 'i_F' + IntToStr(SetCount); mit der fehlermeldung
[Fehler] versuch2.pas(262): Undefinierter Bezeichner: 'FieldNames'
Und das leben geht weiter.....
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#27

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:49
"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]
Angehängte Dateien
Dateityp: pas versuch2.pas (7,5 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Sulustaner2004

Registriert seit: 14. Jan 2004
106 Beiträge
 
Delphi 7 Professional
 
#28

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:56
ok...soweit geht es...nur mir der zeile
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...
Und das leben geht weiter.....
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#29

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 08:58
Ist I immer noch String?
  Mit Zitat antworten Zitat
Sulustaner2004

Registriert seit: 14. Jan 2004
106 Beiträge
 
Delphi 7 Professional
 
#30

Re: fehlermeldung in der query...

  Alt 23. Feb 2004, 09:02
ja...i ist für ihn immer noch string !!!
Und das leben geht weiter.....
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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