有一个数据表如下:
姓名 开始日期, 结束日期, 工资
小陈 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/本月天数)
姓名 开始日期, 结束日期, 工资
小陈 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/本月天数)
解决方案 »
- delphi tdatetimepicker
- .dll如何注册?
- 为什么在ADOQuery里面用update有时能修改有时没有效果呢?
- delphi通过odbc连接mysql问题!
- 谁知道金山词霸的界面是怎么样做出来的?请教请教!
- 请教:分离汉字和E文,数字。
- 如何让显示到DBGRID里的数四舍五入只保留两位小数?
- 查詢問題?
- sql问题求教??谢谢!
- 救命啊!我的电脑启动不了了!kmode_exception_not_handled!我一定加到我能加的最大分数!
- 在VC中调用Delphi制作的ActiveForm OCX时,其中的OnDestroy事件不会触发?谢谢
- 如果在应用服务器中加入DBGrids,那么客户端运行时,该服务器就不能正常启动,为何?
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;
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;