adotable1.Last;
  i:=adotable1.RecordCount;
  if i=0 then
    begin
      showmessage('表内无记录,不能统计');
      exit;
    end
  else
    begin
      for j:=0 to i do
        begin
          if adotable1.fieldvalues['xinbie']='男' then
            begin
              manvar:=(date()-adotable1.fieldvalues['chushengriqi'])/365;
              man:=trunc(manvar);
                case man of
                  20..29:count1:=count1+1;
                  30..39:count2:=count2+1;
                  40..49:count3:=count3+1;
                  50..54:count4:=count4+1;
                  55..60:count5:=count5+1;
            end;
          if adotable1.fieldvalues['xinbie']='女' then
            begin
              femalevar:=(date()-adotable1.fieldvalues['chushengriqi'])/365;
              female:=trunc(femalevar);
                case female of
                  20..29:count6:=count6+1;
                  30..39:count7:=count7+1;
                  40..49:count8:=count8+1;
                  50..54:count9:=count9+1;
                  55..60:count10:=count10+1;
            end;

解决方案 »

  1.   

    修改如下:begin
      adotable1.Last;
      i := adotable1.RecordCount;
      if i = 0 then
      begin
        showmessage('表????,不能??');
        exit;
      end;
      adotable1.First;
      for j := 1 to i do
      begin
        if adotable1.fieldvalues['xinbie'] = '男' then
        begin
          manvar := (date() - adotable1.fieldvalues['chushengriqi']) / 365;
          man := trunc(manvar);
          case man of
            20..29: count1 := count1 + 1;
            30..39: count2 := count2 + 1;
            40..49: count3 := count3 + 1;
            50..54: count4 := count4 + 1;
            55..60: count5 := count5 + 1;
          end;
          if adotable1.fieldvalues['xinbie'] = '女' then
          begin
            femalevar := (date() - adotable1.fieldvalues['chushengriqi']) / 365;
            female := trunc(femalevar);
            case female of
              20..29: count6 := count6 + 1;
              30..39: count7 := count7 + 1;
              40..49: count8 := count8 + 1;
              50..54: count9 := count9 + 1;
              55..60: count10 := count10 + 1;
            end;
          end;
        end;
        Adotable1.next;
      end;
    end;
      

  2.   

    aiirii的方法我试过了,还是不行。
      

  3.   

    dickeybird888:
      为何要用窗体的全局变量?我只在点BUTTON1时进行统计,应该没问题吧?
      

  4.   

    我把我的代码贴出来:
    procedure TForm10.Button1Click(Sender: TObject);
    var
      i:integer;
      j:integer;
      count1:integer;
      count2:integer;
      count3:integer;
      count4:integer;
      count5:integer;
      count6:integer;
      count7:integer;
      count8:integer;
      count9:integer;
      count10:integer;
      man:integer;
      female:integer;
      manvar:double;
      femalevar:double;
    begin
      count1:=0;
      count2:=0;
      count3:=0;
      count4:=0;
      count5:=0;
      count6:=0;
      count7:=0;
      count8:=0;
      count9:=0;
      count10:=0;
      adotable1.Active:=true;
      adotable1.Last;
      i:=adotable1.RecordCount;
      adotable1.first;
      if i=0 then
        begin
          showmessage('表内无记录,不能统计');
          exit;
        end
      else
        begin
          for j:=1 to i do
            begin
              if adotable1.fieldvalues['xinbie']='男' then
                begin
                  manvar:=(date()-adotable1.fieldvalues['chushengriqi'])/365;
                  man:=trunc(manvar);
                    case man of
                      20..29:count1:=count1+1;
                      30..39:count2:=count2+1;
                      40..49:count3:=count3+1;
                      50..54:count4:=count4+1;
                      55..60:count5:=count5+1;
                    end;
                end;
              if adotable1.fieldvalues['xinbie']='女' then
                begin
                  femalevar:=(date()-adotable1.fieldvalues['chushengriqi'])/365;
                  female:=trunc(femalevar);
                    case female of
                      20..29:count6:=count6+1;
                      30..39:count7:=count7+1;
                      40..49:count8:=count8+1;
                      50..54:count9:=count9+1;
                      55..60:count10:=count10+1;
                    end;
                end;
              adotable1.Next;
            end;
        edit1.Text:=inttostr(count1);
        edit2.Text:=inttostr(count2);
        edit3.Text:=inttostr(count3);
        edit4.Text:=inttostr(count4);
        edit5.Text:=inttostr(count5);
        edit6.Text:=inttostr(count6);
        edit7.Text:=inttostr(count7);
        edit8.Text:=inttostr(count8);
        edit9.Text:=inttostr(count9);
        edit10.Text:=inttostr(count10);
        end;
    end;
      

  5.   

    呵,请问你是什么数据库啊!
    有些数据库这样是不行的,如ORACLE一样,有一个CHAR型的数据类型,如果没有填满的话,它是会以空格代替的,建议在取出来的时候,用TRIM来去掉它前后的控制符
    最好调试跟踪下!
      

  6.   

    可以不用窗体的全局变量,那样的话反而不好控制了,
    还有你的出生日期字段数据形式是怎么样的!看到你用:=(date()-adotable1.fieldvalues['chushengriqi'])/365,我想这句话还是有问题的吧!
      

  7.   

    可能是出生日期字段数据形式的问题,在ACCESS中该字段是文本格式,用DATETIMEPICKER填入,取出时也未作转换
      

  8.   

    你是想用当前的日期去减它的出生年月吧!
    像你这样减出来的是什么数据啊!看到你的程序,还少了两点,如果年龄少于二十或年龄大于60就没有了,你补上再调调,有一个函数是计算两个日期之间的相差天数的,我一时忘了,我找找吧!
    你按我的方法加上去,调调,看问题出在哪!
    最好先确定返回的数据个数不为0噢 !!!!GOOD LUCKING!!!
    我现在去找找那个函数!!!