我在DB2中,向数据库中写入数据,如下:
table1.Edit;
table1.Append;
form1.Table1.FieldByName('Id').Value :=31;
form1.Table1.FieldByName('Name').Value :='刘强';
table1.Post;
可是却报错误:Project Project1.exe raised exception class EDBEngineError with message 'General SQL'error.
[IBM][CLI Driver][db2/nt] sql0798n 不能对定义为GENERATED ALWAYS的列"ISID"指定值。SQLSTATE=428C9。Process stopped Use Stop or Run to continue.为什么会这样呢,我觉得我的SQL语句是绝对没有问题的呀!!
请教高手。

解决方案 »

  1.   

    将append换成insert;
    试试看;
      

  2.   

    自增字段肯定是不能赋值的;
    from1.table1.insert;
    form1.Table1.FieldByName('Name').Value :='刘强';
    table1.Post;
      

  3.   

    可能你在数据库中的定义不全,如果是自增字段的话是会自己赋值的;
    如果还不行,就用sql语句插入吧。
      

  4.   

    以上的方法,我都试过了,用楼上的方法,TABLE会给我返回非空字段不能为空,就是说,对于自动增长的字段,不能复值,也不能不对其进行操作,要不就会报上面的错误。SQL语句呢,也存在这样的问题。现在的问题是,如何用DELPHI来触发DB2自动增长的事件呢,怎么给它发消息?老大们帮忙,我都要疯了,555555,伤心的哭。