环境:delphi7 adoquery dbgirdeh Access2003 
问题:
1.我想判断ACCESS内的几个字段是否为空,例如要是有5个字段不为空,则记5;有3个字段不为空,则记3;应该怎么做啊?
2.由于有一个字段是计算字段,得到数据后是在内存中,并没有真正写入数据表,如何把这个计算出来的字段更新到数据表的字段中?
3.数据库中有一个"销量"字段,有一个“名次”字段,如何对销量进行排名次(不保留字,如:123334556,而不是123336779)?

解决方案 »

  1.   


    1. ADOQuery1.FieldByName('字段').IsNull
    2. 在BeforeUpdate事件中写
    3. 没看太明白,是不是 order by 销量,名次
      

  2.   

    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.   

    1.就不重复说了
    2.计算字段里赋值过去么
      OnCalcFields事件中计算出A,直接在后面跟上B:=A不就行了?
    3.没看明白``
      

  4.   

    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;
      
      

  5.   

    不好意思,补充一下第三个问题,数据表:xltj
    要得到这样的结果:销量  名次
    100   1
    45    4
    68    3
    25    5
    86    2
    25    5
    68    3
    5     6
      

  6.   

    谢谢bdmh  hduhjh xjq2003 ljluck7687 
    谢谢你们的帮助!!
    我详细点说明一下,这样的一个表: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.对总销量字段进行排序,有相同名次时,后一名接前一名的名次排列;