1. ADOQuery1.FieldByName('字段').IsNull 2. 在BeforeUpdate事件中写 3. 没看太明白,是不是 order by 销量,名次
1. var i,j:integer; begin j:=0; for i:=0 to tempado.fields.count-1 do begin if tempado.fields.fields[i].isnull then inc(j); //j就是你要的结果 end; end; 2.既然为计算字段,又何须要更新到数据库中?不是多此一举吗? 3.问题没说清楚,除了楼主谁都会晕
3. Var i,j:Integer; //'Select *....Order by 销量' begin i:=1; j:=0; with ADOQuery do begin First; while not Eof do begin if ADOQuery.FieldValues['销量']>j then begin j:=ADOQuery.FieldValues['销量']; i:=i+1; end; ADOQuery.FieldValues['名次']:=i Next; end; end; end;
1. ADOQuery1.FieldByName('字段').IsNull
2. 在BeforeUpdate事件中写
3. 没看太明白,是不是 order by 销量,名次
var
i,j:integer;
begin
j:=0;
for i:=0 to tempado.fields.count-1 do
begin
if tempado.fields.fields[i].isnull then
inc(j); //j就是你要的结果
end;
end;
2.既然为计算字段,又何须要更新到数据库中?不是多此一举吗?
3.问题没说清楚,除了楼主谁都会晕
2.计算字段里赋值过去么
OnCalcFields事件中计算出A,直接在后面跟上B:=A不就行了?
3.没看明白``
Var
i,j:Integer;
//'Select *....Order by 销量'
begin
i:=1;
j:=0;
with ADOQuery do
begin
First;
while not Eof do
begin
if ADOQuery.FieldValues['销量']>j then
begin
j:=ADOQuery.FieldValues['销量'];
i:=i+1;
end;
ADOQuery.FieldValues['名次']:=i
Next;
end;
end;
end;
要得到这样的结果:销量 名次
100 1
45 4
68 3
25 5
86 2
25 5
68 3
5 6
谢谢你们的帮助!!
我详细点说明一下,这样的一个表:ID 部门1 部门2 部门3 部门4 部门5 总销量 平均销量 名次
1 86 68 94 75 311 77.8 5
2 100 88 99 105 89 481 96.2 3
3 89 90 65 99 343 85.8 4
4 68 56 98 89 311 77.8 5
5 150 99 150 254 55 708 141.6 2
6 258 56 269 125 708 177 1
7 88 64 58 210 70 6
1.其中总销量、平均销量都是计算字段,平均销量是总销量÷参加销售的部门数(这个部门数不固定);
2.对总销量字段进行排序,有相同名次时,后一名接前一名的名次排列;