我用的是Access2000数据库。表中有id,xm,xb,csrq等若干个字段。我用:'Select xm as 姓名,xb as 性别,csrq as 出生日期 from 表1'来执行查询很正常,但我用'Select xm as 姓名,xb as 性别,(yeaer(now)-year(csrq)) as 年龄 from 表1'来执行,数据可以正常显示在DBGridEh1表格中,但一旦执行删除(Adoquery1.Delete;)时就会报如标题那样的错误。请问如何可以既显示出年龄来又不会报错呢?谢谢!
注:id是自增型主键字段。

解决方案 »

  1.   

    因为没有看到你的代码,不清楚你的问题,也没有用过ADOQUERY.DELETE来删除记录。不过建议删除的时候,用sql语句的delete。
      

  2.   

    这种做法是不行的,如果硬要删除
    只能通过SQL模式删除
    或者
    SQL修改成
    Select xm,xb,(year(now)-year(csrq)) as 年龄 from 表1
    而且能否顺利执行还与你的数据库引擎(一般是ADO)版本及Delphi的版本及数据库设计有关
      

  3.   

    Adoquery1.Delete的时候 系统默认你是删除 姓名,性别,年龄 ,
    可是你数据库中没年龄这个字段,
    你可以用sql语句来删除  delete from 表 where id=xx。
      

  4.   

    因为你的sql语句用到了 字段 as 新字段的语法,直接在query中使用delete是错误的,因为无法找到相对应的字段名,因此使用上面几位说的方法