adoquery 的错误 field ' ' not found 解决后马上散分。以前遇到过这样的问题解决了。后来又忘记了。

时间:2022-07-23 21:24:41
//一个客户资料的统计图,共用一个Tadoquery:Adoquery1
如果先点击‘客户等级’统计那么程序可以执行,但是再点击‘客户类型’统计时提示:field '客户等级' not found  。
如果先点击‘客户类型’统计那么程序同样也可以执行,但是当你再点击‘客户等级’统计时提示:field '客户类型' not found  。

明明我重新统计数据时已经把原来adoquery1中的sql清楚了啊。郁闷,希望大家能帮帮小弟。谢谢了。

procedure TCustomerTotalForm.RzBitBtn1Click(Sender: TObject);
var
  SelectItemID:integer;
  SelectImageID:integer;
begin
SelectItemID:=Totaltypecombobox.ItemIndex;
SelectImageID:=Imagecombobox.ItemIndex;
if SelectItemID=0 then begin//按照客户等级统计分析
      CustomerDBchart.Title.Text.Clear;
      CustomerDBchart.Title.Text.Add('客户等级统计分析图');
      dm1.ADOQuery1.Close;
      dm1.ADOQuery1.SQL.Clear;
      dm1.ADOQuery1.SQL.Add('select ClientTier as 客户等级,count(ClientTier) as 统计数量 from clientdata group by ClientTier');
      dm1.ADOQuery1.Open;
      dm1.ChartSource.DataSet:=dm1.ADOQuery1;
      Customerdbgrid.DataSource:=dm1.ChartSource;
      if SelectImageID=0 then
        begin
          series1.Active:=false;
          series2.DataSource:=dm1.ADOQuery1;
          series2.XLabelsSource:='客户等级';
          series2.YValues.ValueSource:='统计数量';
          series2.Active:=true;
        end
      else
        begin
          series2.Active:=false;
          series1.DataSource:=dm1.ADOQuery1;
          series1.XLabelsSource:='客户等级';
          series1.YValues.ValueSource:='统计数量';
          series1.Active:=true;
        end;
    end;
if SelectItemID=1 then begin//按照客户类型统计分析
      CustomerDBchart.Title.Text.Clear;
      CustomerDBchart.Title.Text.Add('客户类型统计分析图');
      dm1.ADOQuery1.Close;
      dm1.ADOQuery1.SQL.Clear;
      dm1.ADOQuery1.SQL.Add('select ClientTypes as 客户类型,count(ClientTypes) as 统计数量 from clientdata group by ClientTypes');
      dm1.ADOQuery1.Open;
      Dm1.ChartSource.DataSet:=dm1.ADOQuery1;
      Customerdbgrid.DataSource:=dm1.ChartSource;
      if SelectImageID=0 then
        begin
          series1.Active:=false;
          series2.DataSource:=dm1.ADOQuery1;
          series2.XLabelsSource:='客户类型';
          series2.YValues.ValueSource:='统计数量';
          series2.Active:=true;
        end
      else
        begin
          series2.Active:=false;
          series1.DataSource:=dm1.ADOQuery1;
          series1.XLabelsSource:='客户类型';
          series1.YValues.ValueSource:='统计数量';
          series1.Active:=true;
        end;
    end;
if SelectItemID=2 then begin//按照客户所在区域统计分析
      CustomerDBchart.Title.Text.Clear;
      CustomerDBchart.Title.Text.Add('客户所在区域统计分析图');
      dm1.ADOQuery1.Close;
      dm1.ADOQuery1.SQL.Clear;
      dm1.ADOQuery1.SQL.Add('select area as 客户区域,count(area) as 统计数量 from clientdata group by area');
      dm1.ADOQuery1.Open;
      dm1.ChartSource.DataSet:=dm1.ADOQuery1;
      Customerdbgrid.DataSource:=dm1.ChartSource;
      if SelectImageID=0 then
        begin
          series1.Active:=false;
          series2.DataSource:=dm1.ADOQuery1;
          series2.XLabelsSource:='客户区域';
          series2.YValues.ValueSource:='统计数量';
          series2.Active:=true;
        end
      else
        begin
          series2.Active:=false;
          series1.DataSource:=dm1.ADOQuery1;
          series1.XLabelsSource:='客户区域';
          series1.YValues.ValueSource:='统计数量';
          series1.Active:=true;
        end;
    end;
end;

19 个解决方案

#1


从程序上看没有什么问题,
你可以这样试一下:
1、单步跟踪一下,看是否sql有问题
2、用这样dm1.ADOQuery1.SQL.Text :='select area as 客户区域,count(area) as 统计数量 from clientdata group by area'试一下;

#2


还是不行啊??

#3


统计之前,先清除chart的serial。

#4


你搞清楚到底哪里的错误了吗?
是adoquery还是serial啊??

#5


加上
          series1.Clear;
          series2.Clear;
之后还是不行。

#6


不是说series.clear
是说删掉它们,再创建。

#7


if SelectImageID=0 的时候series2=true,
if SelectImageID=1 的时候series2应该是先false

#8


否则在series2=true的状态下,series2.Xlabelsource重新获得值'客户类型'不太可能八3

#9


showMessage(sql.text)看看!

#10


郁闷。。。。

#11


详细的提示是:
Project MDIPP.exe raised exception class EDatabaseError with message 'ADOQuery1:Field '客户等级' not found'.Process stopped.Use or Run to continue

#12


先执行哪一个的统计都没有问题,但是执行第二的的时候就出问题了。

#13


删除索引再重查询

#14


还是没有办法啊

#15


CustomerDBchart的使用上有问题了,不是在数据上有问题

#16


哦?使用上哪里有问题啊?

#17


郁闷啊,没有一个明确的答案

#18


郁闷。。
我的也是,第一次执行没问题。。
当执行其他菜单后再执行,错误就来了,提示字段没找着..

#19


我现在解决了。。
可能是你的某些adoquery打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了

#1


从程序上看没有什么问题,
你可以这样试一下:
1、单步跟踪一下,看是否sql有问题
2、用这样dm1.ADOQuery1.SQL.Text :='select area as 客户区域,count(area) as 统计数量 from clientdata group by area'试一下;

#2


还是不行啊??

#3


统计之前,先清除chart的serial。

#4


你搞清楚到底哪里的错误了吗?
是adoquery还是serial啊??

#5


加上
          series1.Clear;
          series2.Clear;
之后还是不行。

#6


不是说series.clear
是说删掉它们,再创建。

#7


if SelectImageID=0 的时候series2=true,
if SelectImageID=1 的时候series2应该是先false

#8


否则在series2=true的状态下,series2.Xlabelsource重新获得值'客户类型'不太可能八3

#9


showMessage(sql.text)看看!

#10


郁闷。。。。

#11


详细的提示是:
Project MDIPP.exe raised exception class EDatabaseError with message 'ADOQuery1:Field '客户等级' not found'.Process stopped.Use or Run to continue

#12


先执行哪一个的统计都没有问题,但是执行第二的的时候就出问题了。

#13


删除索引再重查询

#14


还是没有办法啊

#15


CustomerDBchart的使用上有问题了,不是在数据上有问题

#16


哦?使用上哪里有问题啊?

#17


郁闷啊,没有一个明确的答案

#18


郁闷。。
我的也是,第一次执行没问题。。
当执行其他菜单后再执行,错误就来了,提示字段没找着..

#19


我现在解决了。。
可能是你的某些adoquery打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了

#20