Delphi - restaurer la ligne réelle dans le DBGrid

D6 prof.

Auparavant, nous avons utilisé DBISAM et DBISAMTable. Gérer le RecNo, et il fonctionne bien avec des modifications (Supprimer, modifier, etc).

Maintenant, nous avons remplacé avec ElevateDB, qui ne gèrent pas RecNo, et de nombreuses fois, nous utilisons des Requêtes, pas de Tables.

Requête doit rouvrir pour voir les modifications.

Mais si nous rouvrons la Requête, nous avons besoin d'un repositionnement sur le dernier enregistrement.
Recherchez n'est pas suffisant, parce que la Grille est de l'afficher dans une autre Ligne.
Ce qui est très inquiétant, car après la modification de l'enregistrement est en mouvement dans une autre ligne, vous êtes dur à suivre, et les utilisateurs de la haine.

Nous avons trouvé ce code:

function TBaseDBGrid.GetActRow: integer;
begin
 Result := -1 + Row;
end;


procedure TBasepDBGrid.SetActRow(aRow: integer);
var
 bm : TBookMark;
begin
 if IsDataSourceValid(DataSource) then with DataSource.DataSet do begin
  bm := GetBookmark;
  DisableControls;
  try
   MoveBy(-aRow);
   MoveBy(aRow);
   //GotoBookmark(bm);
  finally
   FreebookMark(bm);
   EnableControls;
  end;
 end;
end;

L'exemple d'origine est utilise moveby. Cela fonctionne bien avec des questions, parce que nous ne pouvons voir que la Requête a rouvert en arrière-plan, le contrôle visuel n'est pas modifié la position de ligne.

Mais quand nous avons EDBTable, ou Vivre et Sensible à la Requête, le MoveBy est dangereux à utiliser, parce que si quelqu'un de supprimer ou d'ajouter une nouvelle ligne, nous pouvons nous déplacer dans l'enregistrement incorrect.

Puis j'ai essayé d'utiliser le Signet (voir remarque). Mais cette technique ne fonctionne pas, parce que c'est de montrer à l'enregistrement dans une autre position de Ligne...

Donc la question: comment faire pour forcer la position de ligne et d'enregistrer dans le DBGrid?

Ou ce genre de DBGrid pouvez la déplacer à l'enregistrement/la ligne après le DataSet sous-jacent actualisé?

Je recherche de solution conviviale, je les comprends, parce que j'ai essayé d'utiliser ce saut-sur DBGrid, et très mauvais pour l'utiliser, parce que mes yeux vont sortir lorsque vous essayez de trouver l'enregistrement d'origine après la mise à jour... 🙁

Merci pour votre aide, liens, infos:
dd

OriginalL'auteur durumdara | 2010-06-08