请大家 帮我看下.以下一段程序 哪有问题 ? 运行时 报 Abstract Error错误.~`谢谢.单步到 " for i:=0 to userList.Count - 1 do "这行报错的
procedure TFrameUserStat.stat;
var
startDate : string;
EndDate : string;
i : integer;
userList : TStrings;
begin if DTStart.Date > DTEnd.Date then
begin
showmessage('开始日期不能大于结束日期!');
DTStart.SetFocus ;
exit;
end; startDate := DTStart.Text + ' 00:00:00';
EndDate := DTEnd.Text + ' 23:59:59';
try
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT USER_ID,USER_NAME from USERS');
ADOQuery.Open;
userList := TStrings.Create;
while not ADOQuery.Eof do
begin
userList.Add(format('%s,%s',[ADOQuery.FieldByName('USER_ID').AsString,ADOQuery.FieldByName('USER_NAME').AsString]));
ADOQuery.Next;
end; Series.clear;
for i:=0 to userList.Count - 1 do
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select count(*) as CO from QUEUE_LOG where (QUEUE_TIME>=:P1 and QUEUE_TIME<=:P2) and USER_ID=:P3 and not USER_ID is null');
ADOQuery.Parameters.ParamByName('P1').Value := startDate;
ADOQuery.Parameters.ParamByName('P2').Value := EndDate;
ADOQuery.Parameters.ParamByName('P3').Value := midstr(userList.Strings[i],1,pos(',',userList.Strings[i]) - 1);
ADOQuery.Open;
Series.Add(ADOQuery.FieldByName('CO').AsInteger ,midstr(userList.Strings[i],pos(',',userList.Strings[i])+1,length(userList.Strings[i])) );
end;
chart.LeftAxis.Title.Caption := '业务量(次)';
chart.BottomAxis.Title.Caption := '人员';
chart.Title.Text.Clear;
chart.Title.Text.Add(Format('人员业务量统计表(统计日期%s到%s)',[startDate,EndDate]));
finally
ADOQuery.Close;
userList.Free;
end;
end;
userList := TStringList.Create;