如果先点击‘客户等级’统计那么程序可以执行,但是再点击‘客户类型’统计时提示: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'试一下;
你可以这样试一下:
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啊??
是adoquery还是serial啊??
#5
加上
series1.Clear;
series2.Clear;
之后还是不行。
series1.Clear;
series2.Clear;
之后还是不行。
#6
不是说series.clear
是说删掉它们,再创建。
是说删掉它们,再创建。
#7
if SelectImageID=0 的时候series2=true,
if SelectImageID=1 的时候series2应该是先false
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
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打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了
可能是你的某些adoquery打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了
#20
#1
从程序上看没有什么问题,
你可以这样试一下:
1、单步跟踪一下,看是否sql有问题
2、用这样dm1.ADOQuery1.SQL.Text :='select area as 客户区域,count(area) as 统计数量 from clientdata group by area'试一下;
你可以这样试一下:
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啊??
是adoquery还是serial啊??
#5
加上
series1.Clear;
series2.Clear;
之后还是不行。
series1.Clear;
series2.Clear;
之后还是不行。
#6
不是说series.clear
是说删掉它们,再创建。
是说删掉它们,再创建。
#7
if SelectImageID=0 的时候series2=true,
if SelectImageID=1 的时候series2应该是先false
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
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打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了
可能是你的某些adoquery打开后就没关闭释放导致的。
在关闭窗口时候顺便释放关闭数据集就应该没什么问题了