是这样的,我的程序打开的时候,DBGrid里的第一条记录的计算字段数据无法显示,双击DBGrid的滚动条后数据就能正常显示了。数据源用的是Sqlserver2000里的Northwind
我用了两个ADOQuery,第一个用来查询products表里的所有记录,加了个计算字段CategoryName用来显示Categories表里CategoryName;
第二个ADOQuery的SQL语句为select CategoryName from Categories where CategoryID=:CategoryID
计算字段的代码:
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
  try
    ADOQuery2.Parameters.ParamByName('CategoryID').Value :=
      DataSet.FieldByName('CategoryId').Value;
    ADOQuery2.Active := true;
    DataSet.FieldByName('CategoryName').Value :=
      ADOQuery2.FieldByName('CategoryName').Value
  finally
    ADOQuery2.Active := false;
  end;
end;百思不得其解,还请各位指教!!

解决方案 »

  1.   

    应该不是双击滚动条的问题,而是需要你点击dbgrid才执行事件
      

  2.   

    我试过好多次了,点击在DBGrid的其它地方数据也不显示的,一定要双击DBGrid的滚动条,第一条计算字段的数据才显示的。
      

  3.   

    哈哈,是我自己搞错了
    我拷了另外程序里的一个ADODataSet,原来的CategoryName的FieldType用的是Lookup,改为Calculated搞定。
    不过还是不清楚为什么会这样,有没有人能解释一下吗?