请大家 帮我看下.以下一段程序 哪有问题 ? 运行时 报 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;