ADOTable1连接XSDD001(code,ghscode,...),ADOTable3连接GHSDA(code,name,...)
AdoTable1有一个Lookup类型的字段:khname,属性如下:
keyfields:ghscode
lookupcache:true
lookupdataset:ADOTable3
lookupkeyfields:code
lookupresultfield:name
编译运行后,当在插入状态下点击与khname字段绑定的edit控件时,提示发生未知的错误;但当在编辑状态下点击该控件,又没问题哦?为什么?谢谢!!

解决方案 »

  1.   

    插入时,可能是code不能为空导致错误
      

  2.   


    但是插入时,我是这样写的:
     ADOTable1.Append;
     ADOTable1.FieldByName('code').asstring := code;
    为什么还会出现错误呢?
      

  3.   

    我在网上看到有高手说把lookup字段所在的DataSet的Append时给lookupkeyfield字段先赋一个值,于是我这样写:
    Append
    ADOTable1.FieldByName('ghscode').asstring :='0';
    运行后,插入时提示:
    UPDATE 语句与 COLUMN FOREIGN KEY 约束 'FK_CGDD001_GHSDA' 冲突。该冲突发生于数据库 'ABC',表 'GHSDA', column 'code'。语句已终止
    晕,这个数据库我是下载到思微超市源码中的数据库,应该没问题啊?
      

  4.   

    在向XSDD001插入数据时,要确保ghscode和ywycode字段中的内容,在GHSDA和RYDA中已经存在对应的code值。
    不然,无法向XSDD001插入数据。
    lookup的含义就是在外键表中寻找匹配值来显示,如果外键表中没有该键值,那就找不到匹配值,lookup失败。就是所谓的COLUMN FOREIGN KEY 约束 'FK_CGDD001_GHSDA' 冲突
    LZ的例子中ghscode和ywycode就是XSDD001的外键表。
    要先检查ADOTable3连接GHSDA(code,name,...)中有没有code等于0的记录。没有就添加一条。