![]() |
Re: zeilen werden ignoriert...
Zitat:
Wenn SetStr einen Wert enthält wird der Code ja auch ausgeführt. Jetzt kannst Du über einen Breakpoint und schrittweise ausführen des Programms herausbekommen an welcher Stelle die SV auftritt. Ich vermute mal an dieser Stelle
Delphi-Quellcode:
Der SQL Ausdruck enthält keinen Parameter, der mit i_F beginnt.
For i := 0 To pred(SetCount) Do
Parameters.ParamByName('i_F' + IntToStr(i)).Value := SetVals[i] |
Re: zeilen werden ignoriert...
Du hast mal wieder was kopiert, ohne dir den Rest anzuschauen...
@Jens Ich glaube es knallt bei "...Value := SetVals[i];" dort wird auf einen Eintrag im Array zugegriffen, den es noch nicht gibt! Das muss passieren bevor du weiter machst (Sonst gibt's eine ziemlich schräges UPDATE-Statement :mrgreen: ).
Delphi-Quellcode:
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)); |
Re: zeilen werden ignoriert...
nein...er springt an dieser stelle mit der meldung raus...
Delphi-Quellcode:
...
SetStr := SetStr + ',' + #10 + ' ' + Fieldnames[i] + ' = :' + 'i_F' + IntToStr(SetCount); ... |
Re: zeilen werden ignoriert...
Dann hast du nicht zu jedem Eintrag in CompNames einen zu Fieldnames hinzugefügt...
|
Re: zeilen werden ignoriert...
wie meinst du das ???
du meinst jedes feld eingetragen unter comp und fieldnames ??? das habe ich getan !!!! |
Re: zeilen werden ignoriert...
Ich meinte, dass du zu jeder Zeile von CompNames auch eine in FieldNames brauchst.
Dadurch kennt die Schleife die passende Spalte zu jedem Edit. Ich habe mir gerade deine UNIT gesaugt -> Du legst vor der Schleife die Länge des Arrays nicht fest -> Es knallt also eine Zeile früher. SetCount muss unbedingt vor der Schleife auf 0 gestzt werden genau wie Die Länge des Arrays der Anzahl von CompNames entsprechen muss.
Delphi-Quellcode:
Ansonsten befindet sich SetCount hier außerhalb des Arrays.
SetCount := 0;
// Arraylänge auf ANzahl der TEdits SetLength(SetVals, CompNames.Count);
Delphi-Quellcode:
SetVals[SetCount] := Text;
|
Re: zeilen werden ignoriert...
ok...soweit so gut...das klappt jetzt ja auch...aber warum speichert er es denn nicht ab ??? das versteh ich nicht !!! :wall:
|
Re: zeilen werden ignoriert...
Zeige mal Das UPDATE-Statement, das von zusammengebaut & abgesetzt wird (das schaffst du am einfachsten so wie Sharky es in deinem anderen Thread beschrieben hatte)
|
Re: zeilen werden ignoriert...
also das ist es wenn du das meintest....
Delphi-Quellcode:
... 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; ... |
Re: zeilen werden ignoriert...
Zeihe ein Memo auf dein Form, kommentiere ExecSQL aus und schreibe SQL.Text in das Memo anstatt ExecSQL aufzurufen.
Delphi-Quellcode:
Den Text kannst du dann kopieren und hier posten (mit SQL-tags bitte)
// Ausführen
// ExecSQL; Memo1.Text := Sql.Text; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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-2025 by Thomas Breitkreuz