清空了没有?
dm.query1.clear

解决方案 »

  1.   

    可能是我表达能力实在不强吧,呵呵
    就是说:
     dm.query1.FieldByName('id1').Visible:=false;
    的用法有什么限制?
      

  2.   

    其他窗体打开时可能用到id1字段了,由于你的字段id1在与dbgrid同窗体的话已经设置为不可见,所以就找不到了,考虑在打开其他窗体时,将他的visible设为true
      

  3.   

    to yguoping(晴天)
    清空了,就是dm.query1.FieldByName('id1').Visible:=false;
    这句会出错
    不过只是在不同的窗口的情况下(也就是说和要显示的dbgrid在同一form)
    如果在不同的form调用这一句就会出错,出错信息就是说找不到id1字段。
      

  4.   

    to fyje(冬原) 
    我试了,不行!
    我把实际环境描述一下吧:
    我有两个form,form1上面有dbgrid和添加按键,另一个是按了添加后调用的form2,可以添加用户资料,按了form2上的确定后,提交资料到数据库中,然后就form2.close的事件中添加代码:
      with form1.query1 do
      begin
       close;
       sql.clear;
       dm.query1.SQL.Add('select id1,gid as 货号,label as 品牌,gname as 品名,gcolor as 颜色,unit as 单位,retail as 零售价,svalue as 结算价 ');
       dm.query1.SQL.Add('from goods order by gid');
       information.DBGrid1.DataSource.DataSet.FieldByName('id1').Visible:=false;
       open;
      end;
    这时就会出错!但是,我再form1的show事件中,有同样的代码,就不会出错,这是为什么呢?
    对了,我用的控件全是ado的。
      

  5.   

    只要把ID1设为query1固定字段就可以了
      

  6.   

    to ghyghost(我要求delphi能理解我的心情) 
    呵呵,同感!!!来握握手
    留个qq如何,我就是想认识这样的朋友了,
    其实,问题我已经解决了,等这位朋友留了qq我就散分了