我在窗口中放了Datagrid控件,属性设置可更新、删除、插入,其数据源为Recordset,在更新数据行时出现“无法为更新行集定位:一些值可能已在最后读取后改变”的错误,该如何解决?
注:我的Recordset的SQL语句“select id,name from table”,其中ID是主键。

解决方案 »

  1.   

    我的建表方式如下:
    CREATE TABLE [dbo].[Temp1] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL
             ......
    )
    字段ID应该自动更新的呀,这应该不会有相同的记录呀?
      

  2.   

    在更新时候,与grid绑定的记录集已经释放了,或者连接也释放了。
      

  3.   

    建议在mssql的企业管理器和查询分析器中执行相同的操作!
    不是datagrid的问题
      

  4.   

    不是的:这虽然不是datagrid的问题,算是也未尝不可。
    ID这个主键如果设置成自动编号,datagrid不会反映出来,它没有接到数据库内部已经自动改变了ID的事实,它只会出错。
    处理方法:ID仍然设置成主键,但设置成长整型数字。用程序来每次自动赋值。每次都得判断程序中最大的ID是多少,然后再累加1。加载程序时就得取出该值,在添加数据给ID加1