数据库内容如下:
client_project       client_station
WIN2008                  BT
WIN2008                  FT
WIN2008                  SN
SM5100B-D                DL
SM5100B-D                CFT
SM5100B-D                IMEI
WIN2008                  D/L
SM5100B-D                PINTEST
SM5100B-D                CHECKUI界面里是用SELECT * FROM ... WHERE client_project='WIN2008'来显示的
所以显示内容是
WIN2008                  BT
WIN2008                  FT
WIN2008                  SN
WIN2008                  D/L
现在我想通过在UI界面里点击"MOVE UP"来移动一条数据库数据 比如MOVE UP "WIN2008   D/L"
使得数据库中变化为
WIN2008                  BT
WIN2008                  FT
WIN2008                  D/L    //移动到这里
WIN2008                  SN
SM5100B-D                DL
SM5100B-D                CFT
SM5100B-D                IMEI
SM5100B-D                PINTEST
SM5100B-D                CHECK同样向下移动也是一样的原理前提:不能让此表有为空的时候(也就是通过临时表来实现)因为软件是多用户同时使用

解决方案 »

  1.   

    最好给数据库每条记录增加一个Sequence等字段,当你上移,下移时,通过自己计算得到Sequence的值,然后更新数据库中这个值,从数据库中取数据时,也根据它来显示对应的顺序
      

  2.   

    GOOD IDEA ,但是如果这样的话我需要修改的代码量实在是太大了~~还有其他办法吗?
      

  3.   

    从关系数据库理论上来说,不应使用数据本身的先后顺序,而是设计一个字段来调整数据的先后顺序。
    就是说,你不应该依靠数据本身存放的位置,一切都靠你发出的 SQL 语句。
    记录本身不分先后(聚餐索引除外)字段本身也不分先后
    举例如下:一个产品表:tProductID    NAME    SEQ
    ===================
    1     SE200   3
    4     SW568   1
    2     SB2010  4
    3     EQ201   2ID 为主键,SEQ 为顺序号,用来指定显示的前后顺序。而记录本身存放的先后我们可以不去考虑它,这是DBMS的事情;我们只需要控制好 SEQ 字段,然后发出 SQL 命令即可:SELECT * FROM tProduct ORDER BY seq [DESC]
      

  4.   

    没有其他更好的办法
    不过这个MoveUp和MoveDown有什么作用?
      

  5.   


    每次装载UI的时候就靠数据库的记录的前后顺序来决定UI的前后顺序,
    不过现在我知道了应该增加一个Sequence字段来决定,而不是靠数据本身顺序来决定!
      

  6.   

    把数据库取出的各个字段等,放到一个结构体中对应的,然后可以根据Sequence等来排序...
      

  7.   

    不要放在数据库里面排序,你可以使用STL容器,数据拿出来排序完了再放回去。