procedure TForm8.FormShow(Sender: TObject);
begin
Form8.ADOQuery1.close;
Form8.ADOQuery1.SQL.Clear;
Form8.ADOQuery1.SQL.add('select 提醒日期,提醒内容 from reminder');
Form8.ADOQuery1.Prepared;
Form8.ADOQuery1.Open;
while not Form8.ADOQuery1.Eof do
begin
      if ADOQuery1.Fields[2].AsDateTime < Date+10 then
    begin
      showmessage(trim(ADOQuery1.Fields[3].AsString));//显示该行提醒内容
    end;
      Form8.ADOQuery1.Next;
end;
end;求解!

解决方案 »

  1.   

    Fields[2]应该是第3个字段(0..2),显然select中只有2个字段
      

  2.   

    查询中只有2个字段,Fields是从0开始的,所以"提醒日期"对应的就是Fields[0],"提醒内容"就是Fields[1]改成:
    ADOQuery1.Fields[0].AsDateTime
      

  3.   

    这样的情况用下列样式语句比较好:
    ADOQuery1.FieldByName('提醒日期').AsDateTime 
      

  4.   

    With ADOQuery1 do
      begin
          close;
         SQL.Clear;
          SQL.Add('select 提醒日期,提醒内容 from reminder');//您这里只select 两列
         Open;
        while not Eof do
        begin
          if Fields[0].AsDateTime>Date-5 then
          begin
             showmessage(trim(Fields[1].AsString));//显示该行提醒内容
              //这行改变此表格此行的颜色
          end;
           Next;
        end;
      end;