有一个数据表如下:
姓名   开始日期,   结束日期,   工资
小陈   2004-08-28   2004-11-27   1500
小陈   2004-11-28   2005-05-31   2000
小陈   2005-06-01   2008-01-01   3000怎么计算小陈的任何一个月的工资?
(例如2004-11月份,前27天每天工资1500/本月天数,后3天为2000/本月天数)

解决方案 »

  1.   

    var year,month,day:word;
        
    begin
    with adoquery do
    begin
    close;
    sql.add('select * from [table]');
    open;
    end;
    decodeDate(AdoQuery.fieldvalues['结束日期'],year,month,day);
    if day>27 then
     salary:=AdoQuery.fieldvalues['工资']/(DaysInAMonth(year,month)-27)
    else 
     salary:=AdoQuery.fieldvalues['工资']/DaysInAMonth(year,month);
    end;
      

  2.   

    错了..
    var year,month,day:word;
        
    begin
    with adoquery do
    begin
    close;
    sql.add('select * from [table]');
    sql.add('where 结束日期=:EndDate');
    parameters.parambyname('EndDate').value:=datetimepicker;//选择需要计算的月份;
    open;
    end;
    decodeDate(AdoQuery.fieldvalues['结束日期'],year,month,day);
    if day>27 then
    //如果大于27,得到下个月的工资
    begin
    with Tempquery do
    begin
    close;
    sql.add('select * from [table]');
    sql.add('where 结束日期=:EndDate');
    parameters.parambyname('EndDate').value:=EncodeDate(year,month+1,day);
    open;
    salary:=AdoQuery.fieldvalues['工资']/DaysInAMonth(year,month);
    end
    else 
     salary:=AdoQuery.fieldvalues['工资']/DaysInAMonth(year,month);
    end;