cxgrid用ODAC连上数据库后,数据库表d里有sysid,a,b,c 4个字段,cx上显示了a,b,c,拉了2个按钮,添加和保存,添加里代码: OraQuery1.Open;
OraQuery1.Append;
 保存里代码:
OraQuery1.ApplyUpdates;
OraQuery1.CommitUpdates;
showmessage('数据保存成功!');
运行后添加了点保存报错说:sysid must have a value!
有没有在添加里直接赋值:像这样子 OraQuery1.Open;
                                 OraQuery1.Append;
                                 OraQuery1.fieldbyname('sysid').AsString :=GetSysid('d');
求教要怎么写才正确?或者有什么别的办法?
   

解决方案 »

  1.   

    补充:cx上不想显示sysid,也不要人手动输!
      

  2.   

    sysid 是不是主键啊,必须赋值吧,跟你显示不显示无关
      

  3.   

     既然不想显示,又不想赋值那么解决方法有两个
    1 调整数据库的sysid为自增主键,这样只要插入数据他就会自增,你赋不赋值无所谓
    2 用adocommand命令行的方式插入或者修改记录,自己拼凑sql语句给主键赋值
    3 别管我要代码了,这是数据库基础中的基础,问度娘要吧
      

  4.   

    新手水平有限啊,LS的怎么设置sysid为自增主键啊?还是换一个主键啊?
      

  5.   

    如果你的数据库已经插入数据,麻烦点,需要删除sysid 然后新建一个同样的字段sysid ,设定好sysid为主键,同时有个identity自增属性设为yes保存即可如果不行就建一个同样结构的表,操作同上然后把旧表数据用insert into select导进来 ,当然不包括sysid,因为他是自动赋值的
      

  6.   

    谢谢各位了,好了,我把表中sysid键的类型以前是Primary,现在改成了Unique,保存后不报错了!