Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Aktualisierte Reihen im Stringgrid ermitteln und speichern?! (https://www.delphipraxis.net/37079-aktualisierte-reihen-im-stringgrid-ermitteln-und-speichern.html)

plautzer 30. Dez 2004 16:29


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:
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;
schaut ziehmlich chaotisch aus. Wäre gut wenn ihr mir bei ordnen helfen könntet.

THx,

Plautzer

plautzer 31. Dez 2004 00:47

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:
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;
jedoch hait irgentwas mit der schleife nicht hin. Es kommt bei zweiten durchlauf immer die fehlermeldung : " ' ' ist keine gültiger integer "
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