![]() |
Re: fehlermeldung in der query...
also die datei befindet sich auf seite 1 dieses beitrages...
und ist von robert_g.... :oops: |
Re: fehlermeldung in der query...
Hi!
Also von hinten nach vorne :lol: am Ende fehlt ein
Delphi-Quellcode:
Was den Fehler in 275 angeht:
end.
Delphi-Quellcode:
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:
Begin
'Update dbo_Versuchsflaechen_ST t' + #10 + 'Set ' + SetStr + #10 + 'WHERE t.Versuchsfl_Bezeichnung = :i_Versuch';
Delphi-Quellcode:
Was den Fieldnames-Fehler angeht, habe ich leider keine Ahnung, weil ich nicht so ganz durchschaue, was da geschieht.
variable:='string';
Bzgl. des ersten Fehlers: Probiers mal so:
Delphi-Quellcode:
Hoffe, das hilft.
TLabel(FindComponent('label' + IntToStr(i + 29))).Caption := FieldValues[i].Value;
Ciao fkerber |
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:
bin langsam wirklich am verzweifeln... :wall:... 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. |
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 |
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; |
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:
mit der fehlermeldung
For i := 2 To pred(FieldCount) Do
[Fehler] versuch2.pas(227): FOR-Schleifenvariable muss von ordinalem Typ sein der
Delphi-Quellcode:
mit der fehlermeldung
TLabel(FindComponent('label' + IntToStr((i + 29)))).Caption := FieldValues[i].Value;
[Fehler] versuch2.pas(229): Inkompatible Typen: 'String' und 'Integer' und der
Delphi-Quellcode:
mit der fehlermeldung
SetStr := SetStr + ',' + #10 + ' ' + FieldNames[i] + ' = :' + 'i_F' + IntToStr(SetCount);
[Fehler] versuch2.pas(262): Undefinierter Bezeichner: 'FieldNames' |
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] |
Re: fehlermeldung in der query...
ok...soweit geht es...nur mir der zeile
Delphi-Quellcode:
hat er noch seine probleme...
TLabel(FindComponent('label' + strtoint((i + 29)))).Caption := FieldValues[i].Value;
er sagt dann immer [Fehler] versuch2.pas(229): Inkompatible Typen: 'String' und 'Integer' und
Delphi-Quellcode:
dort sagt er
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; [Fehler] versuch2.pas(120): Undefinierter Bezeichner: 'Add' also entweder ich bin zu bl.. oder einfach noch nicht wach... |
Re: fehlermeldung in der query...
Ist I immer noch String?
|
Re: fehlermeldung in der query...
ja...i ist für ihn immer noch string !!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz