Version Laz 0.9.26.2 Beta
Ich habe ein DBGrid das nur die Ergebniss einer Suche auf der Datenabnk anzeigt. Der Anwender kann eine Zeile im DBGrid markieren (dgRowSelect:= true), die verändert werden soll. Dann betätigt er einen Button und der Wert (eine bestimmte Spalte) wird auf der Datenbank verändert.
Jetzt würde ich gerne im DBGrid dies dem Anwender auch visuell anzeigen. Nach dem Motto, habe ich diese Zeile schon geändert oder nicht? Die Suche einfach nochmal starten scheidet aus, da dies unter Umständen ca. 20 sec dauern kann.
Wie kann ich dieses bewerkstelligen?
Danke für Eure Hilfe
Ciao beule
Wie veränderten Wert im DBGrid (Zelle) anzeigen?
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Wie veränderten Wert im DBGrid (Zelle) anzeigen?
Hallo Beule,
zu deinem Problem gibt es sicherlich verschiedene Möglichkeiten.
Ich verstehe zwar nicht richtig dein Problem, aber vieleicht solltest Du anstelle eines DBGrids ein Stringgrid oder Listview verwenden, hierbei hättest Du sehr einfach die Möglichkeit eine Zusätzliche Spalte einzufügen, die z.B. den Beirag erledig oder bearbeitet am von enthalten könnte.
Der Nachteil ist nur, dass du nach deinem Select ... from ... where inner or outer ... order by... was auch immer
die Daten in dein Grid eintragen musst.
Hierfür würdest Du dann z.B. eine While Schleife durchlaufen.
Alle Daten könntest Du dann nach der Bearbeitung über dein Grid entsprechend deines Datensatz Zeigers oder z.B. über eine ID in die Datentabelle schreiben und nur noch dein Listview aktualisieren.
Ich kann dir leider nicht versprechen, dass du den obenstehenden code direkt so verwenden kannst, habe den nur so runter geschrieben. Sollte jedoch ziemlich so funktionieren.
Was ich jedoch nicht verstehe, warum deine Suche 20 Minuten dauern soll, vieleicht kann man da ja auch etwas optimieren. Wieviel daten liegen denn in deiner Datenbank / den einzelnen Tabellen?
Mit freundlichem Gruß
Ralph
zu deinem Problem gibt es sicherlich verschiedene Möglichkeiten.
Ich verstehe zwar nicht richtig dein Problem, aber vieleicht solltest Du anstelle eines DBGrids ein Stringgrid oder Listview verwenden, hierbei hättest Du sehr einfach die Möglichkeit eine Zusätzliche Spalte einzufügen, die z.B. den Beirag erledig oder bearbeitet am von enthalten könnte.
Der Nachteil ist nur, dass du nach deinem Select ... from ... where inner or outer ... order by... was auch immer
die Daten in dein Grid eintragen musst.
Hierfür würdest Du dann z.B. eine While Schleife durchlaufen.
Alle Daten könntest Du dann nach der Bearbeitung über dein Grid entsprechend deines Datensatz Zeigers oder z.B. über eine ID in die Datentabelle schreiben und nur noch dein Listview aktualisieren.
Code: Alles auswählen
var
counter:integer
begin
...
counter := 0;
while datasource1.DataSet.EOF = false do begin
Listview1.Items.Add.Caption:=''
listview1.Items[counter].SubItems.Add('Feldinhalt 1 z.b. datasource2.DataSet.FieldByName('ID').Text');
listview1.Items[counter].SubItems.Add('nicht bearbeitet');
...
incr(counter);
datasource1.DataSet.Next; //solltest Du lieber nicht vergessen
end;
Was ich jedoch nicht verstehe, warum deine Suche 20 Minuten dauern soll, vieleicht kann man da ja auch etwas optimieren. Wieviel daten liegen denn in deiner Datenbank / den einzelnen Tabellen?
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.