![]() |
Aktualisierte Reihen im Stringgrid ermitteln und speichern?!
Hi,
ich möchte aus dem stringgrid heraus finden, ob und welche daten verändert wurden. Ich würde das so realisieren: alle rows auslesen in den daten verändert wurden und diese dann in variablen speichern. bei speichern der daten aus dem grid sollen dann die rows nach und nach aktualisiert werden. ich wollte die ganzen daten in eine label schreiben, was auch funktioniert, ich konnte dann aber der label nicht nach den werten auslesen. also versuche ich das jetzt über arrays, was leider noch nicht nach meinen wünschen funktioniert, aber sehet selbst:
Delphi-Quellcode:
procedure TForm1.stringgrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String); var n:array of word; i:integer; s:word; begin arow:=StringGrid1.Row; //die reihe wird ermittelt, in der was geändert wurde setlength(n,100); for s:=1 to high(n) do begin n[s]:=arow; //soll in eine array übergeben werden n[s]:=n[s+1]; // für den nächsten datensatz den array erhöhen end; showmessage(inttostr(n[s])); //--> es wird der falsche wert ausgegeben (4435) end; die variablen soll dann gespeichert werden und an die speicher procedure weitergeben werden.
Delphi-Quellcode:
schaut ziehmlich chaotisch aus. Wäre gut wenn ihr mir bei ordnen helfen könntet.
for k:=n[1] to n[max] do
begin IBstoredproc2.Params[0].AsString:= stringgrid1.Cells[1,k]; IBstoredproc2.Params[1].asstring:= stringgrid1.Cells[2,k]; IBstoredproc2.Params[2].asstring:= stringgrid1.Cells[3,k]; IBstoredproc2.Params[3].asstring:= stringgrid1.Cells[4,k]; IBstoredproc2.Params[4].asstring:= stringgrid1.Cells[5,k]; IBstoredproc2.Params[5].asstring:= stringgrid1.Cells[6,k]; IBstoredproc2.Params[6].asstring:= stringgrid1.Cells[7,k]; IBstoredproc2.Params[7].asstring:= stringgrid1.Cells[8,k]; IBstoredproc2.ExecProc; ibtransaction1.Commit; IBTransaction1.Active := True; ibdataset1.Open; k:=n[next]; end; THx, Plautzer |
Re: Aktualisierte Reihen im Stringgrid ermitteln und speiche
ABend,
ich mal etwas anderes versucht. Ist zwar nicht besonderes professionell, aber die not macht erfinderich. Und zwar werden alle änderten Reihen an ein edit übergeben und durch leerzeichen abgetrennt. Diese reihen werden dann bei speichern per schleife ausgelesen und aktualisert:
Delphi-Quellcode:
jedoch hait irgentwas mit der schleife nicht hin. Es kommt bei zweiten durchlauf immer die fehlermeldung : " ' ' ist keine gültiger integer "
edit1.Focused;
a:=edit1.Text; f1:=0; while f1 < edit1.GetTextLen do begin f2:=Pos(' ',a); // ich vermute hier den fehler (beim 2ten druchlauf um eins zu klein) a2:=copy(a,f1,f2-1); n:=strtoint(a2); f1:=f2+1; IBstoredproc2.Params[1].asstring:= stringgrid1.Cells[1,n]; ... IBstoredproc2.ExecProc; ibtransaction1.Commit; IBTransaction1.Active := True; ibdataset1.Open; end; Ich glaube auch zu wiseen wo der fehler ist, kann ihn aber nicht beheben. Ich denke es liegt an f2... der wert ist beim zweiten durchlauf um eis zu klein. What to do? Plautzer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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