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;
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;
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;
为何要用窗体的全局变量?我只在点BUTTON1时进行统计,应该没问题吧?
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;
有些数据库这样是不行的,如ORACLE一样,有一个CHAR型的数据类型,如果没有填满的话,它是会以空格代替的,建议在取出来的时候,用TRIM来去掉它前后的控制符
最好调试跟踪下!
还有你的出生日期字段数据形式是怎么样的!看到你用:=(date()-adotable1.fieldvalues['chushengriqi'])/365,我想这句话还是有问题的吧!
像你这样减出来的是什么数据啊!看到你的程序,还少了两点,如果年龄少于二十或年龄大于60就没有了,你补上再调调,有一个函数是计算两个日期之间的相差天数的,我一时忘了,我找找吧!
你按我的方法加上去,调调,看问题出在哪!
最好先确定返回的数据个数不为0噢 !!!!GOOD LUCKING!!!
我现在去找找那个函数!!!