zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用ZooKeeper实现Java跨JVM的分布式锁
    基于ZooKeeper的分布式锁和队列
    activiti数据库表结构剖析
    visualvm监控jvm及远程jvm监控方法
    使用visualvm 远程监控 JVM
    java jprofile
    Linux服务器上监控网络带宽的18个常用命令
    Redis-sentinel哨兵模式集群方案配置
    电容的去耦半径
    DC-DC BUCK电源芯片的基本原理和组成
  • 原文地址:https://www.cnblogs.com/jijm123/p/7458707.html
Copyright © 2011-2022 走看看