begin 
 dm.DataModule1.Q_S_hmxx.Close;
  dm.DataModule1.Q_S_hmxx.SQL.Clear;
  dm.DataModule1.Q_S_hmxx.SQL.Add('select count(*) as [hzgs] from hmxx where hz = ''13''');
  //iiii:= 'select  count(*) as [hzgs] from hmxx where hz = ''13''';
  dm.DataModule1.Q_S_hmxx.Open;  label1.Height:= dm.DataModule1.Q_S_hmxx.FieldValues['hzgs'].AsInteger;
end用的ADO连接,其他都没有什么问题,现在问题是运行这个,到open后就提示field  'id' not found ,ID是access 自动增加的一个字段。如果open,改成exeC的话,就不返回结果了。
我4过无论这里add()什么都不行。
前面其他的都是用的 ExecSQL,前面只是insert 之类的。

解决方案 »

  1.   

    >>提示“field 'id' not found ”就是你的SQL语句中"select count(*) as [hzgs] from hmxx ..." 
    hmxx表没有ID这个字段;>>如果open,改成exeC的话,就不返回结果了。select语句,用open来执行,并返回数据集 
    insert,update,delete这个没有返回数据集的SQL语句,用ExecSql来执行
    看你上面的代码,其实只有
    >>label1.Height:= dm.DataModule1.Q_S_hmxx.FieldValues['hzgs'].AsInteger;应该也是使用hzgs这个字段而且呀,没有使用ID呀,这一句改成这样试试
    label1.Height:= dm.DataModule1.Q_S_hmxx.FieldByName('hzgs').AsInteger;
      

  2.   

    另外,你的hmxx这个表的数据结构是怎么样的?hz是什么类型字段?
      

  3.   

    所有字段都是 TWideStringField;
    id: TAutoIncField;
    hz: TWideStringField;
      

  4.   

    一句话,现在就ADO几个控件摆好,然后CXGrid摆好,显示数据了。然后只要是运行Select ,OPen,就提示ID没有。
      

  5.   

    双击一下AdoQuery看看,是不是里面已经写好了字段?
      

  6.   

    删掉以后运行 显示invalid variant operation....
      

  7.   

    OK了,改成FieldByName了就好乐。
    不过有个问题,第一个Form1里面有CXgrid,点击按钮创建乐Form2,Form2里面这么查询后,Form1里面的数据都空乐,怎么弄阿。
      

  8.   

    可能是因为你Form2,Form1都是用同一个ADOQuery,Form2,对ADOQuery.CLose,或者执行别的操作后,Form1自然就没有了,