Project erp.exe raised exception class EOleException with message '缺少更新或刷新的键列信息。'. Process stopped. Use Step or Run to continue
报这个错误一般是什么问题?connection是对的,本来是好的,后来我把SQL语句改掉了,但是?出来的SQL语句是对的,是不是这里要把数据源重新配,还是怎么弄?新手,请高手指点

解决方案 »

  1.   

    str:='select * from ( ';
           str:=str+'select a.warpdate,a.sheetid,a.axiscardid,a.axisway,';
           str:=str+'case when a.axisway=''外'' then a.outpfactoryid end aoutpfactoryid,';
           str:=str+'case when a.axisway=''内'' then a.deviceid end adeviceid,';
           str:=str+'c.materialdescription,b.materialid,b.orderid,b.productid,b.quantity,b.price,b.money,b.stockroom,b.stockkw,a.printflag,b.re ';
           str:=str+'from mtr_axiscardfsh a,mtr_axiscardfshdetails b,spl_materialattribute  c';
           str:=str+' where a.sheetid=b.sheetid and b.materialid=c.materialid ';
           if trim(Sheettext.Text)<>'' then
              str:=str+'and a.sheetid='''+Sheettext.Text+'''';
           if trim(AxisCardtext.Text)<>'' then
              str:=str+' and a.AxisCardID='''+AxisCardtext.Text+'''';
           if trim(AuditFlagtext.Text)<>'' then
              str:=str+' and a.AuditFlag='''+AuditFlagtext.Text+'''';
           if trim(WarpDate1.Text)<>'' then
              str:=str+' and a.WarpDate>=to_date('''+WarpDate1.Text+''',''yyyy-mm-dd'')';
           if trim(WarpDate2.Text)<>'' then
              str:=str+' and a.WarpDate<=to_date('''+WarpDate2.Text+''',''yyyy-mm-dd'')';
           if trim(Materialtext.Text)<>'' then
           begin
              str:=str+' and c.materialdescription like ''%'+Materialtext.Text+'%''';
              str:=str+' or c.materialid like ''%'+Materialtext.Text+'%''';
           end;
           str:=str+' ) k,Scd_OutPFactoryInfo  d  where k.adeviceid=d.outpfactoryid(+)';          datamodule1.AxisCardFShquery.Close;
              datamodule1.AxisCardFShquery.SQL.Clear;
              datamodule1.AxisCardFShquery.SQL.Add(str);
              datamodule1.AxisCardFShquery.Open ;
              datamodule1.AxisCardFShquery.Refresh;
      AxisCardFShSource.DataSet:=datamodule1.AxisCardFShquery;
      AxisCardFShSource.Enabled:=true;
      DBGridEh2.DataSource:=AxisCardFShSource;
      DBGridEh2.Refresh ;
    我把SQL语句也贴出来  在AxisCardFShSource.DataSet:=datamodule1.AxisCardFShquery;报错,错误提示就是上面的
      

  2.   

    Showmessage(str);拷贝到数据库里面执行一下看看什么问题
      

  3.   

    你看看AxisCardFShSource 是对应哪个dbgrid的,是不是dbgrid中的列值设置的不对
      

  4.   

    refresh  出現這種錯誤,通常是由於主鍵沒有。
      

  5.   

    呵呵,又是你啊,但问题是主键是有的,我原来查的也是这4张表,只是改了SQL语句的查询方法就出现了这个问题
      

  6.   

    我看了,Oracle里每个表都有主键,都有关键字,而且公司有这套系统4年了,改数据库不现实,主键是有的
      

  7.   


           datamodule1.AxisCardFShquery.Close; 
              datamodule1.AxisCardFShquery.SQL.Clear; 
              datamodule1.AxisCardFShquery.SQL.Add(str); 
              datamodule1.AxisCardFShquery.Open ; 
             // datamodule1.AxisCardFShquery.Refresh;    把這句干掉
      

  8.   


    关于delphi窗体位置赋值问题 你也帮我解决过了,忘记了?你像贵人,贵人多忘事嘛
    不是什么高人,我学java的,经理要我用delphi编写系统给公司的生产流程用,正郁闷着呢
      

  9.   

    关于delphi窗体位置赋值问题 ,你帮我解答的,忘记了?你真是贵人啊,贵人多忘事嘛~~
    我不是什么高人,原来做java的,现在经理要我为公司生产流程搞的delphi系统出来,郁闷着呢
      

  10.   

    能看到最新数据啊  ...刷新:      datamodule1.AxisCardFShquery.Close; //断开 
              datamodule1.AxisCardFShquery.Open ; //打开
      

  11.   


    我是搞DELPHI的,結果最近在搞JAVA,哎,有空交流。:)
      

  12.   

    DBGridEh2.Refresh ;
    屏掉试试,不要刷新记录集