...'找不到其中某个字段’... 確認事項: 1.檢查連接的adoquery的dataset之SQL是否有changed; 2.當再次生成圖表時,請將Series.clear下; 3.類似以下代碼:procedure TRES_HR_AUDIT_F.cxButton3Click(Sender: TObject); var iLoop:Integer; begin inherited; if (Trim(cxDateEdit3.Text)='') then begin MessageDlg('操作提示:查詢的出勤日期不能為空!',mtWarning,[mbOK],0); Exit; end; if (Trim(cxDateEdit3.Text)<>'') then begin Series1.Clear; Chart1.Title.Text.Text:='出勤曲線圖'; qry_chart.Close; qry_chart.SQL.Clear; qry_chart.SQL.Add(' select rq,bmmc,count(1)as cqrs,sum(datediff(mi,''00:00:00'',convert(varchar(20),gzsj))/60.0)as sshr from RES_KQRB where rq='''+ FormatDateTime('yyyy/mm/dd',cxDateEdit3.Date)+''' and gzsj is not null group by rq,bmmc'); qry_chart.Open; qry_chart.First; for iLoop:=0 to qry_chart.RecordCount -1 do begin Series1.Add(qry_chart.FieldValues['cqrs'],VarToStr(qry_chart.FieldValues['bmmc'])); qry_chart.Next; end; end; end;
procedure TForm12.Button1Click(Sender: TObject);
begin
cxzd:=listbox1.Items[listbox1.Itemindex];
//生成图表
DBChart3.Refresh;
DBChart3.Series[0].Active:=false;
DBChart3.Series[0].DataSource := ADODataSet1;
// ShowMessage(IntToStr(ADODataSet1.RecordCount));
DBChart3.Series[0].XLabelsSource := cxzd;
DBChart3.Series[0].YValues.ValueSource := '数量'; DBChart3.Series[0].Active:=true; DBChart2.Refresh;
DBChart2.Series[0].Active:=false;
DBChart2.Series[0].DataSource := ADODataSet1;
// ShowMessage(IntToStr(ADODataSet1.RecordCount));
DBChart2.Series[0].XLabelsSource := cxzd;
DBChart2.Series[0].YValues.ValueSource := '数量';
DBChart2.Series[0].Active:=true; //DBChart3.Series[0].Free;
//DBChart2.Series[0].Free;
end;procedure TForm12.ComboBox2Change(Sender: TObject);
var i:integer;begin //try
//nstr:=trim(combobox2.Text);
//cxnr:=trim(edit1.Text); //查询信息
case combobox2.ItemIndex of
0:cxsj:='基本情况';
1:cxsj:='个人重大事';
2:cxsj:='收入';
else cxsj:='基本情况';
end;
//listbox1.Clear;
adodataset2.Active:=false;
adodataset2.CommandText:='Select * from '+cxsj;
adodataset2.Active:=true; for i:=0 to adodataset1.Fields.Count -1 do //添加字段名到listbox
listbox1.Items.Add (adodataset2.Fields[i].fieldname);
//except
//end;
end;procedure TForm12.FormShow(Sender: TObject);
var i:integer;
begin //默认情况
cxsj:='基本情况';
adodataset1.Active:=false;
adodataset1.CommandText:='Select * from '+cxsj;
adodataset1.Active:=true;
for i:=0 to adodataset1.Fields.Count -1 do
listbox1.Items.Add (adodataset1.Fields[i].fieldname);end;procedure TForm12.ListBox1Click(Sender: TObject);
begin
try
cxzd:=listbox1.Items[listbox1.Itemindex];
adodataset1.Active:=false;
adodataset1.CommandText:='select '+cxzd+',count('+cxzd+') as 数量 from '+cxsj+' group by '+cxzd;
//showmessage(adodataset1.CommandText);
adodataset1.Active:=true; except
end;
end;
確認事項:
1.檢查連接的adoquery的dataset之SQL是否有changed;
2.當再次生成圖表時,請將Series.clear下;
3.類似以下代碼:procedure TRES_HR_AUDIT_F.cxButton3Click(Sender: TObject);
var
iLoop:Integer;
begin
inherited;
if (Trim(cxDateEdit3.Text)='') then
begin
MessageDlg('操作提示:查詢的出勤日期不能為空!',mtWarning,[mbOK],0);
Exit;
end;
if (Trim(cxDateEdit3.Text)<>'') then
begin
Series1.Clear;
Chart1.Title.Text.Text:='出勤曲線圖';
qry_chart.Close;
qry_chart.SQL.Clear;
qry_chart.SQL.Add(' select rq,bmmc,count(1)as cqrs,sum(datediff(mi,''00:00:00'',convert(varchar(20),gzsj))/60.0)as sshr from RES_KQRB where rq='''+ FormatDateTime('yyyy/mm/dd',cxDateEdit3.Date)+''' and gzsj is not null group by rq,bmmc');
qry_chart.Open;
qry_chart.First;
for iLoop:=0 to qry_chart.RecordCount -1 do
begin
Series1.Add(qry_chart.FieldValues['cqrs'],VarToStr(qry_chart.FieldValues['bmmc']));
qry_chart.Next;
end;
end;
end;