软件注册站
热情软件屋

 
在DATAGRID中修改数据后,提示"Insufficient key column information for updating or refreshing"
编号: QA004851    
建立日期: 2004年2月5日 最后修改日期: 2004年2月5日
所属类别: Visual Basic - 错误信息
Visual Basic - DBGrid
   
    操作系统:win2000
    编程工具:vb 6.0
    问题:在DATAGRID中修改数据后,为什么会提示"Insufficient key column information for updating or refreshing"?(水煮鱼)
   
    hfyu的意见:
    原因:ADO无法确定你要更新的数据究竟是哪一行。解决方法:在数据表(Table)中创建主键(Primary Key)。
    
    anshaodong的意见:
    DataGrid控件以表格形式显示数据,具有较强的数据显示和编辑功能,可以进行成批数据的连续录入。令人遗憾的是,与DataGrid控件绑定的记录集必须使用客户端游标(CursorLocation=adUseClient),若记录集采用服务器端游标(adUseServer),该控件将无法显示数据。使用客户端游标的记录集在功能上有很多限制,对于多表查询来说,若所生成的记录集的输出字段来自两个或更多表,则不能进行更新操作;若查询虽然涉及多表,但输出字段仅来自其中一个表,修改更新操作不受影响。以下面的两条SQL语句为例:
     ① SELECT 成绩.学号,学籍.姓名,成绩.课程,成绩.分数 FROM 成绩,学籍 WHERE 成绩.学号=学籍.学号
     ② SELECT 成绩.学号,成绩.课程,成绩.分数 FROM 成绩,学籍 WHERE 成绩.学号=学籍.学号
    语句①所选择的查询输出字段(SELECT之后,FROM之前的部分)来自两个表,采用客户端游标生成记录集后可以在各种数据绑定控件中正常显示,但不能修改、更新数据。若在程序中执行更新操作,将出现错误提示:"Insufficient key column information for updating or refreshing"(缺少更新或刷新的键列信息)。
    语句②的查询输出字段仅来自"成绩"表,尽管在查询条件(WHERE子句)中涉及两个表,但不影响更新操作。
    为了充分发挥DataGrid控件的数据编辑功能,可以用一个临时工作表存放多表查询的结果,将多表操作转换为单表操作。数据流程如下:
    多表查询→记录集→临时表→录入、修改→存入基本表。
    
    lkWeiFen的意见:
    数据库KEY字段不能重复,或空!

    

此问题由hfyu等回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 错误信息, error, error message, link, compile, runtime, DBGrid, dbgrid, dbcombo

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio