多谢您的关注,先说明:
1.我没有采用直接在网格内如EXCEL一样的新增和修改方法,采用的是另开一个输入窗口用textbox输入。因为栏位多,只能采用这种方法。2.Grid绑定的查询语句并未查询表内所有的字段,绑定的ADO为P_Adodc。3.VSFlexGrid的DataMode属性为1,Explorerbar=5 
我新增数据是这样做的:1.点击新增按钮后另开一个输入窗口
2.查询数据表并保存数据:
    sqlstring="select * from User where 1=2
    set p_ors=sql.ExecQuery(sqlstring)
    p_ors.addnew
    p_ors!UserID=text1.text 
    p_ors!UserName=text2.text 
    p_ors.updatebatch
3.刷新列表
     p_adodc.recordset.Requery 
    set p_grid.datasours=p_adodc 
    这样造成的结果就是整个表格都刷新了,顺序改变了,如果资料多,用户要找半天才找到刚刚输入的资料,我希望这笔新资料能显示在最下面。
修改数据是这样的:1.先查询这笔数据的完整字段然后再保存修改后的资料
    sqlstring="select * from User where userid='"& p_adodc.recordset!UserID &"'
    set p_ors=sql.ExecQuery(sqlstring)
    p_ors!UserID=text1.text 
    p_ors!UserName=text2.text 
    p_ors.updatebatch2.刷新列表
     p_adodc.recordset.Requery 
    set p_grid.datasours=p_adodc 
   同样,如果我改了排序用的字段后,表格顺序又被打乱了。
我这段时间一直在找与VSFlexGrid的资料,发现这个控件虽好,但无法像DataGrid一样,查询语句可以写select * from ,只要在表头定义DataField和Caption就可以只显示其中的某几个字段的内容,新增直接P_adodc.recordset.addnew,再保存就显示在最后面了,而更正直接Update就行了,顺序也不会乱。
虽然VSFlexGrid有自动排序和拖动表头的功能,但是将DataMode设为1后,就没这功能了,郁闷为了这个问题我都问好多啦,问得分数都没啦,哪位行行好救救我啊!我的QQ:16038127

解决方案 »

  1.   

    另外 select * from tb 这样用*号代替所有字段是一种低效的查询方法,指定字段才是正道... 
      

  2.   

    我刚好用过这个控件p_grid这个是你的VS的名字吧,那么你在添加到数据库后,再按刷新,就会打乱顺序3.刷新列表 
        p_adodc.recordset.Requery 
        set p_grid.datasours=p_adodc 
        这样造成的结果就是整个表格都刷新了,顺序改变了,如果资料多,用户要找半天才找到刚刚输入的资料,我希望这笔新资料能显示在最下面。 如你所说的,你为什么还重新指导指定VS的数据源呢,你直接在原来的列表下面,用Additem
    如:
    fg.AddItem "龙岗区" '& vbTab & "龙岗区委" & vbTab & "88885555" & vbTab & "龙区长"
    一个VBTAB代表一个格子,你把在另外一个窗体里增加的信息填进来就行了,而且是增加在最后一行的
      

  3.   

    呵呵,我也在用VSFlexGrid这个控件,功能是蛮强的,只是使用的人好像不是很多,想查一些相关的资料都找不到。有没有哪位高手有这个控件的相关资料?
      

  4.   

    我安装的8.0版本的,都有好多的例子程序呀我在上沙,对VSFLEXGRID也比较喜欢,大家可以一起研究研究
      

  5.   

    是的,我每个表都有一个自动ID,按ID肯定不会有问题,但是要考虑到用户自定义排序方式。
    多谢各位的关注!
    ZuoXingYu已加QQ基本解决了问题,结贴给分!