delphi DBGRID 刷新定位问题 [问题点数:0分]

我程序是 adoquery+datasource+dbgrid 做的

我有一个窗体:有四个按钮。分别是新建,修改,删除,刷新。

新建第一条记录,dbgrid显示一条记录,新建第二条记录。DBGRID总共显示第一,第二条记录。不需要把以前记录显示出来。。

修改时候,,,当修改当前记录完成后DBGRID回当前修改行。

删除一条记录。。。定位到删除记录下条记录。

ADOQuery1.Close;

ADOQuery1.SQL.Text:='select * from 表名 where (ID > '

+QuotedStr('数据库中ID的最大号'

+') and (user = '

+QuotedStr('操作者名'

')';

ADOQuery1.Open;

假定你的数据表中有个唯一的ID(自增)字段、有个记录操作者的user字段,新增记录时的查询语句这样写:

ADOQuery1.Close;

ADOQuery1.SQL.Text:='select * from 表名 where (ID > '

+QuotedStr('数据库中ID的最大号'

+') and (user = '

+QuotedStr('操作者名'

')';

ADOQuery1.Open;

就可以达到表格中总是显示新键入的记录了。

编辑记录时,在你的语句前后加入下面两句即可定位到被编辑的记录上:

var p:pointer;

begin

p:=ADOQuery1.GetBookmark;//做个标签

//记录修改和提交的语句...

ADOQuery1.GotoBookmark(p);//记录定位到标签

end;

删除记录时,系统自动将记录定位到被删除记录的上一条,所以,删除记录后,只要执行ADOQuery1.Next;就能定位到被删记录的下一条(假如有的话)

在使用Bookmark的时候,最好用try except 屏蔽错误。 还要FreeBookmark