品号  1月   2月....  12月 标记
A     5     0       5   YES
B     5     4       5   NO
C     5     0       4   NO 就是如何得到标记?依据是1-12月栏位中>0的字段,不全一样就NO,全一样就YES

解决方案 »

  1.   

    在数据集里加一个计算字段,对应的成员名为ADOQuery1Flag.则在ADOQuery1的OnCalcFields写如下代码:procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    var
      i: Integer;
      S: String;
      OldV, CurV: Double;
    begin
      S := 'YES';
      OldV := -1;
      for i := 1 to 12 do
      begin
        CurV := DataSet.FieldByName(IntToStr(i) + '月').AsFloat;
        if CurV > 0 then
        begin
          if OldV < 0 then
            OldV := CurV;
          if Abs(OldV - CurV) > 0.000001 then//不相等
          begin
            S := 'NO';
            Break;
          end
        end;
      end;  if OldV < 0 then//没有一个大于0的,也是NO
        S := 'NO';
      ADOQuery1Flag.AsString := S;
    end;