AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Aktualisierte Reihen im Stringgrid ermitteln und speichern?!
Thema durchsuchen
Ansicht
Themen-Optionen

Aktualisierte Reihen im Stringgrid ermitteln und speichern?!

Ein Thema von plautzer · begonnen am 30. Dez 2004 · letzter Beitrag vom 31. Dez 2004
Antwort Antwort
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#1

Aktualisierte Reihen im Stringgrid ermitteln und speichern?!

  Alt 30. Dez 2004, 16:29
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
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#2

Re: Aktualisierte Reihen im Stringgrid ermitteln und speiche

  Alt 31. Dez 2004, 00:47
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:38 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