Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Problem bei Aktualisierung

  Alt 13. Nov 2008, 11:59
Datenbank: Microsoft Access • Zugriff über: TADOConnection
Hallo zusammen,

ich habe folgendes Problem:

In meiner Applikation werden in einer Funktion alle markierten Datensätze abgearbeitet und der Inhalt der Datensätze geändert. Die Anzeige der Datensätze ist mit einer WHERE-Klausel verbunden. Das heißt, ich bekomme in meinem DBGrid eine eingeschränkte Datenmenge angezeigt. Aus dieser Datenmenge markiere ich X Datensätze. Mit der aufzurufenden Funktion werden dann die Änderungen pro Datensatz getätigt. Das verläuft alles richtig.
Nach jedem abgearbeiteten Datensatz möchte ich eine Aktualisierung auf die Datenmenge ausführen, damit die Datenmenge dem Filter entsprechend richtig angezeigt wird. Hierbei habe ich ein Problem. Ich mache das folgendermaßen:

Delphi-Quellcode:
procedure Test;
var X, Y : Integer;
begin
  ...
  X := myGrid.SelectedRows.Count;
  Y := 0;

  if X > 0 then
  begin
    repeat
      mygrid.SelectedRows.Refresh;
      MyDS.GotoBookmark(pointer(mygrid.SelectedRows.Items[Y]));
      ...
      // macht irgendwas
      ...
      // falls Bookmark verloren, die fehlenden Datensätze bis zum Tabellenende
      MyDS.GotoBookmark(pointer(mygrid.SelectedRows.Items[Y]));
      mygrid.SelectedRows.Refresh; // Liste aktualisieren

      MyDS.Requery; // das habe ich eingefügt, um die Datenmenge zu aktualiseren; funktioniert auch

      Y := Y + 1;
    until Y > X-1;
  end;
end;
So funktioniert es auch, aber wenn die repeat-Schleife wieder oben ankommt, dann kommt folgende Meldung bei [myGrid.SelectedRows.Refresh]:

EOleException: "Das Lesezeichen war ungültig"

und irgendwann zum Ende der markierten Datensätze kommt beim Bookmark "Listenindex überschreitet das Maximum", was auch klar ist warum.

Als Hinweis noch: Ich habe das ganze auch mit DAC-Komponenten mit einer MS SQL Datenbank gemacht und dort verläuft es einwandfrei.

Hoffe die Infos reichen soweit aus.

Danke & Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat