俺想在任意任意两行中间插入一行数据.好像SQL-based的关系型数据库每次插入后,只要焦点离开,新插入的数据都会自动跑到最后一行
(如果表中有索引,或者主键则会自动按照索引位置重新排序),俺用的是MySQL,请问哪位大侠
能给解决一下?好像有种方法是再在表中再加入一个索引,以RecNo排序?但是如果要是删除表中
一行,是不是后面的行号都要重新更新,假设表中有几万行数据,工作量是不是太大了些?大大
影响效率?请问有无更好的解决办法?哪位大侠能指点一二?小弟40分相赠!谢谢!!!

解决方案 »

  1.   

    建一字段,这个字段根据实际情况来建
    写Select 的时候,Order by 该字段,RecNo
    该字段的值为前一个插入的值,这样不就ok了
      

  2.   

    建议你在dbgrid被刷新前记住keyfield的值,刷新后用此值来个locate.
      

  3.   

    感觉win9000的方法行不通,由于在SQL-Based数据库中是无所谓存储顺序的。dbgrid中的只是根据需要而排列出的顺序。所以考虑到dbgrid中的记录随时都可能被删除,或者是在任意两行间增加新的记录。要满足我所需要的顺序,就应该为此特别增加个字段。况且,locate,insert后,如果下次再打开应用程序,dbgrid中肯定还会按照某个索引值或者主键顺序排序。不知道我考虑的是否正确?小弟拙见
      

  4.   

    To: cdsgajxlp大侠,很不幸,由于俺用了DBGridEh控件,所以没办法在select语句中加入Order by,因为此控件中点击Title时自己动排序的算法已经用Order by,如果此时点击Title会出现SQL语法错误(两个Order by啦),但是您给的方法我觉得是行得通的,如果定义成动态索引似乎就可以满足我的要求啦。但是多了两个Field,感觉还是怪怪的。看看大侠还有啥其他好点子吗?谢谢啦!